文章目录
一、变量与常量
1. 字面常量
字面量就是数据,数据就是字面量,而常量是在程序运行时,固定不变的量称为常量。例:
public class Test1 {
public static void main(String[] args) {
System.out.println("HelloWorld"); //字符串常量
System.out.println('A'); //字符常量
System.out.println(5.20); //浮点型常量
System.out.println(1314); //整型常量
System.out.println(true); //布尔型常量
System.out.println(false); //布尔型常量
}
}
以上的 “HelloWorld”、‘A’、5.20、1314、true/false均为常量,也称字面常量。
2. 变量
变量相当于存数据的盒子,盒子的大小由数据类型决定,并且其数据是可变的,所以叫做变量。
变量三要素::数据类型、变量名、值。如: int i = 10;
即 数据类型 变量名 = 初始值
在 java 中,变量需要先赋值才能访问,没有进行赋值就访问会报错。
这里我们可以看到没有赋值访问报错了。
3. 成员变量与局部变量
成员变量:在方法体外以及类体内声明的变量叫做成员变量。
局部变量:在方法体中声明的变量为局部变量。(方法执行结束之后内存释放)
public class Test1 {
int a = 100;//成员变量
public static void main(String[] args){
int b = 100;//局部变量
}
int c = 50;//成员变量
}
二、数据类型
1. 基本数据类型和引用数据类型
2. 各数据类型的大小(字节)及范围
注意:
- Java 中的字符型和C语言中的字符型的大小不同,在 Java 中字符型大小为 2 个字节,C语言中字符型为 1 个字节,在Java中字符型可以为一个中文,一个中文为两个字节
- boolean 类型只有 true 或 false 不能写 1 或 0.
- 定义 long 或 float 类型时需在初始值后加 L 或 F ,大写小写都行,但是L建议使用大写,因为小写 l 和 1 在某些编译器上很像。
各数据类型大小范围为(只讨论byte、short、int、char):
- (1个字节) byte: [-128 ~ 127] ------>-2^7 ~ 2^7 - 1
- (2个字节) short: [-32768 ~ 32767] ------->-2^15 ~ 2^15 - 1
- (4个字节) int: [2147483648 ~ 2147483647] ------->-2^31 ~ 2^31 - 1
- (2个字节) char: [0 ~ 65535]
- short 和char 实际上容量相同,不过 char 可以表示更大的数字。
因为 char 表示的是文字,文字没有正负之分,所以 char 可以表示
更大的数字。
三、类型转换
1. 自动类型转换
1. 小容量可以自动赋值给大容量,这叫做自动类型转换,如果大容量的类型转化为小的类型就会报错。
2. 在任何情况下,整数型的 "字面量/数据 "默认当作 int 类型处理,但是 byte、short、char 类型的字面量没有超过其范围时,可以直接赋值给byte、short、char 类型的变量。
这里我们可以看到他们都可以直接赋值,但如果超过他们的范围就会报错
也可以看报错的提醒,也证明了整数型赋值时当做 int 类型处理。
3. 任何一个浮点型默认被当作 double 类型处理。
2. 强制类型转换
有大容量的类型经过强转转换为小容量的类型,称强制类型转换。如下:
这里我们可以看到其输出为 100,并没有报错。
注意:
1. 在进行强制类型转换时可能会损失精度。
原因如下:
2. 当 byte、short、char 进行混合运算时,先各自转化为 int , 再进行运算。
通过这个错误我们可以看到,a + b 后的最终结果变为了 int 类型,需要进行强转类型转换。
3. 多种数据类型进行混合运算时,各自转换成容量最大的那个类型进行计算。
从代码中可以看到再进行混合运算时 long 类型容量最大,所以混合运算的结果为 long 类型。需要将其强转转换。
小练习:判断正误,如果有错该如何改。
public class Test1 {
public static void main(String[] args) {
int a = 10.0 / 2;
}
}
两种改法:
4. java中规定,int 类型和 int 类型最终结果为 int 型。
可以看到在运算时并没有小数产生,并且把小数给舍去了。
好了,本次的内容就到这里了,因博主水平有限,难免会发生错误,见到的话可以在评论区留言或私信博主,多谢各位。^ _ ^