【笔记】Java学习笔记

前言

Java学习笔记

编译源码为字节码文件

1
javac <file>.java

通过JVM运行字节码文件

1
java <file>

主方法

1
2
3
4
5
public class Main {
public static void main(String[] args) {
...
}
}

注释

1
2
3
4
5
6
7
// 单行注释

/* 多行注释 */

/**
* 文档注释
*/

输出语句

传送门

1
System.out.println("文本内容");

输入语句

输入单个数据

1
String str = new Scanner(System.in).next();

输入多个数据

1
String str = new Scanner(System.in).nextLine();

变量

  • 变量的命名
    - 只能包含字母、数字、_、$,并且不能以数字开头
    - 严格区分大小写
    - 不能使用关键字
    - 可以中文命名,但不建议

声明变量

1
数据类型 变量名;
1
数据类型 变量名1, 变量名2, 变量名3;

定义变量

1
数据类型 变量名 = 值;
1
数据类型 变量名1 = 值, 变量名2 = 值;

变量赋值

1
变量名 = 值;
  • 变量的赋值语句完成后会返回赋值结果,所以将返回值继续参与运算
1
变量名1 = 变量名2 = 值;

常量

定义常量

1
final 数据类型 常量名 = 值;
  • 常量可以先声明后赋值,常量只有首次赋值会成功,之后赋值会失败
1
2
final 数据类型 常量名;
常量名 = 值;

基本数据类型

标识符 数据类型
byte 字节
short 短整型
int 整型
long 长整型
float 单精度浮点型
double 双精度浮点型
char 字符型
boolean 布尔型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
byte a = 127;

short b = 32767;

int c = 2147483647;

long d = 9223372036854775807L;

float e = 3.14F;

double f = 3.14;

char g = 'a';

boolean h = true;

二进制数

1
byte binary = 0b1;

八进制数

1
byte octal = 07;

十六进制数

1
byte hexadecimal = 0xF;

长数字分隔符

英式数字分隔法

1
int oneBillion = 1_000_000_000;

中式数字分隔法

1
int oneBillion = 10_0000_0000;

应用于二进制数

1
int binary = 0b0000_0000;

应用于十六进制数

1
int hexadecimal = 0xFFFF_FFFF;

运算符

算术运算符

  • +-*/%++--

关系运算符

  • ><>=<===!=

逻辑运算符

  • &&||!

赋值运算符

  • =+=-=*=/=%=&=|=<<=>>=

字符串连接运算符

  • +

按位运算符

  • &(与)、|(或)、^(非)、~(取反)、<<(左移)、>>(右移)、>>>(无符号右移)
1
2
byte a = 1 ^ 0;
byte b = ~1;

左移运算:高位丢弃,低位补0
右移运算:低位丢弃,高位补与符号位相同的值
无符号右移:低位丢弃,高位补0

1
byte a = 1 << 2; // 将1右移2次

隐式类型转换

  • 不同类型整型类型数据通过算数运算符运算,会自动转换为int类型
1
2
3
byte a = 1;
short b = 1;
int c = a + b;
  • 不同类型浮点型数据通过算数运算符运算,会自动转换为double类型
1
2
3
byte a = 1;
float b = 1.0F;
double c = a + b;
  • 不同类型数据与字符串型数据进行加法运算,会自动转换为字符串型
1
String a = 1 + "";

分支语句

if…else

1
2
3
if (条件) {
满足条件时执行
}
1
2
3
4
5
if (条件) {
满足条件时执行
} else {
不满足条件时执行
}
1
2
3
4
5
6
7
if (条件1) {
满足条件1时执行
} else if (条件1) {
满足条件2时执行
} else {
不满足条件时执行
}

switch…case

  • Java的switch语句具有穿透行为,在每个case语句中,必须使用break跳出seitch语句
  • 所有条件都不符合时,执行default的语句的代码
1
2
3
4
5
6
7
8
9
10
11
switch (变量) {
case 值:
...
break;
case 值:
...
break;
default:
...
break;
}

三目运算符

1
数据类型 变量名 = 表达式 ? 值1 : 值2;

循环语句

for

1
2
3
for (int i = 起始值; i < 结束值; i++) {
...
}

while

1
2
3
while (循环条件) {
...
}

do…while

1
2
3
do {
...
} (循环条件) while;

break

  • 跳出1级
1
2
3
for (;;) {
break;
}
  • 通过标签跳出多级
1
2
3
4
5
6
outer:
for (;;) {
for (;;) {
break outer;
}
}

continue

  • 跳过本次循环,继续下一次循环

终止程序

1
System.exit(0);

完成