猿进化系列3——看完这个,你就有好几根猴毛了!

2020-07-28 16:35:37 浏览数 (1)

搞定上一章节,你已经成功地入坑java,在进化成猿类的路途中,迈出了一大步。这一步有多大呢?嗯,很大,确实很大....嗯...你已经长出几根猴毛了
莫要忽悠我,今天你要不拿点真东西出来,看我不

今天,猿人工厂君就教你点真的东西,马上就告诉你一个程序世界的大秘密——

不管是啥语言,程序都是按照语句的顺序一行一行执行的!虽然代码看起来和鬼画符差不多,但是这些鬼画符是按照先后次序一行一行执行的!不信你看下面的结果

程序按照语句在程序中的先后次序一条一条的顺次执行,这种执行结构叫顺序结构。

如果...我写了打印“我是第2行”,但是我又不想让它执行,你有没什么办法哇?

看我的,小case:

等等,那个红框里的是个什么鬼?居然让我辛辛苦苦写的代码不行执行?哈哈,你不是不想打印“我是第二行”吗?猿人工厂君使用了控制语句,所谓控制语句就是用来改变程序的执行顺序,让程序按照我们设定的顺序去执行,从而达到控制程序的目的,以实现程序的各种结构。一般来讲,控制语句分为条件判断、选择、循环、跳出等语句

上面那个红框就是中的东西就是条件判断语句

看清楚它的写法

它的含义是假如关系表达式成立(括号后的结果为true),就执行大括号里的语句。上面的执行条件太简单,你好可以搞复杂一点

敲完代码不许点执行,自己先写出答案,答错的自己回去看三遍猿人进化系列2!!!

顺便说一下,假如大括号里的语句只有一句,大括号可以省略,程序默认将执行距离关键字最近的一行代码,但是个人推荐写大括号,不要偷懒,小心bug.

等下等下,我现在改主意了,我想执行语句2,但是不想执行语句3肿么办?哈哈,找你的“二姨夫”吧

看清楚了,if...else...的写法

改造代码瞬间搞定!

假如关系表达式成立(结果为true),就执行大括号里的语句1,否则就执行else 后大括号里的语句2。还是那句话,不要偷懒,以免发生悲剧。

哈哈,我不想执行第二句,也不想执行第三句也又办法了。

这样写就可以了

就弱弱的问一句,还有其他办法木有?

哈哈,其实还有另一个办法——

先判断第一个条件判断,如果满足就执行语句1,并且不再执行后面的判断条件,如果不满足就执行判断条件2,如果满足就执行语句2,并且不再执行后面的判断条件..一直到n,只要满足就执行,并且不再执行后面的判断条件,如果都不满足,就执行最后的else里的语句。

看了这么多了,该换我来考考你了,还记得上一章节的三元表达式吧?
int a=10;

int b=12;

int d=0;

d=(a>b)?a:a b;

尝试下在不改变程序含义的情况下,使用if-else改写d=(a>b)?a:a b;(先动手,以后给出答案)

注意:三元语句绝大多数情况下都是可以用if else语句改写的,编写代码推荐if else 讲三元是为了大家理解语法。

我再来考考你,在程序中有一个变量a,当a的值为1的时输出“我是第1行”,当a的值为2时输出“我是第2行”,当a的值为3时输出“我是第3行”,已此类推,一直到第5行!

不要低估了我的智商!看我的!

骚年!要是输出10行:

在这个世界上,其实有一种语句叫做选择语句,其实还有一种操作——switch!

switch语法:将表达式里的值和case依次比较,一单表达式里的值和case的值相等,就执行后面的语句。如果在中途遇到break语句则结束。如果所有的case和表达式里的值不相等,就会执行default里的语句,然后结束程序。

1.表达式的值可以是byte,short,int,char,enum(枚举)类型,jdk7之后可以支持字符串。

2.default语句可以不写。

3.一定记得每个case最后写上break;否则程序会执行满足条件后的所有case!

轻松搞定!想知道不写break的后果吗?去掉吧,自己试试!

特别提醒:switch语句和if 语句可以互相转换,编写代码的时候大家尽量用if 把结构层次写清楚(也不要搞成街霸2.0),代码一看就明白,之所以讲switch,是为了让各位掌握语法结果,看懂代码,实际工作还是慎用吧。

小练习

