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的作用域再定义后就天生属于整个大括号内的循环体,这是它的作用域。

注意,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%,还可以加强。

浙公网安备 33010602011771号