| |
| while(布尔表达式){ |
| |
| } |
| |
| # 如下是死循环: |
| public static void test1(){ |
| int i = 10; |
| while (i<20){ |
| |
| System.out.println("我是循环被执行了i="+i); |
| i++; |
| } |
| 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); |
| |
| 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 |
| 循环结束 |
| |
| 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 表达式常量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("静态代码块被执行了"); |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术