Java代码结构简述
结构
顺序结构
- JAVA的基本结构就是顺序结构,除非特意指明,否则就按照顺序,一句一句执行。
- 顺序结构是最简单的算法结构
- 语句与语句之间,框与框之间按照从上到下的顺序执行,它是任何算法都离不开的基本算法结构
选择结构
- if单选择结构
- if双选择结构
- if多选择结构
- 嵌套的if结构
- switch多选择结构
if选择结构
if单选择结构
很多时候需要判断一个东西是否可行,然后才去执行,这样一个判断在程序中用if语句来表示。
语法:
- equals(比较字符):判断字符串是否相等
这是举例说明if单选择的例图,就是看是否和输入的字符串相同
代码如下:
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
if (s.equals("hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
if双选择结构
语法:
假如我要判断某个人考了多少分,算及格还是不及格,可以写如下一串代码:
import java.util.Scanner;
public class IfDemo02 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if(score>=60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
scanner.close();
}
}
例图:
这就是if双选择结构,true有一个结果,false也有一个结果。
if多选择结构
语法:
F=false,T=true
else if在if和else中间承接。
举例如下,依旧是上一个例子,不过对细节进行了细化。
但是分数假如是小数,使用int会报错,因此改为double或float
嵌套的if结构
- 使用嵌套的if……else语句是合法的。也就是说可以在if或else if中使用if或else if语句,可以像if语句一样嵌套else if……else。
- 语法:
switch多选择结构
- 多选择结构除了if和嵌套if之外的另一种实现方式就是switch case语句。
- switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
语法:
- switch中的变量类型及注意事项:
- 变量就是byte、short、int、char等八大基本类型
- 从Java SE 7开始,switch支持字符串String类型的变量
- 同时case标签必须为字符串常量或字面量
case 穿透
switch 匹配一个具体的值
break 可选,停止循环
default 就是在上面的case中找不到传入的值,会默认执行的语句
基本类型的展示
写完一个case后如果并不想它都出现在所有情况下后面要加上break将它们分割开,需要穿透叠加操作时就可以不写break。
比方说我这里选定的是C,却同时输出了C与D,但是没有输出E,因为break将E隔开了。
字符串的展示
这里我就将字符串与default的功能展示了出来
题外话
class 字节码文件
class文件没法儿直接看懂,可以使用开发工具进行反编译,比方说idea
- 首先如何查看已写的代码生成的class文件呢?
可以在idea社区版右上角的设置里打开项目结构,就能看到输出文件夹的位置
- 将文件夹打开,找到自己想要进行反编译的class文件
- 随后打开代码行的文件夹,将想要反编译的class文件拖进去,就能看到想要反编译的class文件的代码内容了
- 也可以通过直接将class文件拖入idea实现上述操作
循环结构
- while循环
- do while循环
- for循环
- 主要用于数组的增强型for循环
while循环
while是最基本的循环,语法为:
- 只要布尔表达式为true,循环就会一直执行下去
- 大多数情况会让循环停止,需要一个让表达式失效的方式来结束循环
- 少部分情况需要循环一直执行,比如服务器的请求响应监听等
- 循环条件一直为true就会造成无限循环(死循环),正常的编程中应该尽量避免死循环。死循环会影响程序性能或造成程序卡死崩溃!
接下来进行一个输出1~100的循环:
public class WhileDemo01 {
public static void main(String[] args) {
//输出1~100
int i=0;
while (i<100){
i++;
System.out.println(i);
}
}
}
我这里给了i<100的限制,因此i到了99就会停止执行,输出结果为100
死循环就是没有进行限定的,这样的格式:
加法的运算:
do while循环
- 对于while语句而言,如果不满足条件则不会进入循环。do…while循环和while循环类似,不同的是,do…while至少会执行一次。
语法:
- while是先判断后执行,do…while是先执行后判断。
刚刚那个1+2+3+…+100=?的例子同样也能用do…while执行,并且执行结果没有区别。
但是当我进行这样一串代码后就能明显看出两者的差别:
public class DoWhileDemo02 {
public static void main(String[] args) {
int a=0;
while (a<0){
System.out.println(a);
a++;
}
System.out.println("=================");
do {
System.out.println(a);
a++;
}while (a<0);
}
}
中间的“=”是我用来做分割的文本。
很显然,“=”前为空,表示了while并没有执行输出a这个行为,而do…while执行了一次,因此输出了基础赋予的0的值,但因为没有满足条件,没有输出接下来的a++给予的赋值。
for循环
- 虽然所有循环都可以用while,do…while循环来表示,但java中还有一种语句:for循环——使一些循环结构变得更加简单
- for循环语句是支持迭代的一种通用循环结构,是最有效最灵活的循环结构
- for循环的执行次数是在执行前就确定的,语法格式如下:
虽然和while循环一样需要初始化,条件判断与迭代,但是for循环的整体结构更为直观,对比如下:
关于for循环的说明:
- 最先执行初始化步骤,可以声明一种类型,可初始化一个或多个循环控制变量,也可以是空语句。
- 检测布尔表达式的值,如果为true,循环体被执行,如果为false,循环终止,开始执行后续语句。
- 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
- 再次检测布尔表达式,循环执行上面的过程。
这个代码即为for循环的死循环,无初始值,无条件判断与迭代:
for ( ; ; ){
}
for循环的展示
println输出完会换行,print输出完不会换行!!!
假如我要用for循环输出1~1000之内能被5整除的数,并且每行输出3个,就可以这样输入:
嵌套for循环的展示
输出九九乘法表:
public class ForDemo04 {
public static void main(String[] args) {
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {//i<=9会有重复输出,因此这里i<=j去掉重复的输出
System.out.print(j+"*"+i+"="+(j*i)+" ");//用 进一格
}
System.out.println();//System.out.print("
")换行
}
}
}
增强for循环
增强for循环的语法:
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
- 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
如下这串代码,上面的是普通for循环,下面的是增强for循环,实现的操作是一样的,都是将数组中的每个值都输出一遍。- for循环:numbers[i]中i是次数,从numbers数组中取值的次数,就是取值了5次numbers中的数值
- 增强for循环:直接将数组的值赋予x
- 本质一样,但是增强for更加简化
public class ForDemo05 {
public static void main(String[] args) {
int[]numbers={10,20,30,40,50};//定义数组
for (int i = 0; i < 5; i++) {
System.out.println(numbers[i]);
}
System.out.println("===================");
for (int x:numbers){//遍历数组元素
System.out.println(x);
}
}
}
输出结果如下:
goto关键字
- 关于goto关键字:
- goto关键字很早就在程序设计语言中出现。尽管goto仍然是java的一个保留字,但并未在语言中正式使用,java没有goto。然而,在break和continue这两个关键字的身上,仍然能看出一些goto的影子——带标签的break和continue。
- “标签”是指后面跟一个冒号的标识符,例如: label:
- 对java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
- break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
- continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。