switch (a) {

case 1: {

System.out.println("a=a" a);

}

case 2: {

System.out.println("a=a" a);

}

default: {

System.out.println("a=a" a);

}

}

将上面的switch修改正确,让每个合法输入 只会执行一个方法体里的语句。

小伙儿,我们来玩耍一个新的游戏——输出10000行,“猿人工厂,我爱你”

猿人工厂君,你——

机智如我怎么可能被难倒?打开excel,输入System.out.println(“猿人工厂,我爱你”);向下拉动到10000行,复制粘贴即可!

我擦,还未变成一只猿类就已经深谙猿类的身存知道,随身自带天生猿类秘籍CVS大法——

那现在打印10000000行试试?我擦,excle拉到底也拉不出!

哈哈,其实是有办法解决的,计算机最擅长的事情就是快速的做重复的事情,循环语句了解下!

循环语句

for循环语句

表达式1:初始化循环变量

表达式2:判断是否满足循环条件,如果满足条件,程序执行循环体语句(大括号内的语句),如果不满足,则跳出循环。

表达式3:给初循环变量做增量或者减量,以达到控制循环体执行次数的目的。

下面给出一个例子,计算从1到100的整数和。

循环语句2--while

100以内的整数和还可以这样写

while(布尔表达式){

需要执行的语句1;

需要执行的语句n;

循环控制语句;

}

do...while

do{

需要执行的语句n;

循环控制语句;

}while(布尔表达式);

执行流程:先执行一次循环体内的语句,然后判断是否满足条件。如果满足就执行循环体语句,不满足就结束循环。

你确定是正确的?当然是错的!While和do...while最本质的区别就是 do...while 会先”do”一次!所以会多加了一个——她

小练习:使用for,while,do...while分别计算100以内的偶数和。

跳出语句

小伙儿,看情形循环的写法你已经掌握得差不多了,下面来两个简单的问题玩耍下:

1. 输出100以内的第一个奇数,然后终止程序运行。

2. 输出100以内的第二个偶数,然后终止程序运行。

这个so easy!!!

System.out.println(2);

System.out.println(4);

不许使用人脑计算!写程序!哈哈,这下不会了吧,马上给你介绍一个武器——跳出语句!

break:跳出当前循环体

continue:程序结束本次循环,继续执行下一次循环

循环需要特别注意的地方
死循环

小伙儿,给你一个机会,见识点新东西,下面这段代码允许你CVS一把,运行下试试,

int i=0;

for(;;){

if(i%2==0){

continue;

}else if(i%5==0){

break;

}

System.out.println(i);

}

i ;

}

注意噢,for循环的三个表达式是可以不写的,只是把控制变量放在方法体里了,个人不推荐使用,大家了解就好。

恭喜你,中奖了!知道滋味了吧!生命不息,代码不止!!!

死循环:循环条件永远为true,程序会一直执行循环体。但是有些场景需要让程序阻塞住,会使用死循环实现,后面遇到再说。

想想看怎样修改代码才能让程序正确运行?

嵌套循环

哈哈,又来新东西了,上面个图形用循环语句打印出来看看吧。

算了直接给你代码吧

for(int i=0;i<10;i ){

for(int j=10;j>i;j--){

System.out.print("*");

}

System.out.println("");

}

}

没见过呢?这个就是嵌套循环。所谓嵌套循环,是指一个循环的循环体是另一个循环。当然,不止两层,你想又多少层就可以套多少层^_^

代码是给你了,不要忘记了下面的小练习:

把倒三角修改为打印正三角。

方法

不知道你发现没有,我们每次实现一个小功能的时候都需要创建一个新的类,新写一个方法,这样搞下去编写代码非常的繁琐,而且重复的代码过多。能否避免这些重复的代码呢,就需要使用方法来实现。

所谓方法,就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。

当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。

方法的定义

返回值类型: 目前固定写法 void ,其他返回值类型在后面的课程讲解。

方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法。

参数列表: 目前无参数, 带有参数的方法在后面的课程讲解。

return:方法结束。如果没有返回值那么方法的类型是void,方法大括号内的return可以不写。

修饰符: 目前固定写法 public static 。

方法的调用

方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在主方法中,直接写要调用的方法名字就可以调用了。

我们看下面这个例子:计算长方形的面积

那怎么调用呢?

那如果我想保留计算结果,被其它地方使用怎么办?

0 人点赞