数据类型
1.基本数据类型
1.1数值型
整数型
byte 字节 8bit
short 短整型 16bit
int 整型 35bit
long 长整型 64bit
浮点型
float 和 double 使用的是科学计算法。
float是单精度浮点数,内存占32bit。
double是双精度浮点数,内存占64bit。
float的值必须以F/f结尾,不区分大小写。
double的值需要加D/d结尾,不区分大小写。但是D/d可以省略。
1.2字符型
char是字符型,内存占用16bit,但是范围是0~65535,没有负数。
ASCII码:是字符和数字直接的一种映射
A=65,B=66,C=67......
a=97,b=98,c=99......
0=48,1=49,2=50......
字符型需要用''单引号表示,并且单引号内有且只有一个字符。字符型还支持Unicode编码。
\:转义符,把有意义的字符转换为无意义的字符
例如:因为单引号是结束和开始字符型的标志,所以是有意义的字符,如果我们想在字符中保存单引号,那么就需要通过'\'转义符转义。
1.3布尔型
Java中的Boolean只有true和false,不能写0或1。
boolean 主要用于逻辑运算处理中或条件控制语句中。
boolean不参加任何类型的转换和运算
占用1字节,全0表示false 0000 0000,1表示true 0000 0001。
数据类型转换
8种基本类型中,除了boolean布尔型,其他7种类型,都可以进行相互转换。
低精度到高精度,可以自动类型转换。
高精度到低精度,需要强制类型转换。
注意:float和double是科学计数法储存,所以可保存的数据值更大。
自动类型转换:byte→short→int→long→float→double
char→int→long→float→double
强制类型转换:强制转换规则
低精度类型 变量名 = (低精度类型)高精度类型数据;
强制类型转换,可能会丢失精度,导致数据不准确。
char到byte和short是强制类型转换,到int是自动类型转换。
其他类型转char类型,都需要强制类型转换。
数据类型转换-进阶
// 强制类型转换,是砍掉高位,留低位
// 0000 0000 0000 1010
short s1 = 10;
// 0000 1010
byte b1 = (byte) s1;
// 0000 0000 1000 0001
s1 = 129;
// 由于1开头,所以是负数,那么 1000 0001则为补码
// 1000 0001
// 1000 0000 反码
// 1111 1111 源码 = -127
b1 = (byte) s1;
System.out.println(b1);
// 0000 1010 = 10
// 1000 1010 = -10
// 1111 0101 = -10 反码
// 1111 0110 = -10 补码
// 11111111111111111111111011110111
int i1 = -265;
// 砍掉后 是这个
// 1111111011110111
// 但是char没有负数,所以1 不表示正负数,所以 对应的整数是 65271
char c = (char) i1;
System.out.println(c);
c = 65271;
变量
1.常量
final修饰的变量是常量,不可修改。
final int i=2;
i=3;//报错
2.字面量
也是常量的一种,不可复用,不可修改。
3.变量
在生命周期中变量的值是可修改的。
3.1变量声明
数据类型 变量名; 只创建变量,但是不赋值。
int a;
数据类型 变量名 = 值; 创建变量并赋值。
int b = 2;
数据类型 变量名,变量名…; 同时声明多个变量。
int z, x,c
数据类型 变量名=值,变量名=值,…; 同时声明多个变量并赋值。
intg=1,w=2,e= 3;
同作用域中,变量名不能重复, 一个{} 就是一个作用域!
double p = 3;
使用变量p
System.out.println(p);
注意:不能先使用后声明
System.out.println(o);
int o = 2;
3.2变量分类
局部变量:在方法中创建的变量,是局部变量(main{})。
静态变量:在类体中,使用static 修饰的变量,是静态变量(类名{})。
成员变量:在类体中,没有使用static的变量,是成员变量。
3.3变量调用
局部变量:只能在当前方法中使用,并且在该方法中直接通过变量名使用即可。
静态变量:类名.静态变量名访问,如果在当前类中,调用当前类的静态变量,类名也可以省略。
成员变量:对象.成员变量名访问。
、
3.4变量调用优先级
3.5默认值
/静态变量和成员变量都有默认值
整数 默认0,小数默认 0.0,布尔型默认 false,字符型默认 \u0000,引用类型默认 null。
局部变量没有默认值,不赋值,不能使用。