//boolean表达式为true则会⼀直执⾏
while(布尔表达式){
//循环执⾏的内容
}
# 如下是死循环:
public static void test1(){
int i = 10;
while (i<20){
System.out.println("我是循环被执行了i="+i);
i++; // i = i+1;
}
System.out.println("循环结束,i="+i);
}
do{
//循环执⾏的内容
}while(布尔表达式);
# 如下是死循环
public static void test2(){
int i = 20;
do{
System.out.println(" do while 我是循环被执行了i="+i);
i++;
}while (i<20);
System.out.println("do while 循环结束,i="+i);
}
while的话⼀定需要满⾜条件才会执⾏
do while的话,会先执⾏⼀次循环内容,再判断是否继续执⾏
for(初始化; 布尔表达式; 更新变化条件){
//循环执⾏的内容
}
//例⼦
for(int i=0; i<20;i++){
System.out.println(i);
}
# 循环过程如下:
* “初始化” ⼀般是初始化⼀个变量,只执⾏⼀次,也可以是空语句
* 接着判断 “布尔表达式”,如果为true,则执⾏循环内容;为false则终⽌循环
* “更新变化条件” 执⾏循环内容后,更新循环控制变量
* 再次检测 “布尔表达式”,如果为true,则执⾏循环内容;为false则终⽌循环
for(声明变量类型:被遍历的集合或者数组){
//循环内容
}
//例⼦
public static void test2(){
String [] array = {"monkey","dog","cat","bird","tiger"};
for(String str : array ){
System.out.println("动物类型="+str);
}
}
break 关键字
跳出当前层的循环体,执⾏循环体下⾯的语句
# 如下
public static void test1(){
String [] array = {"monkey","dog","cat","bird","tiger","fish"};
for(String animal : array){
System.out.println("当前的动物是="+animal);
//字符串比较是否相等,不能用 ==,应该是用 equal方法
if("cat".equals(animal)){
System.out.println("发现cat了");
break;
}
}
System.out.println("循环结束");
}
# 控制台
当前的动物是=monkey
当前的动物是=dog
当前的动物是=cat
发现cat了
循环结束
continue 关键字
跳过当前循环,执⾏下⼀次循环, (忽略当前循环内容,直接执⾏下⼀次)
# 如下
public static void test2(){
String [] array = {"monkey","dog","cat","bird","tiger","fish"};
for (String animal:array){
if("cat".equals(animal)){
System.out.println("发现cat了");
continue;
}
System.out.println("当前的动物是="+animal);
}
System.out.println("循环结束");
}
当前的动物是=monkey
当前的动物是=dog
发现cat了
当前的动物是=bird
当前的动物是=tiger
当前的动物是=fish
循环结束
//如果布尔表达式为true,则执⾏花括号⾥⾯的内容,如果语句体只有⼀句,则花括号可以不写,但是推荐写
if(布尔表达式){
//语句体
}
# 如下
int age =10;
if(age<20){
System.out.println("年龄小于20岁");
}
- if else 语句的使⽤,如果if条件为false,则else⾥⾯的内容会被执⾏
if(布尔表达式){
//语句体
}else{
//语句体
}
# 如下
int age =20;
if(age<20){
System.out.println("年龄小于20岁");
} else {
System.out.println("年龄大于或者等于20岁");
}
- if else if else 语句的使⽤,⽤于判断多个条件
if(布尔表达式1){
//语句体
}else if(布尔表达式2){
//语句体
}else if(布尔表达式3){
//语句体
}else if(布尔表达式4){
//语句体
}else{
//语句体
}
# 如下
int age = 45;
if(age<10){
System.out.println("年龄小于10岁");
} else if(age>=10 && age <=20){
System.out.println("年龄大于等于10岁,小于等于20岁");
} else if(age>=21 && age<=30){
System.out.println("年龄大于等于21岁,小于等于30岁");
}else {
System.out.println("年龄大于31岁");
}
if 语句⾄多有 1 个 else 语句,可以0个else,且else 语句在最后,类似前⾯的都不成功,最后⼀定执⾏
if 语句可以有多个 else if 语句,它们必须在 else 语句之前
如果其中⼀个 else if 语句为 true,其他的 else if 以及 else 语句都将跳过执⾏
可以在if else⾥⾯嵌套多层if else
# 如下
int age = 30;
if(age > 10){
if(age > 18){
// 语句体
if(age>25){
// 语句体
}else{
// 语句体
}
}else{
// 语句体
}
}else{
// 语句体
}
switch(表达式){
case 表达式常量1:语句1;
break;
case 表达式常量2:语句2;
break;
// ......
//可以有任意数量的case语句
case 表达式常量n:语句n;
break;
default : //可选
//语句
}
# 如下
public static void main(String [] args){
int day = 10;
String content = "";
switch (day){
case 1: content="周一";
break;
case 2: content="周二";
break;
case 3: content="周三";
break;
case 4: content="周四";
break;
case 5: content="周五";
break;
default:
content="无效数字";
}
System.out.println(content);
}
Switch和if语句都是Java的选择语句,这两种都是允许在程序运⾏时控制程序的执⾏过程
switch 语句可以拥有多个 case 语句,每个 case 后⾯跟⼀个常量和冒号
default就是如果没有符合的case 就执⾏它,default并不是必须的
当遇到break语句时,switch语句终⽌。程序跳转到switch语句后⾯的语句执⾏
case语句不必须包含break语句, 没有break语句,程序会执⾏下⼀条case语句,直到出现break语句为⽌
jdk7之前 switch的case语句⽀持int,short,byte,char类型的值,jdk7后⽀持String类型
static 修饰的⽅法或变量,优先于对象执⾏,所以内存有会现有 static修饰的内容,后有对象的内容
可以⽤来修饰类的成员⽅法、类的成员变量,还可以编写static静态代码块
修饰变量就是类变量,修饰⽅法就是类⽅法
总结: 类变量或者类⽅法,可以直接通过类名.⽅法名或者变量名进⾏调⽤,不⽤经过对象
# 如下
public class Student{
static int age;
static String name;
// 类方法
public static void sleep(){
}
}
和⾮静态变量的区别是,静态变量被所有的对象所共享,在内存中只有⼀份,它当且仅当在类初次加载时会被初始化。⾮静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有d 的副本互不影响
static成员变量的初始化顺序按照定义的顺序进⾏初始化
不依赖于任何对象就可以进⾏访问,类名.⽅法名
不能访问类的⾮静态成员变量和⾮静态成员⽅法
注意事项:
静态⽅法不能直接访问⾮静态变量
静态⽅法当中不能使⽤this
核⼼:⼀个类⾥⾯ static修饰的不能访问⾮static修饰的成员或者⽅法,⽽⾮static修饰的可以访问static修饰的成员或者⽅法
//静态变量
static int age;
//静态⽅法
public static int getAge(){
return 5;
}
加载类的时候,静态代码块会被执⾏⼀次,且只能执⾏⼀次
静态内容优先于⾮静态内容,所以静态代码⽐构造⽅法先执⾏
使⽤场景:⽤来⼀次性对静态成员变量进⾏赋值,或者类资源初始化等操作
public class 类名{
static {
//静态代码块
}
}
# 如下
public class Student {
static String sex;
static int age;
static {
sex = "男生";
System.out.println("静态代码块被执行了");
}
}