1.java的基本运行单位是类
2.Java类的组成主要有以上3部分:数据成员、构造方法、方法成员
3.变量之间可以相互转换,如:低级变量可以直接转换为搞基变量,而将高级变量转换为低级变量,就得使用强制转换。
4.String不是基本的数据类型。是final修饰的java类。
5.java中,static表示“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,或者进行静态导包。 static的特点:1、随着类的加载而被加载;2、优先于对象存在;3、被所有对象共享。 Java是一种面向对象的计算机编程语言,Java具有简单性、面向对象、分布式、健壮性、安全性、平*立与可移植性、多线程、动态性等特点。 下面我将和大家讲讲Java中的static是什么意思。 java中,static最常用的就是用于修饰类的成员函数与属性,让他们成为类的成员函数与属性。 这是相对于对象的方法和对象来说的。 修饰成员方法也是修饰成员变量的一种,因为成员方法也同样属于成员变量。
动手动脑.1:
由上图可知枚举的类型为Size
s和t引用的并不是同一个对象,枚举并不属于原始数据类型 ,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,"==”和equals()方法执行的结果是等价的
动手动脑.2::
原码:
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
反码:
反码的表示方法是:
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
补码:
补码的表示方法是:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
动手动脑.3:
动手动脑.4
整型: byte(8),short(16),int(32), long(64) 浮点型: float(32), double(64),
java自动完成从低级类型向高级类型转换,即取值范围相对较小的数据类型转换成取值范围相对较大的数据类型。
动手实验.5
归根结底,这个问题涉及到二进制与十进制的转换!!
我们知道计算机进行的是二进制运算,我们输入的十进制数字会先转换成二进制,进行运算后再转换为十进制输出。
而N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4 = 1×102+2×101+3×100+4×10(-1);其它进制的也是同理,例如二进制数11.01 = 1×21+1×20+0+1×2(-2) = 十进制的3.25。
Double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
如果这里不好理解,那我们再举个例子:如要用4bit来表示一个十进制小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,计算机内应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。显然这个区间里面除了我们需要的3.26,还有很多其他的数字。
再回到Double的64bit上来,同理:我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位的,比如1/3),而Double类型的数值只有64bit,后面舍去的位数就一定会带来误差,无法得到“数学上精确”的结果。
动手动脑.6
输出结果:X+Y=100200
300=X+Y
原因:System.out.println("X+Y="+X+Y) String字符串后面是加和变量,加号起连接作用,然后把两个字符串连接成一个新的字符串输出。
System.out.println(X+Y+"=X+Y")中的“+”为加法运算符,即为两个数相加。