目录
概述
变量的基本原理
int a = 1;
int b = 3;
b = 89;
上述的代码 --> a、b是地址名,我们在内存中根据变量的数据类型开辟空间
然后令 a、b 指向该内存的地址
b = 89; --> 找到了b的内存地址然后将89写入
变量的概念
变量 = 内存中数据的存储空间
变量三要素 = 类型 + 名称 +值
而变量也就是内存地址,我们通过内存地址然后在相应的位置写入值
注意事项
1、变量根据声明时的数据类型不同,在内存中所占据的空间大小也不同。
2、传入变量的数值要在该数据类型所允许的范围内变化
byte b = 128 ; // 不能成功赋值,byte类型所要求的范围是 -128 ~ 127
+ 号的使用
1 . 当左右两侧都是数值 - -> 加法运算
2 . 左右两侧有一方是字符串 - -> 拼接运算
3 . 运算顺序从左到右
数据类型
每种数据类型都有明确的大小空间(字节)
从类别上分为 基本数据类型 和 引用数据类型
基本数据类型
整形 byte(1) 、short(2) 、int(4) 、long(8)
浮点型 float(4)、double(8)
字符型 char(2)
布尔型 boolean(1)
引用数据类型
接口interface
数组Array
类 class
整数数据类型
-
Java的整数类型的范围和长度是固定的,不受操作系统的影响
-
Java中默认声明的整数类型都是int类型,如果想要声明long型常量,后面必须加上l或L
浮点数据类型
- 浮点数在机器中的存放形式: 浮点数 = 符号位 + 指数位 + 尾数 ,尾数部分是可能发生丢失的,由此会造成精度损失的问题 ---> 所以小数都是近似值
- 长度和范围固定,不受操作系统的影响
- Java中默认的浮点型是double类型,后面加d用来表示,声明float型的常量时,后面必须加上f或者F
- 一种比较特别的写法 --> 0.512 = .521
- 科学计数法的写法 :5.12e2 --> 5.12*10的2次方 5.12E-2 - -> 5.12/10的2次方
- 浮点数使用的陷阱 2.7 跟 8.1/3 的比较,在Java中一定要注意:我们的8.1/3所得出的值是会存在精度损失的 , 也就是说我们 8.1/3 得出是个无限接近2.7的数值 所以我们一般对于小数之间的相等判断,采用的是:Math.abs(num1 - num2) < 某个精度(如0.000001)来判断两个小数之间是否相等
字符char类型
- char类型 2 个字节(可存放汉字),使用单引号括起 ' '
- char类型中存放数字时会输出编码表对应的字符,比如 char assign = '94'; 则输出assign时屏幕上会打印出字母 a
- Java中 char 数据类型的本质(底层)是一个数,输出时默认的Unicode码对应的字符,如果想要输出其对应的数字,可以采用的是 (int)字符变量
- char字符是可以进行数学运算的,运算时候相当于是一个整数
底层的解析流程
char类型的数据存放的计算机内存中的时候,是先按照编码表找到字符所对应的码值然后转为二进制数再存入内存中
读取数据时就需要将二进制数转为十进制数后再找到对应编码表的相应字符再显示
编码表
布尔类型
1、 boolean类型占 1 个字节
2、 boolean类型的数据一般用于流程控制
3、 Java中的布尔类型数值只能是true或false,不能使用0或1进行代替
基本数据类型转换
自动转换
Java在进行赋值或运算时,精度小的数据类型会自动转精度带的数据类型
细节
1、 多种数据类型进行混合运算,则所有的数据都提升至精度最大的数据进行运行
2、 精度大的赋给精度小的会报错,而精度小的赋给精度大的则会自动类型转换
3、 byte或short 跟 char 之间是不会发生自动类型转换的
4、btye、short、char在进行数据类型运算会自动提升至int类型
char a = 1;
a = a + 3; // 直接报错,说需要的是char类型的,但 a + 3 的运算结果是int类型的
强制类型转换
通过强制转换符()将精度大的数据类型转为精度小的数据类型
但可能会造成 精度丢失或溢出
细节
char类型的数据可以保存int类型的常量,如数字123等
但是无法保存int类型的变量,需要保存则必须强转
基本数据类型和String类型的转换
基本数据类型 --> String
使用 + "" 即可
String --> char
通过使用charAt方法即可
String --> 基本数据类型
调用对应基本数据类型的包装类的parseXXX方法即可