Java基础班 第二天 (上)

第一节  常量的问题

第二节到第八节 进制转换和反码 补码

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 引入字母串

猜你喜欢

转载自blog.csdn.net/weixin_40079205/article/details/82916288