本次主要记录的是基本控制语句、数组两块内容
基本控制语句
在java中,控制语句有顺序结构、选择结构、循环结构三类。而顺序结构我们写一般的代码,一行一行的写下去,就像看书一样,有顺序,一行一页。
本次主要记录的是选择结构和循环结构。
选择结构
选择也称为判断,如果…就…,只有满足条件才执行响应的语句块。
if语句
如果第一个if执行,输出大数,如果第二个if执行,输出小数。有多少个if,就进行几次判断。
1 | int a = (int)(Math.random()*10+1); |
if-else语句
我们把上面的代码改改,变成if-else语句,变量a只需要判断一次,如果if不执行,那么else执行
1 | int a = (int)(Math.random()*10+1); |
if-elseif-else语句
如果我们要输出成绩怎么办,优、良、中、及格、不及格,我们用if和if-elseif-else进行对比。
以下为了方便直观,把判断句的语句块都去掉了,但很容易出现问题。所以请记住,一定要打{}。
1 | int a = (int)(Math.random()*100+1); |
嵌套的if
我们可以在if里再加判断句。
1 | if(布尔表达式){ |
我们用嵌套的if-else来输出成绩
1 | if(a>=90) { |
如果把{}都拿掉,是不是很像if-elseif-else类型。
总结一下if条件语句,如果只满足一个条件才执行,那就用if单条语句,如果判断对立面,那就用if-else语句,如果有多判断多选择,就用if-elseif-else。好像说的废话一样。。。怎么方便怎么用就行。
switch语句
此switch非彼switch,不是游戏机,没有任天堂,就是用来判断的,是多选择语句,和if-else if-else类似。但是switch可以很简单用字符串来判断。你也可以在case里嵌套switch,实现嵌套判断。
1 | String[] game = {"ps4", "xbox", "switch"}; //这是字符串数组,马上讲数组了,而字符串会专门讲,很重要 |
循环语句
只要满足相应的条件,就一直执行下去。
for循环
1 | for(初始值; 循环条件; 循环走向){ |
1 | for(int i=0; i<=10; i++) { |
增强for循环
增强for循环一般只是输出变量的数值。下面打印0~9的数。
1 | int [] a = {0,1,2,3,4,5,6,7,8,9}; |
while循环
while循环只有循环条件,初始值只能在循环体外定义。
下面输出0到10的数
1 | int i=0; |
for和while都是比较常用的循环。
do-while循环
1 | int i=5; |
do-while和while有啥区别呢,那就是do-while第一次无论 有没有满足条件,都先执行一次,而while、乃至for都是先要满足条件才执行。而上面的这段代码,5本来就小于0,而do-while会打印了5,才来判断是否满足条件。
嵌套循环
我们用for和while分别打印乘法表。
1 | for(int i=1; i<=9; i++) { |
当然,如果想输出格式化对齐,最简单的办法就是用C语言的格式输出。
System.out.printf(“%d*%d = %2d “,j,i,i*j);
!、&&、||
当然,它们也是参与布尔表达式的运算,常常在条件语句和循环语句出现,前面也提及过,if()里进行的是布尔表达式,循环里的循环条件也是布尔表达式。我们来一起用用吧。
符号 | 名称 | 说明 |
---|---|---|
! | 非 | 肯变否,否变肯 |
&& | 与 | 全真才真 |
|| | 或 | 全假才假 |
条件语句经常和循环语句一起使用,我们来看看下面的例子。
1 | //输出1000年到2999年之间有多少闰年 |
1 | int a = 2, b = 3, c = 0; |
break和continue
break是强制退出循环,不执行剩余的内容;而continue是跳过本次循环的内容。
下面是嵌套循环,在j==3进行了处理,break每次到j==3时,跳出内循环,进行下一次外循环。而continue是跳过本次内循环,进行下一次内循环。
1 | for(int i=1; i<5; i++) { |
在C语言中,有一个语句叫goto,很少用,因为太调皮了。能够从一个语句跳转到另一个语句,用起来很爽,但太乱了,所以java中就只成为保留字,没有任何意义。但是,break和continue却有点像goto,不执行接下来的语句,执行另外的语句,只是限制在了循环里。而它只是不执行内循环接下来的语句,如果我们也不想执行外循环接下来的语句呢?
1 | a:for(int i=1; i<5; i++) { |
也差不多实现和goto一样的意思,想跳哪就去哪,只是限制在循环里的操作。如果里面的判断再多点,估计也就像goto一样看不懂了,所以我感觉自己玩玩挺好的,真正拿来写代码,那有点得罪人的意思了。
数组
当存在多个相同数据类型的变量,我们用x1,x2,x3,x4…进行数据操作时效率太低,因此才有了数组。数组分为一维数组在,和多维数组,我们最常用的应该就是一维数组在和二维数组。而这个维度,指的只是空间的增多而已。一维只是一行元素,二维在一维的每个元素又拉出来一列,构成一个矩阵。三维也是只在每行每列的每个元素又来出来一纵,构成一个像魔方一样的立体。四维也就只是再在每个元素又拉出一行元素,以此类推。
数组的声明和赋值
好像有三种吧。但好像我一般只用两种。
一维数组
第一种是声明数组类型和长度,然后赋值。
1 | //数组声明 |
第二种是声明数组类型写内容
1 | int []a = new int[] {0,1,2,3,4,5,6,7,8,9}; |
第三种是直接写内容
1 | int []a ={0,1,2,3,4,5,6,7,8,9}; |
二维数组
1 | int [][]a = new int [3][]; //告诉编译器二维数组有三行,每行多少个就看你自己写的 |
1 | int [][]a = new int[][] {{0,1,2},{0,1,2,3,4},{0,1}}; |
二维数组也可以像一维数组一样声明和使用,但它列可以是不固定的,有多长看自己的喜爱。但我一般喜欢用固定,方便两层for循环输入数据。
1 | int [][]a = new int[3][4]; |
数组还有多维数组,当然,可不要搞迷糊了。这次就到这里啦。