* 公共类类名与文件名一致
* package 声明必须是源文件的首行代码
package:包,java 类的组织管理方式,本质是文件夹
* import 引入其他包的类,指明一个类的路径,在后面代码中可只写他的类名
2.变量
* java中变量都有类型
* 局部变量不能重复定义
* 变量的作用域、作用范围,变量在它定义的代码块中有效
* 局部变量使用前必须初始化(即赋值)
3.java 数据类型
* 基本类型
* 引用类型
基本类型
byte 1字节,-2^7到2^7-1 ,-128 到 127
short 2字节,-2^15 到 2^15-1 ,-32768~~32767
int 4字节,-2^31 到 2^31-1
long 8字节,-2^63 到 2^63-1
float 4字节
double 8字节
char 2字节, 0 到 65535
boolean
基本类型转换
* 低精度 -> 高精度
byte a = -128;
int b = a;
byte->short->int->long->double
* 低精度 <- 高精度
* 强制转型
int a = 130;
byte b = (byte) a;
基本类型字面值
* 写整数字面值,类型是 int 类型
long a = 9999999999;//错
* byte、short、char 允许以范围内的字面值直接赋值
byte b = 34;
* 浮点数字面值,是 double 类型
double a = 3.14;
float b = 3.14F;
* 后缀:
L - long
F - float
D - double
L - 9999999999L
F - 3.14F
D - 3D
基本类型运算规则
* 运算结果的数据类型与运算项中精度最高的类型一致
1 / 2 结果是 0 而不是 0.5
* byte、short、char 三种整数类型做数学运算时,会先自动转为 int 类型
byte a = 2;
byte b = 3;
byte c = a + b;//错,右侧两项会自动转为int
* 整数运算溢出
int a = Integer.MAX_VALUE;
int b = a + 1;//能执行,得到int最小值
* float、double 运算不精确
2-1.9 得到: 0.10000000000009
4.35*100 得到: 434.999999999999996
* float、double 特殊值
Infinity - 无穷大
double a = Double.MAX_VALUE*2
double b = 3.0 / 0;
NaN - Not a Number
double a = Math.sqrt(-2);
运算符
数学运算
+ - * / %
% - 求余数、求模
比较运算,返回 boolean
== !=
> >= < <=
逻辑运算
&& - 逻辑与,两侧同时为真,结果为真,短路与,左侧为假,右侧不执行
|| - 逻辑或,两侧同时为假,结果为假,短路或,左侧为真,右侧不执行
二进制位运算
& 位与,两位同时为1,结果为1
| 位或,两位同时为0,结果为0
^ 异或,相同为0,不同为1
~ 取反,0变1,1变0
移位运算
>> 右移位,符号位是0,左侧补0;符号位是1,左侧补1
>>> 无符号右移位,左侧补0
<< 左移位,右侧补0
流程控制
if-else if-else
switch-case-default
for
while - 先判断再执行
do-while - 先执行再判断
break - 跳出循环、switch
continue - 继续下一轮循环
return
while(...) {
xxx
if(...) {
continue;
}
xxx
xxx
}
循环命名
outer:
while(1) {
inner:
while(2) {
xxx
if(...) {
continue outer;
}
xxx
if(...) {
break outer;
}
}
}