JAVA SE

Posted by zangxin on September 29, 2024

JAVA SE

1.java跨平台原理

image-20240928140844473

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:结束循环