三 数据类型
3.1 8种基本数据类型
Java中的数据类型分为两类
基本型数据(四类八种) //现在研究基本类型
引用型数据类型(除了基本型外都叫引用) //面向对象时用
注意:基本数据类型存的是值,引用数据类型存的是地址
基本型分四类八种
1.byte 字节型 1字节8位 -128 +127 //1byte字节=8bit比特位(开关)
2.short 短整型 2字节16位 -32768 +32767
3.int 整形 4字节32位 -2147483648 +2147483647
4.long 长整形 8字节64位 取值范围天文数字
5.float 单精度 4字节32位
6.double 双精度 8字节64位
7.char 字符型 2字节16位 取值范围‘ ’ “” //“”可以存在,代表没有内容的空字符串
8.boolean 布尔型 取值范围true false,虚拟机运行时用1.0代表二进制
注意事项
1.在定义变量时,给其赋值时不要超出这个类型表示的最大值与最小值范围,其中每个类型占多少空间是强制规定的,开发中不是占空间大或小就好,而是正好能装,
2.定义long型数据时数据结尾处使用l标识不管超不超 long a=1000000000L
3.定义float型数据时数据结尾处使用f标识 float b=3.1415926F
4.char是否可以描述一个汉字,如果可以为什么? 一个汉字占两个字节,char用两个字节描述的,所以可以接受汉字
5.在定义变量时,要注意给其赋值时不要超出这个类型表示的最大值最小值范围
byte取值范围
Java中的数有正负,,用二进制描述时,最高位代表的是符号位,0代表正,1代表负,所以
byte取值范围就是 -128到+127之间共256个数 开发中要用的数据再此期间就用byte
字符型char演示
char c='a' //1,必须加上单引号
char c=65 //2,如果再声明char时,对其赋值是一个数,那么代表的是对应的unicode码值
//简单说就是讲unicode吗表中的码值位65对应的字符赋值给c就显示的a被
//java采用的是unicode码表它里面定义了65536个字符(char2个字节16位吗)
char在内存中占用2个字节,最多可以表示65536个,也就是说可以取0到65535这些值,
那么这些值就与unicode买包中的每个字符对应
System.out.println(c);
各种数据类型的默认类型
整数默认int 默认值0
小树默认double 默认值0.0
字符 默认值unicode码表中的第一个字符,无显示效果
布尔类型 默认值false
引用类型 默认值为null
定义基本数据类型作用
为每种数据在内存中开辟大小不同空间 优化运算 (强类型语言规范性严谨 便于大家共用开发)
3.2 变量在内存中的变化
补图
四 基本数据类型转换
4.1 基本数据类型转换
指的是整型,浮点型,字符型之间转换,没有boolean类型什么事情
不同数据类型之间不能直接运算,所以要自动类型提升(JAVA自动提升)
4.2 转换规则
精度从高到低
double > float > long > int > short > char > byte
在类型转换时查看等号左右两边个如果左边高右边低,那么自动如果左边低右边高强制
byte.short.char再参与运算后会自动提升为int
自动转换
低精度>高精度,自动转换 (也叫隐式类型转换)
举例:
byte b = 3;
int x = 4;
x = x + b; //b会自动提升为int类型进行运算
举例
double d=1.23;
d=10; //这个时候是将一个int数据赋值给double类型输出结果10.0
强制转换
高精度>低精度,需要手动强制转换 (也叫显式类型转换)(强转换可能出现问题,损失精度和溢出)
举例
byte b = 3;
b=b + 4; //报错,b是byte类型,4是int类型,运算时b自动提升为int,得到的int类型结果不能赋给byte
b= (byte)(b+4); //强制类型转换
举例
byte b=100; //1,100是一个常量,2编译器检查时会看该值是否在byte范围内,如果在则自动转换赋值给b
举例
int i=10;
i=1.23;//将一个double值1.23赋值给了int类型的变量报错
丢失精度:小数点问题是精度问题
内存溢出:大空间装到小空间就是溢出
4.3 变量一些细节练习
int i=1.2; //出问题.小数型不能放到int型
int i=(int)1.2; //强转
byte b=10; //jvm会自动检测等号右边的常量值是否在左边类型范围内,如果在这个范围内,那么是可以直接赋值。
float f=1.23; //因为浮点型不能用二进制精度描述。
byte b=3;
int x=4;
x=x+b ; //b会自动提升为int类型进行运算,小空间装到大空间中,
byte b = 3;
b=b + 4; //报错,因为b是个变量 b+4结果不确定不是常量
b= (byte)(b+4); //强制类型转换
五Java中的运算符与表达式
为什么要用到运算符与表达式
把常量用变量存储后需要运算 什么值参与运算并不知道 运算就涉及到了新运算符
运算符,操作数,表达式的概念
运算符
+ - * / % > < 等这些叫
操作数
a+b +就是操作符 a,b就是操作数
表达式
使用操作符将操作数连接的式子叫表达式
|
|