第一节 常量的问题
第二节到第八节 进制转换和反码 补码
0b11 011 11 0x11 分别是二进制 八进制 十进制 十六进制
正数的反码和原码相同 补码和原码相同 负数的反码是原码诸位取反(符号位例外) 补码是反码加一
第九节 变量
第十节 数据类型
基本数据类型
* 引用数据类型
* 面向对象部分讲解
* C:基本数据类型分类(4类8种)
* 整数型
* byte 占一个字节 -128到127
* short 占两个字 -2^15~2^15-1
* int 占四个字节 -2^31~2^31-1
* long 占八个字节 -2^63~2^63-1
* 浮点型
* float 占四个字节 -3.403E38~3.403E38 单精度
* double 占八个字节-1.798E308~1.798E308 双精度
* 字符型
* char 占两个字节 0~65535
* 布尔型
* boolean
* boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
class Demo3_DataTypeConversion { //Conversion转换
public static void main(String[] args) {
//数据类型转换之隐式转换
/*int x = 3;
byte b = 4;
x = x + b;
System.out.println(x);*/
//数据类型转换之强制转换
/*int x = 3;
byte b = 4;
b = (byte)(x + b);
System.out.println(b);*/
//00000000 00000000 00000000 10000010 130的二进制
//10000010 -126补码
//00000001 -1求反码
//10000001 -126反码
//11111110 -126原码
byte b = (byte)(126 + 4);
System.out.println(b);
//00000000 00000000 00000001 00101100 300的二进制
//00101100
byte b2 = (byte)300;
System.out.println(b2);
上述代码运行后,最后的b和b2的结果分别是-126和44,这个是由于原码和补码造成的
class Demo4_DataTypeConversion {
public static void main(String[] args) {
System.out.println('a' + 1); //98,因为有ASCII码表,a字符对应的是int类型的97
System.out.println((char)('a' + 1));
System.out.println("hello"+'a'+1); //任何数据类型用+与字符串相连接都会产生新的字符串
System.out.println('a'+1+"hello");
System.out.println(" 5 + 5 = " + (5 + 5));
}
}
2.13 和2.14 隐士类型转换和强制类型转换
2.15 面试题
byte b1 = 3;
* byte b2 = 4;
* byte b3 = b1 + b2;
* 从两方面去回答这个题
* b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
* byte类型的变量在进行运算的时候,会自动类型提升为int类型
* byte b4 = 3 + 4;
* 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
2.17 2.18 引入字母串