变量和类型
1. 整型变量(重点)
int
在Java中占四个字节,和操作系统无关,表示的数据 范围是 -2^31 --2^31-1 。
基本语法格式
代码示例
注意事项
1.int表示变量的类型是一个整型
2.变量名是变量的标识,后续都是使用这个名字来使用变量
3.java中 = 表示赋值(和数学中不一样),意思是给变量设置一 个初始值
4. 初始化操作是可选的,但是建议创建变量的时候都显示初始化
5.最后不要忘记 ; 否则会编译失败
如何查看java中的整型数据范围
超出范围会溢出
**
2.长整型变量**
语言
方法
7977
MmC3u81J7Z
9440
2012.05.20 01-49-32
long
在Java中占八个字节,表示的数据 范围是 -2^63 --2^63 -1 。
基本语法格式
代码示例
注意事项
1.初始化设定的值为10L,表示一个长整型的数字,10l也可以,建议使用大写,因为好辨识。
2.使用10初始化也可以,但是10的类型是int,10L的类型是long,
如何查看java中的长整型数据范围
3.双精度浮点型变量(重点)
double
在Java中占八字节,Java中的double虽然也是八个字节,但是浮点数的内存布局与整数差别很大,不能单纯的使用2^n来表示数据范围
基本语法格式
代码示例
神奇代码
double num = 1.1;
System.out.println(num*num);
//执行结果 1.2100000000000002
//存在精度误差
注意事项
尽量不要用两个double类型的数据比较相等(因为存在精度误差,所以可能导致出错,建议使用做差再与预期值比较的方式来判定是否相等)
4.单精度浮点型变量
float
在java中占四字节
基本语法格式
代码示例
注意事项
由于float表示的数据精度范围较小,一般在工程上用到浮点数都优先考虑double,不太推荐使用float
5.字符类型变量
char
在Java中占2个字节,表示的数据范围0–2^16,没有负数。
基本语法格式
代码示例
注意事项
1.Java中使用 单引号 + 单个字母的形式表示字符字面值
2.计算机的字符本质上是一个整数,在C语言中使用ASCLL表示字符,而Java中使用Unicode表示字符,因此一个字符占用两个字节,表示的字符种类更多,包括中文。
3.代码中有中文时编译加上 -encoding UTF-8
6.字节类型变量
byte
在Java中占一个字节,表示范围-17–27-1
基本语法格式
代码示例
注意事项
1.字节类型表示的也是整数
2.字节类型和字符类型互不相干
7.短整型变量
short
在Java中占两个字节,表示的数据范围是 -2^15 — -2^15-1
基本语法格式
代码示例
注意事项
数据表示范围比较小,一般不推荐使用
8.布尔类型变量
boolean
基本语法格式
代码示例
注意事项
1.boolean类型的变量只有两种取值,true表示真,false表示假
2.java的int类型和boolean类型不能相互转化,不存在1表示true,0表示false这样的用法
3.Boolean类型有些JVM的实现是占一个字节,有些是占一个比特位,这个没有明确规定
9.字符串类型变量
String
基本语法格式
代码示例
注意事项
1.Java使用 双引号 + 若干字符 的方式表示字符串字面值
2.String不再是基本数据类型,而是一个标准库自带的类。类就是用户自定制的类型(高配结构体)
3.是引用类型
4.字符串中的一些特定的不太方便表示的字符需要进行转义
10.变量的作用域
Java中没有全局变量,只有局部变量和成员变量
局部变量作用域在{}内有效
Java中一般不考虑生命周期
Java中的内存释放有专门的垃圾回收机制来负责
11.常量
常量:指的是运行时类型不能发生改变
常量主要有以下两种体现形式
字面值常量
final关键字修饰的常量
final int a = 10;
注意事项
1.可以不在定义的同时初始化,一旦被初始化就不能被修改
2.final 不仅可以修饰变量还可以修饰 方法,类,接口
12.理解类型转换
int 和 long/double 相互赋值
long 表示的范围更大, 可以将 int 赋值给 long, 但是不能将 long 赋值给 int. double 表示的范围更大, 可以将 int 赋值给 double, 但是不能将 double 赋值给 int.
结论:不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 反之则不行.
int 和 boolean 相互赋值
结论: int 和 boolean 是毫不相干的两种类型, 不能相互赋值.
int字面值常量 给 byte 赋值
注意: byte 表示的数据范围是 -128 -> +127, 256 已经超过范围, 而 100 还在范围之内.
结论: 使用字面值常量赋值的时候, Java 会自动进行一些检查校验, 判定赋值是否合理.
使用强制类型转换
结论: 使用 (类型) 的方式可以将 double 类型强制转成 int. 但是 1. 强制类型转换可能会导致精度丢失. 如刚才的例子中, 赋值之后, 10.5 就变成 10 了, 小数点后面的部分被忽略. 2. 强制类型转换不是一定能成功, 互不相干的类型之间无法强转.
特殊情况