1、变量类型
1)、基本类型
8种基本类型:分为4小类
①、整数类型
byte:字节类型
1个字节 8 bit
short:短整型
2个字节 16 bit
int: 整型
Java中默认的整型:能看到的整数都是int类型。
4个字节 32 bit
long:长整型
正确定义,在整数值后面加上 L 或者 l。
8个字节 64 bit
②、浮点类型
float:单精度浮点类型(不常用)
4个字节 32 bit
正确定义,在double类型数值后加上 F 或者 f;
如:float f = 1.0F;
double:双精度浮点类型(常用)
double是Java中默认的浮点类型。
即:能看到的小数,都是double类型。
8个字节 64 bit
注意事项:
a、精度丢失现象。
float:最高7位
double:最高16位
b、二进制,十分之一除不尽。
1 除以 10 ≠ 0.1
总结:与钱相关的所有软件,都不可能用double去定义。
可以使用 BigDecimal 代替double。
③、字符类型
char:字符类型(不经常使用)
2个字节 16 bit
单个字符:能用单个字符表示的内容,并使用单引号。
如:一个字母、一个符号、一个数字|
一个汉字....
注意事项:
a、字符为表现形式,其本质为int类型的ASCII码。
char ch1 = 'A';
char ch2 = 65;
System.out.println(ch1 == ch2);//true
char ch3 = ch1 + 32;
System.out.println(ch3);//a
小写字母 - 大写字母 = 32
b、无法用单个字符表示的字符,需要使用转义字符。
\ 转义字符
\\ 表示一个 \
\' 表示一个 '
\n 表示换行符
\t 表示 tab 键
④、布尔类型(常用)
boolean:布尔类型(真假类型)
1个字节 8 bit
值:true 或 false
布尔类型,是关系运算、逻辑运算的结果。
2)、引用类型
除了8种基本类型之外的都是引用类型。
2、基本类型转换
1)、自动转换
小类型 → 大类型
byte → short → int → long → float → double
↑
char
2)、强制转换
大类型 → 小类型
byte b = 100;
//100是int类型,int(大) → byte(小),为什么不需要强转?
100,没有超过byte的取值范围,
所以JVM做了优化,对于没有超过byte取值范围的int数值。
直接给byte时,做了自动强转的操作。
所以不需要手动进行强制类型转换。
long l = 1000;//大类型 变量1 = 值1;
int i = l;//long → int 手动强转
小类型 变量2 = (小类型)变量1;
//手动强转如下:
int i = (int)l;
注意:
a、强制类型转换,可能出现溢出现象。
b、精度高→精度低,会发生精度丢失。
结论:
尽量避免使用强制类型转换。
3、运算符
1)、算术运算符
①、运算符
+:加法运算
-:减
*:乘
除:
/ 左右两边都是整型,取整。
左右两边有浮点类型,则是除法运算。
% 取余
②、+ :重载现象
+ :a、如果 + 两边都是数字,则为加法运算。
b、如果 + 两边有一边非数字,则为 拼接效果。
③、++、-- (难点、重点)
++:自增,1个单位。
--:自减,1个单位。
以++为主,--自习。
++:前++、后++
int age = 18;
前++:即++在变量前。
++age
后++:即++在变量后。
age++
前++、后++的区别:
a、单独使用时,两者无区别。
age++;//自增1次
++age;//再自增1次
b、非单独使用时,两者有区别
age++:先取值使用,后自增。
++age:先自增,后取值使用。
总结:非单独使用时:
num++ 值等于 num
++num 值等于 num + 1
2)、关系运算符
3)、逻辑运算符
4)、赋值运算符
5)、三目运算符