javaSE基础
java跨平台性: Java 语言编写的程序,一次编译后,可以在多个操作系统上运行。是由于其增加了一个中间件 JVM,JVM 负责将 Java 字节码转换为特定平台的机器码,并执行。
Java 程序从源代码到运行需要经过三步:
- 编译:将源代码文件 .java 编译成 JVM 可以识别的字节码文件 .class
- 解释:JVM 执行字节码文件,将字节码翻译成操作系统能识别的机器码
- 执行:操作系统执行二进制的机器码
.class文件就是编译后生成的文件;
Java 的基本数据类型有哪些:
数据类型 | 默认值 | 大小 |
---|---|---|
boolean | false | 1 字节或 4 字节 |
char | '\u0000' | 2 字节 |
byte | 0 | 1 字节 |
short | 0 | 2 字节 |
int | 0 | 4 字节 |
long | 0L | 8 字节 |
float | 0.0f | 4 字节 |
double | 0.0 | 8 字节 |
java的引用数据类型有:
- 类(class)
- 皆苦接口(interface)
- 数组(
[]
)
当给 Integer.MAX_VALUE 加 1 时,会发生溢出,变成 Integer.MIN_VALUE。
int maxValue = Integer.MAX_VALUE;
System.out.println("Integer.MAX_VALUE = " + maxValue);
// Integer.MAX_VALUE = 2147483647
System.out.println("Integer.MAX_VALUE + 1 = " + (maxValue + 1));
// Integer.MAX_VALUE + 1 = -2147483648
// 用二进制来表示最大值和最小值
System.out.println("Integer.MAX_VALUE in binary: " + Integer.toBinaryString(maxValue));
// Integer.MAX_VALUE in binary: 1111111111111111111111111111111
System.out.println("Integer.MIN_VALUE in binary: " + Integer.toBinaryString(Integer.MIN_VALUE));
// Integer.MIN_VALUE in binary: 10000000000000000000000000000000
java中自动类型转换:
①、float f=3.4
,对吗?
不正确。3.4 默认是双精度,将双精度赋值给浮点型属于下转型(down-casting,也称窄化)会造成精度丢失,因此需要强制类型转换float f =(float)3.4;
或者写成float f =3.4F
②、short s1 = 1; s1 = s1 + 1;
对吗?short s1 = 1; s1 += 1;
对吗?
short s1 = 1; s1 = s1 + 1;
会编译出错,由于 1 是 int 类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给 short 型。
而 short s1 = 1; s1 += 1;
可以正确编译,因为 s1+= 1;
相当于 s1 = (short(s1 + 1);
其中有隐含的强制类型转换。
java的拆箱装箱:
- 装箱:将基本数据类型转换为包装类型,例如 int 转换为 Integer。
- 拆箱:将包装类型转换为基本数据类型。
i 是 Integer 类型,n 是 int 类型;变量 i 是包装器类,变量 n 是基本数据类型。
Integer i = 10; //装箱
int n = i; //拆箱
Java 5 以前 switch(expr)
中,expr 只能是 byte、short、char、int。
从 Java 5 开始,Java 中引入了枚举类型, expr 也可以是 enum 类型。
从 Java 7 开始,expr 还可以是字符串,但是长整型在目前所有的版本中都是不可以的。
java中float是怎么表示小数的?
- S:符号位,0 代表正数,1 代表负数;
- M:尾数部分,用于表示数值的精度;比如说
;3.18 就是尾数;
- R:基数,十进制中的基数是 10,二进制中的基数是 2;
- E:指数部分,例如
中的 8就是指数。
单精度浮点数占用 4 字节(32 位),这 32 位被分为三个部分:符号位、指数部分和尾数部分。
- 符号位(Sign bit):1 位
- 指数部分(Exponent):10 位
- 尾数部分(Mantissa,或 Fraction):21 位
按照这个规则,将十进制数 25.125 转换为浮点数,转换过程是这样的:
- 整数部分:25 转换为二进制是 11001;
- 小数部分:0.125 转换为二进制是 0.001;
- 用二进制科学计数法表示:25.125 =
符号位 S 是 0,表示正数;指数部分 E 是 4,转换为二进制是 100;尾数部分 M 是 1.001001。