标识符命名规则:
Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成
标识符应以字母和下划线(_),美元符号($)开头
Java标识符对字母大小写敏感
长度没有限制
标识符不能使用关键字
遵循 驼峰式命名; 尽量 见名知义;
变量:
Java变量是程序中最基本的存储单元,是可以变化的数据量
作用域判断:变量只在声明它的代码块中以及该块内所包含的任何块中有效。(在最近的括号内有效)
变量的本质: 每个变量都是内存中的一块区域,通过变量名可以访问该区域。
声明变量: 申请内存空间
赋值:将值写入内存空间
调用变量:通过名字调用值
数据类型:4类8种
默认值 0 0 0 0L 0.0F 0.0 ‘\u0000’ false null
基本数据类型的转换
boolean 类型不能转换为其他数据类型 其他数据类型也不能转换为boolean类型
整型,字符型,浮点型转换原则: 容量小的类型自动转换为容量大的数据类型.
byte,short,char => int => long => float => double
byte,short,char 之间不会互相转换,三者在计算时先转换为int.
类型 | 含义 | 取值范围 |
byte | 8位整数(1字节) | -128 到 127 -2^7到(2^7) - 1 |
short | 16位整数(2字节) | -32768 到 32767 -2^15到(2^15) - 1 |
int | 32位整数(4字节) | -2^31到2^31-1 |
long | 64位整数(8字节) | -2^63到2^63-1 |
float | 单精度浮点数 | 32位单精度 |
double | 双精度浮点数 | 64位双精度 |
整数常量有三种表示方式 :
十进制整数,如:123,3.14,0.12
二进制(以0B开始---JDK1.7)
八进制(以0开始)
十六进制(以0X开始)
科学计数法形式,只有浮点数才有科学计数法,如:3.14e8, 2.1e4, 5.2e-3
浮点数默认double,转float 1.2F
一般转型在后面标注 如: 转long 1000L
例如:int i = 123_456_789;
运行结果:123456789
必须在jre7.0中运行
ASCII码表
运算符(operator)
一般用括号强调自己想先运行的计算
^: 一个数x异或运算得到y,y进行异或运算得到x 进行加密和解密操作
a = a ^ b;
b = a ^ b;
a = a ^ b;
通过异或实现不借助第三个变量的两个变量互换
>> :将一个数的各二进制位全部右移若干位,移到右端的低位被舍弃,最高位则移入原来高位的值
例如 :a = 00110111,则 a>>2 = 00001101 b = 11010011,则 b>>2 = 11110100
0000 0000 0011 0100
右移一位相当于除2取商
例如:128 >> 1 returns 128/ 2 = 64 256 >> 4 returns 256/ 16 = 16
-256 >> 4 returns -256/ 16 = -16
>>> :一个数的各二进制位无符号右移若干位,与运算符>>相同,移出的低位被舍弃,但不同的是最高位都补0。
如: a = 00110111, 则 a>>>2 = 00001101 b = 11010011, 则 b>>>2 = 00110100
<< :用来将一个数的各二进位全部左移若干位。高位左移后溢出 舍弃,低位补0。
例如: a = 00001111,则a<<2 = 00111100。
在不产生溢出的情况下,左移一位相当于乘2
128 << 1 returns 128 * 2 = 256 16 << 2 returns 16 * 2*2 = 64
注意:&、|和&&、||之间的区别
&&具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式
例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。
If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,
我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,
例如,0x31 & 0x0f的结果为0x01
10 || 6 = 14 1010 || 0110 = 1110
10 ^ 6 = 12 1010 ^ 0110 = 1100
循环:
if、else、else if后的执行体只有一行语句,最好带上花括号,可能导致逻辑错误
swich 使用break语句,防止case穿透 default可以省略,但不推荐省略
for增强写法
打印 1 2 3 4 5
continue : 不执行continue后面的语句,直接进入下次循环。
break : 跳出本层循环
do while 循环语句里,即使test_expression循环条件的值开始是假,do while循环也会执行循环体。因此,do while循环的循环体至少执行一次。
退出双层循环
lable:for(元素变量x: 遍历对象obj){
for(元素变量x: 遍历对象obj){
引用了x的Java语句;
if(条件表达式){
break lable;
}
}
}
a: for (int[] is : myScores) {
for (int i : is) {
System.out.println(i);
if (i == 45) {
break a;
}
} }