1.代码书写规则:
关键字:必须小写
标识符:
由26个英文字母大小写,数字0~9,符号_ $组成
(符号一般用于公司统一规范名称)
不能以数字开头
不能使用关键字(用关键字名字的大写形式也不建议)
2.代码书写规范:
类名首字母一般大写,后面每个单词首字母也大写(驼峰命名法)
3.注释
单行注释 //
多行注释 /* */
多行注释不能嵌套多行注释
注释的另一个作用:调试缩小代码错误范围
注释存在源文件中,但在编译的字节码class文件中注释不会被编译进去。
java特有注释:
文档注释
/**
文档注释
*/
注释应用:
开发 或者 面试上机:要写注释
学习当中:第一步写多行注释,需求,思路,步骤:
/*
需求:练习一个hello world程序。
思路(通用的,不分语言):
1.定义一个类。因为java程序都定义在类中,类的形式其实就是一个字节码文件的最终体现
2. 定义一个主函数。为了让类可以独立运行
3. 输出语句
步骤(根据具体语言,用不同的表现形式写出来):
1.用class关键字来完成类的定义,起一个阅读性强的类名
2.主函数:public static void main(String[] agrs) 这是固定格式,JVM认识
3.使用输出语句:System.out.println("Hello Java!");
代码仅仅是思想的一种体现形式
*/
4.常量,变量:
(1)基本常量(6种):
1.整数常量(4个字节)
2.小数常量
3.布尔(boolean)常量:true false
4.字符常量:将一个数字字母或者符号 用单引号 ' ' 标识
5.字符串常量:将一个或多个字符用双引号 " " 标识
6.null常量:只有一个数值:null
"" 空字符串
null: 空值(串都给扔了,啥也没有)
整数:表现形式
二进制(Bin,Binary system):0,1 满2进1
八进制(Oct,Octal number system):0~7 满8进1,用0开头
十进制(Dec,Decimal system):0~9 满10进1
十六进制(Hex,Hexadecimal ):0~9,A~F 满16进1,用0x开头
数据最小单元:byte 字节(一个字节等于8个bit位(二进制位))
1byte = 8bit
计算机中:1k = 1024
生活中(U盘等):1k = 1000
0101 1101
三个一组 转换成对应十进制数,形成的数为八进制数
四个一组 转换成对应十进制数,形成的数为十六进制数
负数的二进制形式:(二进制最高位是1)
是这个数的正数的二进制取反,加1。
(2)变量:
内存中的一个存储区域
该区域有自己的名字(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
作用范围:
一对 { } 之内
格式:
数据类型 变量名 = 初始化值;
定义变量时必须进行初始化。
细分:
数据类型:
基本数据类型:
数值型:
整数类型(byte(1),short(2),int(4)默认,long(8))
浮点类型(单精度float(4),双精度double(8)默认)
字符型:char(2),可以放中文,一个中文占两个字节
布尔型:boolean
引用数据类型:
类:class
数组:[]
接口:interface
3.强制类型转换中 数据溢出计算:
正向溢出:byte b = (byte)128; b=128 - 2^8 = -128
反向溢出:short s = (short)-32770; s=2^16 -32770= 32766
有一种情况不需要强转,会默认进行无条件强转:
当操作数都是默认类型时,而且单个运算数值都没有超过类型范围,但是运算后的结果超出类型范围时,编译检查不会报错,结果会自动强转,造成精度丢失,如:
int x = 0, y = 2147483647; //y = Integer.MAX_VALUE;
x = y + 1; // x = - 2147483648
4.类型转换:
不同类型的数据是不能一起运算的。
不过 数值型数据 存在特殊情况,通过类型转换来运算:
自动类型转换(隐式):以占用内存大的类型为主,自动提升。
特别的:
如果操作数有long,结果就是long;
如果操作数有float,结果就是float;
如果操作数有double,结果就是double。
int x = 3;
byte b =5;
x = x + b; //正确
b = b + 4; //左边为byte类型,右边为int类型,大内寸转小内存,可能会丢失精度,此时需要强制类型转换。
强制类型转换(显示):慎用,可能丢失精度。
b = (byte)(b + 4)
5.字符类型运算:
字符型(2个字节)和 int型(4个字节)运算: 字符型数据自动提升为 int型(对应的ASCII编码),然后进行运算。
中文编码表 GB2312 国标码 6000多汉字
GBK 国标扩展码 (目前通用) 2万多汉字
GBK18030
常用ASCII码:
A 65
a 97
0 48
JDK内置unicode国际标准码表,包括ASCII等。
面试题:
byte b = 4; //编译器自动判断int型4是否在byte范围内,如果在则进行一次默认强转。
byte b1 = 3;
byte b2 = 7;
b = b1 + b2; //编译出现丢失精度错误,b1和b2是非默认型变量,不能进行检查判断后面的byte型值和是否在byte范围内,以及后续的默认强转赋值操作。
//另一种情况不会报错,即当b1,b2是默认型变量(int,double...):
int b = 4;
int b1 = 3;
int b2 = 7;
b = b1 + b2; //和如果超出了int范围,默认强转,不报错。