4.流程控制与数组
来源:互联网 发布:linux dd seek 编辑:程序博客网 时间:2024/04/29 08:37
1.顺序结构
很简单,就是程序从上到下执行,没有任何判断和跳转;
2.分支结构
1).if条件语句
a.if语句的一个非常需要重视的注意点,就是关于else的含义,其实else 的含义是"否则",其隐含条件是对前面的条件取反;
int age = 45;if(age>20){ System.out.println("x");}else if(age>40){ System.out.println("xx");}else if(age>60){ System.out.println("xxx");}等价于:
int age = 45;if(age>20){ System.out.println("x");}//在原本的if条件中增加了else的隐含条件if(age>40 && !(age>20)){//相当于age>40 && age<=20,永远不满足 System.out.println("xx");}//在原本的if条件中增加了else的隐含条件,即把前面的条件都取反if(age>60 && !(age>20) && !(age>40 && !(age>20)) ){//相当于age>60 && age<=40,永远不满足 System.out.println("xxx");}
正确写法:int age = 45;if(age>60){ System.out.println("xxx");}else if(age>40){ System.out.println("xx");}else if(age>20){ System.out.println("x");}等价于:
int age = 45;if(age>60){ System.out.println("xxx");}//在原本的if条件中增加了else的隐含条件if(age>40 && !(age>60)){//相当于age>40 && age<=60 System.out.println("xx");}//在原本的if条件中增加了else的隐含条件,即把前面的条件都取反if(age>20 && !(age>60) && !(age>40 && !(age>60)) ){//相当于age>20 && age<=40 System.out.println("xxx");}
总结:使用if...else语句时,总是优先把包含范围小的条件放在前面处理,一定要先处理包含范围更小的情况!!!2).switch语句
a.语法:
String season = "春天";switch (season){ case "春天" : System.out.println("x"); break; case "夏天" : System.out.println("x"); break; case "秋天" : System.out.println("x"); break; case "冬天" : System.out.println("x"); break; default: System.out.println("x");}b.注意点:
第一:switch的表达式支持类型:byte,short,char,int,String,枚举类型;
第二:case后面一定要加break;
3.循环结构
1).while循环
a.使用while循环时,一定要保证循环条件有变成false 的时候,不然会死循环;
2)do while循环
a.do while循环与while循环的区别:while循环是先判断循环条件,如果条件为true,则执行循环体;而do while是先执行循环体,再判断循环条件,若为true,执行下一次循环,否则终止循环;
3)for循环
for(初始化语句;循环条件;循环迭代语句){ 循环体}a.初始化语句只在循环开始前执行一次;
b.每次执行循环体前,下计算循环条件的值,若为true,则执行循环体;
c.循环体结束后,只需循环迭代语句;
注意点:
a.for循环可以同时制定多个初始化语句,循环条件也可以是一个包含逻辑运算符的表达式;
b.初始化若有多个变量,应该具有相同的数据类型;
c.不要在循环体内修改循环变量(循环计数器),如果要用,可以定义临时变量进行赋值;
d.for循环圆括号里面只有两个分号是必须的,其他都是可以忽略的,但是都忽略的话,就会产生一个死循环;
4)嵌套循环
4.控制循环结构
1).用break结束循环
a.在循环体中遇到break,系统会完全结束该循环,开始执行循环之后的代码;
b.break语句不仅可以结束其所在的循环(不需要标签),还可以直接结束其外层循环(需要标签);
c.标签:一个紧跟冒号":"的标识符
//外层循环,outer作为标识符outer:for(int i=0;i<5;i++){ //内层循环 for(int j=0;j<3;j++){ if(j == 1){ //跳出outer标签所标志的循环 break outer; } }}d.也可以把标签放在break语句所在的循环,但没有意义,因为break默认就是结束其所在的循环;所以,标签必须在break语句所在循环的外层循环之前定义才有意义;
2)用contine忽略本次循环剩下语句
a.continue只是忽略本次循环剩下语句,接着开始下一次循环,并不会终止循环;而break则是完全终止循环本身;
b.所以,如果把continue放在单次循环的最后一行,没有任何意义------因为相当于忽略了一片空白;
3)使用return结束方法
a.直接结束一个方法!
5.数组
1)数组定义
a.所有的数组元素具有相同的数据类型;
b.数组也是一种类型,从这个角度看,数组有无数种类型,因为自定义类都是生成一个对应的数组类型,比如:Person[]类型;
c.既然数组也是一种类型,则定义的时候也是用new的方式:type[] arr = new type[]{xx,xxx,xxxx};
2)定义数组
a.type[] arrayName
3).数组的初始化
a.静态初始化;
int[] intArr = new int[]{1,2,3,4,5};简化静态初始化:
int[] intArr = {1,2,3,4};
b.动态初始化;
int[] intArr = new int[5];注意:
执行动态初始化后,制定数组的长度后,系统会为数组元素分配初始值,规则:
数组元素类型是byte,short,int,long > 0
数组元素类型是float,double > 0.0
数组元素类型是char > '\u0000'
数组元素类型是boolean > false
数组元素类型是引用类型 > null
4).使用数组
a.通过数组下标使用;
5).foreach循环
注意:使用foreach时,每个循环变量相当于一个临时变量,系统会把数组元素依次赋给这个临时变量,而这个临时变量并不是数组元素,所以如果希望改变数组元素的值,不能使用foreach循环;因此,不要对foreach的循环变量进行赋值操作;
6.深入数组
1)内存中的数组
2)基本类型数组的初始化
3)引用类型数组的初始化
4)多维数组?
a.理解多维数组:
type[][] arrName:比如int[][],前面已经讲过了,int[]就是一种类型,可以把它当成一个整体,暂时叫A,那"A[]"不就是元素类型是A类型的一个一个一维数组么!
b.初始化多维数组时,可以只指定最左边维的大小也可以一次指定每一维的大小;
int[][] intArr = new int[4][];//同时初始化两个维度int[][] intArr2 = new int[3][4];c.静态初始化:
Sring[][] str1 = new String[][]{new String[3],new String[]{"hello"}};//简化String[][] str2 = {new String[4],new String[]{"hello"}};
5).工具类Arrays
a.如果a数组和b数组的长度相等,并且数组元素也一一相等,则返回true;
boolean eauals(type[] a,typep[] b)
b.数组元素进行升序排序;
void sort(type[] a);
c.把original数组复制成一个新数组,length是新数组的长度,如果length小于original数组的长度,则新数组是原数组的前length个元素;如果大于,多出来的补充0或0.0或'\u0000'或false或null
type[] copyOf(type[] original,int length):
总结:如果操作数组,可以多使用Arrays工具类;
1 0
- 4.流程控制与数组
- 流程控制与数组
- 流程控制与数组
- 流程控制与数组
- 流程控制与数组
- 流程控制与数组
- 流程控制与数组
- 流程控制与数组(数组)
- (2) 流程控制与数组
- java流程控制与数组
- 一、流程控制与数组
- 三 流程控制与数组与数组
- 流程控制与数组(控制循环结构)
- JAVA笔记:流程控制与数组
- Java笔记----3. 流程控制与数组
- 第三章,流程控制与数组
- 流程控制与数组(分支结构)
- 流程控制与数组(goto语句)
- CaysnPrinter安卓平台开发包接口说明文档及打印示例程序
- 数据库入门(增删查改)
- CentOS安装Nginx
- 最长递增子序列
- 任务安排问题(贪心法)
- 4.流程控制与数组
- AIDL实现步骤及注意事项
- 对于用Powermock编写的测试用例,sonar中单元测试覆盖率统计不正确的问题
- PLA算法matlab程序 & 神经网络工具箱的使用
- cookie和session有什么区别
- C++ 如何让类对象只在堆或栈上创建
- 那些被岁月遗忘的 UNIX 经典著作
- JAVA数据库相关
- 迷宫的最短路径(局限版)