JAVA SE
1.java跨平台原理
2.功能最小单元-方法
3.注释、字面量、变量、关键字、标识符
注释:// // //***/, javac编译后去掉注释,与执行无关
字面量:程序中能直接书写的数据,”hello”, 1, 3.14, ‘A’, true, false, null,\t,\n
1
2
3
4
5
6
7
8
// 定义整型变量i1,并初始化为二进制值101010
int i1 = 0b101010;
// 定义整型变量i2,并初始化为十六进制值fa
int i2 = 0xfa;
// 定义整型变量i3,并初始化为八进制值12
int i3 = 012;
变量:代表内存地址,
变量类型:
数据类型 | 默认值 | 大小 |
---|---|---|
boolean | false | 不确定 |
char | ‘\u0000’ | 2 字节 |
byte | 0 | 1 字节 |
short | 0 | 2 字节 |
int | 0 | 4 字节 |
long | 0L | 8 字节 |
float | 0.0f | 4 字节 |
double | 0.0 | 8 字节 |
整数字面量默认使用int类型
浮点字面量默认使用double类型
关键字:java内置的语法修饰词
标识符:自定义的名称,用于变量名,类名、方法名
一般由数字字母下划线和$组成
不能以数字开头,不能是关键字,不能包含一些特殊字符(%,&,#,…)
变量名:小驼峰
类名:大驼峰
4.方法(method/function)
方法是功能的基本单元
格式:修饰符 返回值 方法名(参数列表){
// 方法体
return 返回值;
}
1
2
3
4
// 定义一个方法,求两个数的和
public static int getSum(int a, int b) {
return a + b;
}
方法是否需要接受数据?
方法是否需要返回数据?无返回值,返回void
重载方法:一个类中,出现多个方法名称相同,但是他们的形参列表不同,那么这些方法就称为重载方法。
System.out.println()就是重载方法
return; 用于无返回值的方法中提前结束方法
5.类型转换
自动类型转换:类型范围小的变量,可以直接赋值给类型范围大的
byte–>short–>int–>long–>float–>double
char–>int
强制类型转换:大–>小
类型范围大数据类型不能直接转换成小的类型,因为可能造成窄化时数据损失,需要使用强制类型转换符
1
2
3
4
int b = 12;
byte j = (byte) b;// 强制转换
print3(j);
public static void print3(byte a) {}
表达式的自动类型转换:在表达式中,小范围类型变量会自动转换成表达式中大范围的类型,再参与运算。
byte、short、char–>int–>long–>float–>double
表达式结果最终类型是由最高类型决定
byte、short、char是直接转换成int类型参与运算的。
byte + byte的结果是int
6.输入/输出
输入:调用Scanner的API
1
2
3
4
5
6
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = scanner.nextInt();
System.out.println("请输入姓名:");
String name = scanner.next();
System.out.println("年龄:" + age + ",姓名:" + name);
7.运算符
+ - * / %
+: 加;连接。能加就加,不能加就连接
++/–:自增运算符
赋值运算符
= += -= *= /= %=
1
2
3
4
byte b1 = 10;
byte b2 = 20;
b1 += b2; // 等价于 b1 = (byte) (b1 + b2) +=自带强制类型转换
System.out.println(b1);
关系运算符:
> < >= <= == !=
运算的结果为boolean值
三元运算符
boolean表达式 ? 为true时执行的语句 : false时执行的语句
1
String result = a % 2 == 0 ? "偶数" : "奇数";
逻辑运算符
与:& or &&(短路与,左边为false, 就不执行右边的表达式了)
或: | or | (短路或,左边为true,就不执行右边的表达式) |
非:!
异或:^
8.程序控制流程
分支结构 if-else 和switch-case 根据条件真假,决定执行不同代码
if的三种形式
1
2
3
if(condition) {}
if(condition) {} else {} // 非此即彼
if(condition) {} else if(condition2) {} [else]
switch: 通过比较值是否相等,来决定执行那条分支
if在功能上比switch强,if可以进行区间判断
switch表达式类型只能是byte short int char 枚举 String 不支持float double(小数,java这些类型不精确),long
case给出的值不允许重复,且只能是字面量(常量),不能是变量。
正常使用switch时,一定要写break,否则会出现穿透现象。
合理利用穿透可以简少冗于代码
循环结构
for
while
功能与for一致
知道 循环次数用for,不知道用while
do-while 先执行后判断,至少执行一次
死循环
1
2
3
while (true) {}
for (; ; ) {}
do{} while(true);
continue: 跳过本次循环
break:结束循环