Java基础笔记4(变量常量、命名规范、运算符)
变量
作用域
- 类变量(静态变量)
- 实例变量(对象变量)
- 局部变量
1 2 3 4 5 6 7 8
| public class Test{ static int a = 0; int b = 0; public void method(){ int c = 0; } }
|
类变量和实例变量的区别
类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果。
实例变量属对象私有,某一个对象将其值改变,不影响其他对象。
常量
初始化后不能改变值
常量一般用大写字符
命名规范
- 变量、方法、类名:见名知意
- 类成员变量:小驼峰(lastName)
- 局部变量:小驼峰
- 常量:大写(MAX_VALUE)
- 类名:大驼峰
- 方法名:小驼峰
运算符
- 算术运算符:+,-,*,/,%,++,—
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof(测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。)
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>
条件运算符:? :
扩展赋值运算符:+=,-=,*=,/=
1 2 3 4 5 6 7 8 9 10
| long a = 2333333333333L; int b = 2333; short c = 233; byte d = 23;
System.out.println(a+b+c+d); System.out.println(b+c+d); System.out.println(c+d);
|
1 2 3
| byte b = 3; b = b + 2; b=(byte)(b+2);
|
1 2 3
| short s = 4; s = s + 5; s += 5;
|
一元运算符 自增自减
1 2 3 4 5 6 7
| int a = 0; int b = a++; int c = ++a;
System.out.println(a); System.out.println(b); System.out.println(c);
|
幂运算
逻辑运算符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
boolean a = true; boolean b = false;
System.out.println(!a); System.out.println(a&&b); System.out.println(a||b); System.out.println(a&b); System.out.println(a|b);
System.out.println(0b1010&0b0101); System.out.println(0b1010|0b0101);
|
位运算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| System.out.println(0b1010&0b1100);
System.out.println(0b1010|0b1100);
System.out.println(0b1010^0b1100);
System.out.println(~0b1010);
System.out.println(3<<2);
System.out.println(9>>2);
|
关于位运算的问题
问题:为什么java中按位取反~5结果为-6。即 System.out.println(~5);的输出结果为-6
1 2 3 4 5 6 7
| 在计算机中,负数以其绝对值的补码形式表达。 1个字节,只能表示256个数。 因为有符号所以我们就把它表示为:-128~+127。用最高位表示符号位(0表示正数,1表示负数),剩下的7位用来储存数的绝对值的话,能表示2^7个数的绝对值,因为分正负两种情况,2^7*2一共还是256个数。 0在计算机中储存为00000000 00000001到01111111依次表示1到127。那么这些数对应的二进制码就是这些数的原码。 10000001到11111111依次表示-127到-1。10000000表示最小的负数-128。 计算机储存有符号的整数时,是用该整数的补码进行储存的,0的原码、补码都是0,正数的原码、补码可以特殊理解为相同,负数的补码是它的反码加1。
|
- 5是int类型,占4字节,32位
- 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
00000000 00000000 00000000 00000101 是 5的原码。
- 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。11111111 11111111 11111111 11111010 是5的反码
- 补码:反码加1称为补码。
11111111 11111111 11111111 11111011 是5的补码
- -6是int类型,占4字节,32位。因为负数以其绝对值的补码形式表达,所以-6在计算机中以6的补码表示
- 6的原码:00000000 00000000 00000000 00000110
- 6的反码:11111111 11111111 11111111 11111001
- 6的补码:11111111 11111111 11111111 11111010
因为0的原码、补码都是0;正数的原码、补码可以特殊理解为相同;负数的补码是它的反码加1。
5在计算机中用原码表示:00000000 00000000 00000000 00000101
按位取反~5后:11111111 11111111 11111111 11111010,符号位为1,是负数,且该值与6的补码相同,负数以其绝对值的补码形式表达,因此计算机输出-6
字符串连接
1 2 3 4 5 6 7 8
| int a = 10; int b = 20; System.out.println(a+b); System.out.println(""+a+b); System.out.println(a+b+""); System.out.println(a+b+""+a);
|
三元运算符
1 2 3 4 5 6 7
| x?y:z
if(X){ y; }else{ z; }
|