10天写一篇技术文章 | Java中所有语句都是简单组成的

前言:读懂语句,从流程控制语句开始;
读懂Java,从深入理解基础开始。

深入理解流程控制语句目录选择:

1.Java中最简单的语句是

  • 方法调用语句
  • 赋值语句,注意分号(;)
    代码实战:
System.out.println("Hello, Java !");
a = 3+x ;
b = a>0?a:-a;
c = TextBox1.getText();
d = Integer.parseInt(s)

分别是
方法调用语句用来输出字符串
赋值语句用来对a进行赋值
先方法调用语句,然后赋值语句。用来取a的绝对值,然后赋值给c
现方法调用语句,然后赋值语句。用来把s字符串转为Int数据类型整数。

注意:如下x + y单独的表达式语句是不合法的,因为既不是赋值,也不是方法调用。

2.Java的三种注释方式中最特殊的注释方式是:

/**doc*/,除此之外,当然最常见的单行注释和多行注释。

3.大括号也是很重要的

首先要理解变量的作用域是什么?
基本概念:复合语句由简单语句嵌套而成,嵌套的工具是大括号:{},可以使用大括号来实现原来只能放置一条语句的地方防止多条语句。那么其中的作用域怎么解决呢?
涉及到面向对象语言Java与C++不同的点:

public static void main(String[] args)
{
 int a;
 expression1;
 {
  int a;
  int b;
 }
}

这样写在C++面向对象中是合法的,其中内层的b会在内层起作用,但是Java规定这是不合法的,也就是说在嵌套的块作用域内,不能声明同名的变量。

4.Java中规定的的三种合法的if写法分别是,可以背下来:

if (condition) statement;

和

if (condition)
 {
  statement1;
  statement2;
 }
else
 {
  statementN;
 }

所以总结else是可选部分,if是必须部分,下面把else 与 if 结合起来。

if (condition)
 {
  statement1;
  statement2;
 }
else if (conditionM)
 {
  statementM;
 }
else (conditionN)
{
  statementN;
}

5.当我们想要在满足某个条件下重复执行某个动作时怎么?

规定的Java规则:

while(condition)
{
 expression;
 anti-condition;
}
循环体内用 anti-condition 一个来控制走出循环的条件。

6.可是我们希望先执行一次循环体再看是否进入循环体怎么办?

规定的Java规则:

do{
 expression;
}
while (condition);
读作:
先用do执行expression,然后判断一次while其中的条件,如果满足
再次进入循环,循环一次,出来判断条件condition,然后满足条件继续
执行,不满足条件condition,执行完成本循环体。

7.迭代循环:

Java规则:

public class Main {
	public static void main(String[] args) {
		System.out.println("Hello, I'm Java 鸡脚!");
		for(int i=10;i>0;i--)
            System.out.println("加载时间:"+ i + "秒");
        System.out.println("哎呀,卡住啦!");
	}
}
for循环读作:
声明变量i初始值,声明i>0是执行循环体内语句的条件,然后声明初始i控制条件的语句,
成功满足执行循环条件,那么就执行循环体,然后执行一次循环体,就问i的条件是否还满足,满足
就继续执行,不满足就执行完for循环语句,顺序执行下一条语句。
注意,其中i的作用域再定义后就天生属于整个大括号内的循环体,这是它的作用域。

image
注意,Java也规定了For循环本身就是while循环的简化,所以两者没有本质区别。

8.如果Java中我们想把满足不同条件执行不同语句的规则简化怎么办?

原来是if/else语句的组合,因为Java建立者嫌麻烦,就使用Switch。
Java规则:

switch (choose)
{
 case const1: //这里必须是冒号哦。
  ...;
  break;
 case const2: //这里必须是常量表达式哦。
  ...;
  break;
 case const3: // 这里数据类型可以是byte,char,short,int。
  ...;
  break;
 case const4: //所有允许的数据类型还有enum和String常量哦。
  ...;
  break;
 default:
  expression;
  break
}
读作:如果choose==const1,那么就执行其中块的语句,然后执行到break,跳出这个switch语句;
如果choose==const2,那么就执行其中块的语句,然后执行到break,跳出这个switch语句;
如果choose==constN,那么就执行其中块的语句,然后执行到break,跳出这个switch语句;

注意到其中如果没有写break,会造成继续执行下面可能满足情况的const,但是java又没有自动检查这种方法,那可以使用

  • java规则的语句:
javac -Xlint:fallthrough class.java

这样,任何一个分支没有break,那么就会弹出警告信息。

@SuppressWamings("fallthrough")
switch()句型
{}

@SuppressWamings("fallthrough")使用可以强制在外围方法取消生成警告fallthrough(直通式可能错误警告。)

9.如果我们想从比较多比较深的嵌套中跳到特定的地方,就可以使用Java专门提供的标签跳转:

使用作用分别是循环跳出+标签跳转:

Love_Forever: //读作for循环的标签。
for(){
	while()
	{
		switch()
		{
			const1:
				int a;
				break Love_Forever;
		}
	}
}
break Love_Forever;直接跳到了外面标签,代表跳出这个标签表示的循环。

10.Contine和Breake可以造成的效果是相同的,所以不过多的加以理解和区分。

后记:暂时实在找不到关于java控制语句的安全问题,和java控制流程的安全性问题,后继需要补充吧。
理解方面现在40%,还可以加强。

posted @ 2022-08-24 19:13  Haparm  阅读(14)  评论(0)    收藏  举报