目录
一、Java数据类型与变量
1、数据类型变量
数据类型包括基本数据类型与引用数据类型。
基本数据类型:整数类型、浮点类型、字符类型与布尔类型
(1)整数类型:byte(1字节)、short(2字节)、int(4字节)、Long(8字节)
(2)浮点类型:float(单精度浮点数,4字节)、double(双精度浮点数,8字节)
(3)字符类型:char(2字节)
(4)布尔类型:boolean("true"或"false")
注意点:
- 整型默认为int型,浮点型默认为double
- 整型变量long的初始值后加L或者l,推荐加L
- 浮点变量float的初始值后加F或者f,推荐加F
- 布尔类型的变量boolean只有两种取值, true 表示真, false 表示假
2、数据类型转换
Java数据类型转换包括:自动类型转换和强制类型转换
特点:数据范围小的转为数据范围大的时会自动进行
System.out.println(100);//整型默认为int
System.out.println(3.14);//浮点型默认为double
int a=100;
long b=10L;
b=a;//a和b都为整型,a的范围小于b的范围,编译器自动把a的类型提升为long赋给b
a=b;//编译报错,long类型比int类型范围大,有数据丢失不安全
float c=1.34F;
double d=2.56;
d=c;//float的范围小于double的范围,编译器自动把c的类型提升为double赋给d
c=d;//编译报错,double类型比float类型范围大,有数据丢失不安全
(2)强制类型转换
特点:
- 当进行操作时,代码需要进过一定操作才能转换,强制类型转换不一定能成功
- 不相干类型不能转换,例如:int不能与boolean进行强制类型转换
int a = 10;
long b = 100L;
b = a; // int-->long,数据范围由小到大,隐式转换
a = (int)b; // long-->int, 数据范围由大到小,需要强制转换,否则编译失败
float f = 3.14F;
double d = 5.12;
d = f; // float-->double,数据范围由小到大,隐式转换
f = (float)d; // double-->float,数据范围由大到小,需要强制转换,否则编译失败
a = d; // 报错,类型不兼容
a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃
boolean flag = true;
a = flag; // 编译失败:类型不兼容
flag = a; // 编译失败:类型不兼容
结论:
- 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算
- 不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
- 不相干类型不能转换,例如:int不能与boolean进行强制类型转换
包装类
int的包装类型为 Integer ,char的包装类型为Character ,其他数据类型的包装类型为首字母大写
二、Java运算符
1、算术符
1.1 基本四则运算符:加减乘除模(+ - * / %
int a = 3;
int b = 2;
// 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整,即小数点之后全部舍弃掉了
System.out.println(a / b);
// 如果要得到数学中的结果,可以使用如下方式
double d = a*1.0 / b;
System.out.println(d);
1.2 增量运算符 += -= *= %=
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
a -= 1; // 相当于 a = a - 1
System.out.println(a); // 输出2
a *= 3; // 相当于 a = a * 3
System.out.println(a); // 输出6
a /= 3; // 相当于 a = a / 3
1.3 自增/自减运算符 ++ \ --
混合使用 口诀:
++在前,先自增 后赋值 (++在后,先赋值 后自增)
--在前,先自减 后赋值
1.4 关系运算符
int a = 10;
int b = 20;
// 注意:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false
1.5 逻辑运算符
表达式1 | 表达式2 | 结果 |
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
表达式 | 结果 |
真 | 假 |
假 | 真 |
特别注意点:
对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.
1.6 位运算符
int a = 0x1;
int b = 0x2;
System.out.printf("%x\n", a ^ b);
1.7 条件运算符
// 求两个整数的最大值
int a=10;
int b=20;
int c= a>b ? 25 : 56;
1.8 移位运算符
<<(左移)、>>(带符号右移)和 >>>(无符号右移)
1、<<(左移)
m<<n 代表把数字m的二进制往左移n位
计算公式:m<<n在数字m无溢出的前提下乘以2的n次方
// 1乘以2的1次方
1<<1 // 2
// 1乘以2的5次方
1<<5 // 32
2、>>(带符号右移)
m>>n 代表把数字m的二进制往右移n位
计算公式:m>>n 代表把数字m除以2的n次方
// 1除以2的1次方
1>>1 // 0
// 1除以2的5次方
1>>5 // 0
// 10除以2的1次方
10>>1 // 5
// -10除以2的1次方
-10>>1 // -5
3、 >>>(无符号右移)
无符号右移运算符“>>>” - 同右移,但是结果全变正数。
把数字转换为二进制 然后进行右移一位 并变成正数
这里准备一些复习知识点
1、考察jvm知识点:JDK、JRE和JVM的关系?
JDK(Java Development Kit)是Java开发工具包,包含了JRE(Java Runtime Environment)和一些开发工具(如编译器、调试器等)。
JRE是Java运行环境,用于在计算机上运行Java程序。
JVM(Java Virtual Machine)是Java虚拟机,它是一个虚拟的计算机系统,负责解释和执行Java字节码。
JDK包含了JRE和JVM,开发人员可以使用JDK来编写、编译和运行Java程序。JRE包含了JVM,用于在计算机上运行Java程序。
JDK=JRE+开发工具集
JRE=JVM+JavaSE标准类库
2、Java标识符的组成?
标识符由字母、数字、下划线和美元符号$组成,标识符开头不能是数字,不能是关键字
标识符规格详细见阿里巴巴Java开发手册