目录
1.变量
1.1 变量
内存中的一小块空间,用来存储数据
1bit 就是1个二进制位 不是0就是1
1byte = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1.2 变量的声明,赋值使用
变量三要素
- 数据类型
- 变量名
- 变量值
声明语法
- 数据类型 变量名;
赋值语法
- 变量名 = 变量值; = (赋值标识)
1.3 变量的使用方式
先声明,后赋值,再使用
int money; money =10000; System.out.println(money);//使用变量名
声明并赋值
int money = 10000;
多个声明并赋值
int a,b,c=10000,d,e,f =10000; //只有c,f赋值了
2. 数据类型
- 基本数据类型(4小类,8个)
- 整数型
- 小数型(浮点数)
- 布尔型
- 字符型
- 引用数据类型
- String 字符串
- 转义字符
- 数组(后续)
- 对象(后续)
2.1 整数型
类型 | 字节 | 范围(二进制) | 默认值 |
---|---|---|---|
byte | 1字节 | -128(-2^7)->127 (2^7 -1) | 0 |
short | 2字节 | -32768(-2^15)-> 32767(2^15 - 1) | 0 |
int | 4字节 | -2,147,483,648(-2^31)->2,147,483,647 (2^31 - 1) | 0 |
long | 8字节 | -9,223,372,036,854,775,808(-2^63)-> 9,223,372,036,854,775,807 (2^63 -1) | 0L |
默认的整数类型为int
long 需要在整数值后面+l(L)
2.2 小数型(浮点数)
float | 4字节 | 单精度浮点数 |
double | 8字节 | 双精度浮点数 |
小数不是精确存储的,所以计算是有偏差
小数默认类型是double的
float类型需要在值的后面加f/F
float f = 1.23f;// 说明是一个单精度浮点型
2.3 布尔类型
boolean 只有两个值,true (真) false (假)
长度为一个字节,不能参与运算
2.4 字符型
char类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(即为0);
最大值是 \uffff(即为65,535);
char 数据类型可以储存任何字符;
2.5 字符串
String str =“中文”;// unicode ,不可变长度
2.6 转义字符
特殊字符无法执行输出使用,此时我们需要转义字符对特殊符号进行转义才走
char c = '\'';//字符型,对’进行转义 String str = "\“";//字符串类型,对"进行转义 特殊符号 \t \n也需要转义 String str1 = "hello\\tworld";//对特殊符号\t 转义 String str2 = "hello\\nworld";//对换行符号进行转义 \n 换行符号 \t 制表符
3. 运算符号
3.1 算术运算符
System.out.println(1+1);//加 System.out.println(1-1);//减 System.out.println(1*1);//乘 System.out.println(1/2);//除,求商 int为求商 System.out.println(1%2);//求模 //如果要求带小数的商,使用double double d = 1.2; System.out.println(d/2);
3.2 一元算数运算符
i++ 和++i;都是自增运算
i-- 和–i 都是自减运算
i++为先使用i的值,后对i进行+1操作,如
int i = 1; System.out.println(i++); //结果为1,i值为2
++i为先对i进行+1操作,再使用i的值,如
int i = 1; System.out.println(++i);//结果为2,i值为2
3.3 赋值运算符
将符号右边的值赋值给左边
= 为直接赋值
int money = 10000;//直接将10000赋值给money
+=,-=,/=,*=,%=都先对原值处理后再赋值
int money = 10000; money +=10000;// 等价于 money=money+10000; money -=10000;//money = money-10000; money *=10000;//money = money*10000; money /=10000;//money = money/10000; money %=10000;//money = money%10000;//注意变量都是在操作符号的左边
3.4 关系运算符
关系运算符的结果为布尔类型
System.out.println(2>1); //返回true为布尔类型 System.out.println(1==1); //基本类型用==来比较值 System.out.println(true==false);//false 不相同 //!= 代表是否不等于 System.out.println(1.9!=1.8);//true
3.5 逻辑运算符
&&与||
&&逻辑与, 布尔表达式1&&布尔表达式2
//布尔表达式和布尔表达式2都为true,结果为true true&&true 结果为true false&&true 结果为false true&&false 结果为false false&&false 结果为false
||逻辑或, 布尔表达式1||布尔表达式2
//布尔表达式和布尔表达式2只要有一个为true,结果为true true||true 结果为true false||true 结果为true true||false 结果为true false||false 结果为false
&&与||有断路的功能,
当 && 左边的表达式为false,则完成断路,直接返回false
当||左边的表达式为true,则完成断路,直接返回true
3.6 三目表达式
类型 变量名 = 布尔表达式?结果1:结果2
//如果布尔表达式为true,结果1的值赋值给变量 int age = 18; //如果布尔表达为true,执行结果1,否则执行结果2 String desp = age>=18?"成年":"未成年"; System.out.println(desp); //如果布尔表达式为false,结果2的值赋值给变量 int age = 1; //如果布尔表达为true,执行结果1,否则执行结果2 String desp = age>=18?"成年":"未成年"; System.out.println(desp);
4. 类型转换
4.1 自动转型
要求
数据类型兼容(整数,小数)
目标类型要求大于原类型
char c =32000; int i = c;// 左边的类型要大于右边的类型
char 和 short虽然都是两个字节的,但是范围不一致,所以不能自动转型
4.2 强制转型
要求
数据类型兼容(整数,小数)
目标类型小于原类型
int i =10000; byte b = (byte)i;// 目标类型小,所以需要强制转换
问题:
由于目标类型范围小,导致数据可能被截断掉,会出现,正数变成负数或者负数变成正数或者值变化
如果目标的范围包含原始的值的
int i = ;//如果i的范围在-128到127之内 byte b = (byte)i;//值不变,不会丢数据
小数转整数,小数部分直接丢弃,整数部分一样看具体的值的范围
布尔类型不参与运算
char类型有数字的特性,所以它可以自动转成int,或者其他类型强转成char
5. 自动类型提升
数字计算 ,整数,小数
- 如果有double,表达式的结果为double
- 如果没有double,有float,结果为float
- 如果没有double,没有float,有long结果为long
- 如果没有double,没有float,没有long,有int结果为int
- 如果没有double,没有float,没有long,没有int,但是有char,short,byte其中的两个,结果为int
字符串参与+号运算,所有类型都变为字符串类型
注意()优先级高于字符串加号
System.out.println("a"+(1+2));//先执行1+2 ,结果为a3 System.out.println("a"+1+2l);//结果为a12