java 很在意类型!!!
变量的本质
从本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。当程序中需要使用内存时,可以定义某种类型的变量。此时编译器根据变量的数据类型分配一定大小的内存空间。程序就可以通过变量名来访问对应的内存了。
变量的生命周期
声明 > 使用 > 销毁。
变量的作用域
- 局部变量:在 Java 中,局部变量只能在声明它的方法、代码块或循环语句中使用。局部变量在声明时必须初始化,它们的作用域从声明它们的位置开始,到它们所在的代码块结束。当代码块结束时,局部变量的生命周期也随之结束,它们所占用的内存空间也会被释放。
- 成员变量:在 Java 中,成员变量是定义在类中的变量,它们可以被类中的任何方法使用。成员变量的作用域从定义它们的位置开始,直到它们所属的类被销毁。成员变量可以被定义为静态变量,这样它们就成为了类变量,可以被类的所有实例共享。
- 方法参数:方法参数的作用域与局部变量相同,从方法声明处开始,到方法结束。方法参数也必须在声明时进行初始化。
- 块级作用域:块级作用域可以通过在代码块中使用花括号来创建,它可以用来限定局部变量的作用域。块级作用域中声明的变量只在该块内部可见,超出该块的范围后就无法访问。
变量可以存储2种东西?
基本类型: Boolean、char、Byte、Short、Int、long、float、double。
引用类型:String、Double、Float、Integer、BigInteger等。变量的命名规范
- 必须以字母、下划线_或美元符$ 开头。不能用一个数字作为开头。
- 第一个字符后面也可以使用数字。
- 不能与java关键字命名。
数组
数组是一个对象,尽管他是一个基本类型的数组。
int [] nums; nums=new int[7];
Java中变量的数据类型
整型变量
byte:1 个字节 、8位 , 取值范围:2-128 到 127 。
默认值:0
short : 2字节、16位,取值范围:-32768到32767。默认值:0
int :4 字节、32位,取值范围:-2147483648 到 2147483647。默认值:0
long: 8字节、64位,取值范围: -9223372036854775808 到 9223372036854775807。默认值:0L
浮点型变量
float : 4字节、32位 取值范围:3.4e-038 到 3.4e+038
默认值:0.0f
double:8字节、64位,取值范围: 1.7e-308 到 1.7e+308。默认值:0.0d
1、符号部分(S)
0
-正 1
-负
2、阶码部分(E)(指数部分):
- 对于
float
型浮点数,指数部分8
位,考虑可正可负,因此可以表示的指数范围为-127 ~ 128
- 对于
double
型浮点数,指数部分11
位,考虑可正可负,因此可以表示的指数范围为-1023 ~ 1024
3、尾数部分(M):
浮点数的精度是由尾数的位数来决定的:
- 对于
float
型浮点数,尾数部分23
位,换算成十进制就是2^23=8388608
,所以十进制精度只有6 ~ 7
位; - 对于
double
型浮点数,尾数部分52
位,换算成十进制就是2^52 = 4503599627370496
,所以十进制精度只有15 ~ 16
位
所以对于数值0.99999999f
,很明显已经超过了float
型浮点数据的精度范围,出问题也是在所难免的。字符型变量
char:2字节 ,表示Unicode 字符,可以存储任何一个 Unicode 字符。
默认值:\u0000
unicode 码表:https://www.rapidtables.org/zh-CN/code/text/unicode-characters.html
char name ='王'; char c = 'A'; char max=65535; char demo='ﴉ';
boolean: 1 个字节,布尔类型,只有两个取值:true 和 false。
默认值:false