【笔记】Java学习笔记

前言

Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。(维基百科

编译器

编译并生成字节码文件

1
javac <file>.java

通过JVM运行字节码文件

1
java <file>

反编译字节码文件

1
javap <file>.class

主方法

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

注释

1
// 单行注释
1
/* 多行注释 */
1
2
3
/**
* 文档注释
*/

输出语句

传送门

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

输入语句

接收单个单词的字符串

  • 多组数据用空白字符分隔
1
String str = new Scanner(System.in).next();

接收多个单词的字符串

  • 多组数据用换行符分隔
1
String str = new Scanner(System.in).nextLine();

变量

  • Java中的基本类型变量保存在栈中,引用类型变量保存在堆中

  • 命名规则

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

声明变量

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

定义变量

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

变量赋值

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

常量

定义常量

  • 通过final关键字修饰的变量不可改变
1
final 数据类型 常量名 = 值;
  • Java的常量可以先声明再赋值,常量只有首次赋值会成功,之后赋值会失败
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 = '';

boolean h = false;

进制表示

  • 描述二进制的数值,需要以0b开头
1
byte binary = 0b1;
  • 描述八进制的数值,需要以0开头
1
byte octal = 07;
  • 描述十六进制的数值,需要以0x开头
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;

数据类型转换

隐式类型转换

  • 不同类型整型类型数据通过算数运算符运算,会自动转换为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 + "";

运算符

算术运算符

  • +(正号)、-(负号)
  • +(加号)、-(减号)、*/%
  • ++(自增)、--(自减)

关系运算符

  • ><>=<===!=

逻辑运算符

  • &&||!

赋值运算符

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

按位运算符

  • &|^~<<>>>>>
1
2
byte a = 1 ^ 0;
byte b = ~1;

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

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

分支语句

if语句

1
2
3
if (布尔表达式) {
布尔表达式成立时执行的代码;
}
1
2
3
4
5
if (布尔表达式) {
布尔表达式成立时执行的代码;
} else {
布尔表达式不成立时执行的代码;
}
1
2
3
4
5
6
7
if (布尔表达式1) {
布尔表达式1成立时执行的代码;
} else if (布尔表达式2) {
布尔表达式2成立时执行的代码;
} else {
以上布尔表达式都不成立时执行的代码;
}
1
2
3
4
5
if (布尔表达式1) {
if (布尔表达式2) {
布尔表达式12都成立时执行的代码;
}
}

switch语句

  • Java的switch语句具有穿透行为,在每个case语句中,必须使用break跳出seitch语句
1
2
3
4
5
6
7
8
9
10
11
switch (变量名) {
case1:
变量值为值1时执行的代码;
break;
case2:
变量值为值2时执行的代码;
break;
default:
变量值不为以上任何值时执行的代码;
break;
}

循环语句

while语句

1
2
3
while (布尔表达式) {
布尔表达式成立时反复执行的代码;
}

do…while语句

1
2
3
do {
布尔表达式成立时反复执行的代码
} while (布尔表达式);

for语句

1
2
3
for (int i = 起始值; 布尔表达式; i++) {
布尔表达式成立时反复执行的代码;
}

break关键字

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

continue关键字

  • 结束当前循环,开始下一次循环
1
2
3
while (true) {
continue;
}
  • 通过标签跳出多级循环,开始下一次循环
1
2
3
4
5
6
outer:
while (true) {
while (true) {
continue outer;
}
}

三元运算

1
数据类型 变量名 = 布尔表达式 ? 布尔表达式成立时返回的结果 : 布尔表达式不成立时返回的结果;

终止程序

1
System.exit(0);

完成