1494 字
7 分钟
Java语言基础知识2

第四节.运算符#

1.仅补充%

System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
System.out.println(-10%-3);//-1

2.前置++与后置++

可以理解为+号在前面就先加,加号在后面就不加

int a = 1;
int b = ++a;
int c = a++;
System.out.println(b); //2
System.out.println(c); //1
//但要注意
a=a++; //1,与c++不同

3.关系运算符

< , > , <= , >= ,== 返回值:true or false;

4.逻辑运算符

运算符作用示例结果
&&逻辑与(都为真才真)true && falsefalse
``逻辑或(有一个真就真)
!逻辑非(取反)!truefalse

逻辑与

1.两个表达式必须都是布尔表达式

2.如果第一个表达式为假,那么就不会执行第二个表达式

逻辑或

1.两个表达式必须都是布尔表达式

2.只要有一个为真,那么整体为真

3.假设第一个为真,那么第二个就不会执行

逻辑非

1.作用在布尔表达式

& 和 | 如果表达式结果为 boolean 时,也表示逻辑运算,但与 && || 相比,他们不支持短路求值,

如果两边不是布尔表达式,那么还是按位与 按位或操作

System.out.println(10 > 20 & 10 / 0 ==0)l; //程序输出异常
System.out.println(10 < 20 | 10 / 0 ==0)l; //程序输出异常

他们逻辑符号两侧都会执行

5.位运算符

按位与

00001010
00010100
---------
00000000

按位或

00001010
00010100
---------
00011110

按位异或:如果该位为 0 则转为 1,如果该位为 1 则转为 0

注意:

1.左移1位,相当于原数字 *2,左移N位,相当于原数字 *2 的N次方.

2.右移1位,相当于原数字 /2,右移N位,相当于原数字 /2 的N次方.

3.偶遇计算机计算位移效率高于计算乘除,当某个代码正好乘除 2 的N次方的时候可以用位移运算代替.

4.移动负数位或者移位位数过大都没有意义.

第五节.循环语句#

  1. for 循环

适合:已知次数的循环

for (int i = 1; i <= 5; i++) {
System.out.println("第 " + i + " 次执行");
}

执行结果:打印 1 到 5。


  1. while 循环

适合:不知道循环次数,但有一个条件控制

int i = 1;
while (i <= 5) {
System.out.println("第 " + i + " 次执行");
i++;
}

和上面的效果一样。

  1. do...while 循环

至少执行一次,再判断条件。

int i = 1;
do {
System.out.println("第 " + i + " 次执行");
i++;
} while (i <= 5);

while 的区别是:

- `while`:先判断,再执行。
- `do...while`:先执行,再判断。

4. switch语句

适合选项

switch(表达式){
case 常量值1:{
语句1;
[break;]
}
case 常量值2:{
语句2;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}

多个case后的常量值不可以重复

switch的括号内只能是以下类型的表达式:

  • 基本类型:byte、char、short、int,注意不能是long类型
  • 引用类型:String常量串、枚举类型

第六节.数组(Array)#

  1. 什么是数组?
  • 数组就是 一组相同类型的数据 的集合。
  • 它可以用一个名字存放多个数据,并通过 下标(索引) 来访问。

例子:

int[] scores = {95, 88, 76, 100};
System.out.println(scores[0]); // 输出第一个元素 95
System.out.println(scores[3]); // 输出第四个元素 100

👉 注意:数组的下标是 从 0 开始 的。

  1. 数组的声明与初始化

数组的初始化主要分为动态初始化以及静态初始化

1. 动态初始化:在创建数组时,直接指定数组中元素的个数

int[] array = new int[10];

2. 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定

语法格式: T[] 数组名称 = {data1, data2, data3, …, datan};

int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = new String[]{"hell", "Java", "!!!"};

【注意事项】

静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。

静态初始化时, {}中数据类型必须与[]前数据类型一致。

静态初始化可以简写,省去后面的new T[]。

3.数组初始化内容

类型默认值
byte0
short0
int0
long0
float0.0f
double0.0
char/u0000
booleanfalse
  1. 遍历数组

用循环来访问数组的所有元素:

int[] arr = {10, 20, 30, 40, 50};
for (int i = 0; i < arr.length; i++) {
System.out.println("第 " + (i+1) + " 个元素:" + arr[i]);
}

这里 arr.length 表示数组的长度。

5.二维数组

数据类型[][] 数组名称 = new 数据类型 [行数][列数];
数据类型[][] 数组名称 = new 数据类型 [][] { 初始化数据 };
数据类型[][] 数组名称 = new 数据类型 [行数][];

补充对二维数组是一维数组的深度理解

int[][] array ={{1,2,3},{4,5,6}};
System.out.println(array.length); //2
System.out.println(array[0].length);//3
System.out.println(Arrays.toString(array[1])); //[4, 5, 6]
String ret = System.out.println(Arrays.deepToString(array));
System.out.println(ret); //[[1,2,3],[4,5,6]]

其中array的底层为图中所示

数组补充内容#

1. 找最大值和最小值#

思路:

  • 假设第一个元素是最大/最小值。
  • 遍历数组,依次比较更新。
int[] arr = {12, 45, 7, 89, 23};
int max = arr[0];
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
System.out.println("最大值:" + max);
System.out.println("最小值:" + min);

2. 倒序输出数组#

有时我们希望反过来输出:

int[] arr = {1, 2, 3, 4, 5};
for (int i = arr.length - 1; i >= 0; i--) {
System.out.print(arr[i] + " ");
}

👉 这个思路也能用于「数组反转」。

3. for each遍历(增强 for 循环)#

Java 提供了简化的遍历写法(但不能改变数组里的值):

int[] arr = {10, 20, 30};
for (int num : arr) {
System.out.println(num);
}

4. 多维数组(二维数组)#

二维数组 = 表格。
比如存放学生成绩(3 个学生,每人 2 门课):

int[][] scores = {
{90, 85},
{70, 88},
{100, 95}
};
System.out.println(scores[0][1]); // 第1个学生的第2门课成绩 85
Java语言基础知识2
https://sirens007.github.io/posts/javase2/
作者
Sirens007
发布于
2025-09-16
许可协议
CC BY-NC-SA 4.0