目录
- 1、变量
- 1.1 变量声明
- 1.2 类变量与实例变量
- 1.3 变量初始化
- 2、数据运算
- 2.1 算术运算
- 2.2 赋值运算
- 2.3 比较运算
- 3、条件语句
- 3.1 条件语句
- 3.2 多重条件(switch)
- 4 循环语句
- 4.1 while循环
- 4.2 do while循环
- 4.3 for循环
1、变量
1.1 变量声明
Java变量是用于存储数据的一种命名内存位置。在Java中,每个变量都有一个特定的数据类型,比如:整数、浮点数、布尔值等。
在Java中,变量的使用必须先进行声明,指定变量的名称和类型。声明变量后,可以给它赋予特定的值,并随后在程序中引用和操作该值。
变量声明时的命名规则,需要遵循一定规则:
- 变量名包含字母、数字和下划线,且以字母或下划线开头。
- 变量名区分大小写。
- 避免使用Java关键字作为变量名。
- 变量名应具有描述性,能清楚表达变量的用途。
变量声明:
// 单个变量声明
int a;
// 多个变量声明
int i,j,k;
1.2 类变量与实例变量
在Java中,变量可以根据其所属的上下文和作用域分为两种类型:静态变量(类变量
)和实例变量
。
静态变量(类变量):
- 静态变量属于类本身,而不是类的任何特定实例。
- 它们在类加载时创建,存在于整个程序的生命周期中。
- 静态变量使用
static
关键字进行声明。 - 所有该类的实例共享相同的静态变量。
- 静态变量可以通过类名直接访问,无需创建类的实例。
- 通常用于存储与类相关的共享数据。
public class Main{
// 静态变量声明
private static int a;
public static void main(String[] args) {
// 直接使用静态变量
a= 10;
System.out.println(a);
}
}
实例变量:
- 实例变量属于类的实例(对象),每个对象都有自己的一份。
- 它们在创建对象时分配内存,并随着对象的销毁而被销毁。
- 实例变量不使用 static 关键字进行声明。
- 每个对象都有自己的实例变量副本,彼此独立。
- 实例变量需要通过对象引用来访问。
public class Main{
// 变量声明
private int a;
public static void main(String[] args) {
Main m = new Main();
// 使用实例变量
m.a= 10;
System.out.println(m.a);
}
}
1.3 变量初始化
在变量声明后,如果要使用该变量,必须先进行初始化操作,否则会导致运行时程序报错,比如以下错误的使用:
// 变量声明
int a;
// 直接使用未初始化的变量,会导致报错
System.out.println(a);
在进行初始化操作时,可以直接声明时初始化,也可以声明后赋值初始化。
- 直接初始化:在声明变量的同时,使用赋值操作符将初始值赋给变量。
int a = 10;
System.out.println(a);
- 赋值初始化:在使用变量前,再对变量进行初始化。
int a;
a = 10;
System.out.println(a);
2、数据运算
Java提供了多种运算符,用于执行各种操作,包括算术运算、赋值运算、比较运算、逻辑运算等。以下是Java中常见的运算符类型:算术运算符、赋值运算符、比较运算符、逻辑运算符
2.1 算术运算
- 算术运算符:用于执行基本的数学运算。
+
:加法-
:减法*
:乘法/
:除法%
:取模(取余)
在算术运算符
中,如果使用/(除法)
时,两个操作数都是整数结果也是整数,比如:
int a = 10/3; // 结果为3,而不是3.33333.....
当操作数的类型不同时,那么就会进行数值类型之间的转换,比如:
double v1 = 100.22d / 100;
float v2 = 100.22f / 100;
long v3 = 100L / 100;
转换基本规则如下:
- 如果,存在一个数据类型为double类型,则结果会转换为double类型;
- 否则,存在一个数据类型为float类型,则结果会转换为float类型;
- 否则,存在一个数据类型为long类型,则结果会转换为long类型;
2.2 赋值运算
- 赋值运算符:用于将值赋给变量。
=
:赋值--
:自减赋值,例如:x--
; 等价于x = x - 1
;++
:自增赋值,例如:x++
; 等价于x = x + 1
;+=
:加并赋值,例如:x += 5
; 等价于x = x + 5
;-=
:减并赋值,例如:x -= 3
; 等价于x = x - 3
;*=
:乘并赋值,例如:x *= 2
; 等价于x = x * 2
;/=
:除并赋值,例如:x /= 4; 等价于
x = x / 4`;%=
:取模并赋值,例如:x %= 3
; 等价于x = x % 3
;
赋值运算是常用的一类运算符,因为可以直接对变量进行运算和赋值,比如:
int a = 10;
a+=5; // 结果为:15
a++; //结果为: 16
a--; //结果为: 15
a-=5; // 结果为:10
2.3 比较运算
- 比较运算符:用于比较两个值的关系,并返回布尔值。
==
:相等!=
:不相等>
:大于<
:小于>=
:大于等于<=
:小于等于
- 逻辑运算符:用于组合和操作布尔值。
3、条件语句
3.1 条件语句
在Java中,条件语句用于根据给定的条件来控制程序的执行流程,主要为:if
、if else
、else if
;
- if语句:使用 if 关键字来执行单一条件的判断,如果条件满足(即为真),则执行特定的代码块。
int a = 1; if (a > 0) { System.out.println("this is true"); }
- if-else语句:除了执行满足条件的代码块,还可以在条件不满足时执行另一组代码块,使用 else 关键字。
int a = 1; if (a < 0) { System.out.println("this is true"); }else{ System.out.println("this is false"); }
- else if语句:用于在多个条件之间进行判断。如果第一个条件不满足,将依次检查后续的 else if 条件,直到找到满足的条件为止。
int a = 1; if (a < 0) { System.out.println("this is a < 0"); }else if(a == 0){ System.out.println("this is a == 0"); }else if(a == 1){ System.out.println("this is a == 1"); }else{ System.out.println("this is a > 1"); }
需要注意的是,存在多个if else
时else
子语句与最近的if
构成一组条件,比如:
1. int a = 1;
2. if (a < 0) {
3. if(a < -10){
4. System.out.println("this is a < -10");
5. }else{
6. System.out.println("this is a >= -10");
7. }
8. }else{
9. System.out.println("this is a >= 0");
10. }
在这里,出现了多个if else
,并且从第3行~第7行
使用了if else
子语句,因此第三行的if
与第五行的else
为一组条件语句。
3.2 多重条件(switch)
switch语句:
适用于在多个可能值之间进行选择,并根据选择执行相应的代码块。每个 case 表达式后面必须跟着一个 break 语句,以避免执行其他 case 中的代码。
通过switch语句
可以解决使用过多if else if
带来的代码冗余,switch语句
将目标值与case
值进行比较,满足条件则执行,并且使用break
语句结束当前语句,如果没有匹配到case
,则执行default 子句
。
case 标签可以是:
- 类型为 char、byte、 short 或 int 的常量表达式。
- 枚举常量。
- 从 Java SE 7开始, case 标签还可以是字符串字面量。
if else if
与switch case
对比:
if else if 写法:
int a = 3;
if (a == 0) {
System.out.println("a==0");
} else if (a == 1 || a == 2) {
System.out.println("a==1 || a==2");
} else if (a == 3) {
System.out.println("a==3");
} else {
System.out.println("a > 3");
}
switch case写法:
int a = 3;
switch (a) {
case 0:
System.out.println("a==0");
break;
case 1:
case 2:
System.out.println("a==1 || a==2");
break;
case 3:
System.out.println("a==3");
break;
default:
System.out.println("a > 3");
}
需要注意的时
switch case
不支持范围比较,比如a<0
,无法通过switch case
进行实现
4 循环语句
在Java中,循环语句用于重复执行一段代码,直到满足特定的条件。Java提供了几种类型的循环语句:for循环、while循环、do-while循环
。
循环语句的使用允许我们重复执行特定的代码块,可以根据条件灵活地控制循环的次数。在循环中,通常需要使用适当的控制语句(如break和continue)来提前终止循环或跳过当前迭代。谨记在循环中更新循环变量,以避免进入无限循环。
4.1 while循环
在未知循环次数但需要先检查条件的情况下使用,只要条件为真,循环就会一直执行,在执行前就需要满足判断条件,可以使用
break
跳出循环。
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
int i = 0;
while (true) {
if(i>=5){
// 结束while语句
break;
}
System.out.println(i);
i++;
}
4.2 do while循环
类似于while循环,不同之处在于先执行一次循环体,然后再检查条件,只要条件为真,循环会继续执行,会先执行一次,然后再判断是否满足条件,满足则继续循环执行,可以使用
break
跳出循环。
int i = 0;
do{
System.out.println(i);
i++;
}
while (i < 5);
int i = 0;
do{
if(i>=5){
// 结束while语句
break;
}
System.out.println(i);
i++;
}
while (true);
4.3 for循环
在已知循环次数的情况下使用,通过指定循环变量的初始值、循环条件和每次迭代后的更新操作来控制循环执行。
for循环
由三部分组成:初始值、判断条件、迭代部分,当初始值
满足判断条件
时则执行一次迭代部分
语句,比如:
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
在上面的循环语句中:
- ①:
int i = 0
为初始值; - ②:
i < 5
为判断条件,如果满足则执行System.out.println(i);
- ③:当执行代码块后,又执行
i++
,进行迭代 - ④:循环第 ②、③两个步骤,直到不满足判断条件后,自动退出循环
break与continue:
- break:跳出循环,结束当前的for循环语句;
- continue:满足执行条件下,不执行当前代码块的逻辑,直接执行
迭代部分
比如,以下语句同时存在break与continue
,并且执行结果为0、1、3
for (int i = 0; i < 5; i++) {
if(i==2){
// 不继续往下执行,直接执行`迭代部分`
continue;
}
if(i==4){
// 结束整个循环体,即使满足条件也不再执行for循环中的逻辑
break;
}
System.out.println(i);
}
for语句
无限循环写法,类似于while(true)
for(;;){
System.out.println("无限循环");
}