程序的三种基本结构:
- 顺序结构:代码按照顺序从上至下逐行运行
- 选择分支结构:基于顺序结构,根据某种条件选择性执行某些代码
- 循环结构:基于顺序结构,根据某种条件,重复执行某些代码
结论:
程序的整体执行时顺序结构
选择分支结构和循环结构,更适合做处理数据
if结构
语法:
if(条件){ //代码块 } 说明: if在java中是"如果"的意思 条件的结果是boolean类型数据 如果条件为真值,就执行代码块 如果条件为假值,执行if结构的右大括号后面的代码 语法: if(条件){ //代码块1 }else{ //代码块2 } 说明: if条件的结果为boolean 如果条件结果是真值,就执行代码块1 如果条件结果是假值,就执行代码块2 最终只能选择某一个代码执行 if嵌套: if中嵌套if-else else中嵌套if-else if(性别==女){ //是女的 if(age>60){ //是女的且age>60 }else{ //是女的且age<=60 if(weight>300){ //是女的,小于60岁,weight>300 if(身价过亿){ //是女的,weight>300,身价过亿 } }else{ //是女的小于60岁且体重小于300斤 if(很丑){ //是女的小于60岁体重小于300,长得丑 }else{ if(很穷){ //是女的小于60岁体重小于300,长得不丑,但是穷 } } } } }else{ //是男的 }
switch结构:
语法:
switch(表达式){
case 常量1:
代码块
break;
case 常量2:
代码块
break;
.....
default:
代码块
break;//default放在最后,此break可以省略
}
说明:
表达式:表达式的结果类型,只能是整型数据,字符型数据,枚举类型,也可以是字符串类型,但必须注意jre版本
jre版本1.7及以上 switch的表达式可以使用字符串
jre版本1.6及以下 switch的表达式不能使用字符串类型
注意:虽然使用的jre的1.7以上,但编译设置为1.6,同样不能使用字符串
常量:整型,字符型,枚举类型,字符串
代码块:是符合常量时,需要执行的代码块,可以是多行代码,但一定不要用大括号
break:是终止的意思,如果执行到break语句,那么终止当前的switch结构,执行后面的语句
如果没有break语句,那么找到符合的常量的时候,执行对应的代码块,执行完代码块后,后续常量对应的代码块中 的代码一并执行,直到碰到break语句跳出switch结构
default:
如果没有任何一个case常量符合,则执行default后代码块
default块可以放在switch中的任何位置,不能放在case中,default和case是平级关系,但一般情况下, default放在switch的最后,且break可以不写
循环结构:
- 循环结构一定是有规律的.没有规律的是不能用循环的
- 循环就是重复的执行一段代码,最好根据某种条件退出循环
- 循环要慎用,因为循环最两份cpu时间
- 要用循环,就尽量减少循环次数
循环的分类:
- while循环
- do while循环
- for循环(普通for循环和增强for循环)
while循环:
语法:while(条件){ 循环体代码块 }
说明:
循环体代码块: 完成某一个特定功能的若干代码 一定是有规律的 条件:
可以是逻辑表达式,也可以是关系表达式,但表达式结果一定是boolean类型
读或写循环的技巧:
要完整的推导出来前三次循环的规律
如果在推倒的过程中,记不住步骤,建议写在纸上和电脑的记事本上
循环的三要素:
- 循环变量的初值:用于记录循环次数,达到一定的循环次数就退出循环
- 循环变量的终值:用于判断何时推出循环
- 循环变量的增量或减量:没有增量或减量就是死循环
while(条件)和while(true)的区别
while(条件){
//此循环是否退出,取决于条件
//一般情况下有固定的循环次数,用此循环
}
while(true){
//没有明确的循环次数
//一定要配合一个if使用,根据if条件来决定何时推出循环
if(条件){
break;//终值当前循环
return;//直接终止当前循环所在的方法,直接退出当前方法
}
}
- do-while: 侧重至少执行一次循环,然后才判断条件
- while:侧重先判断条件,条件成立才执行循环体
- for循环:
语法:
for(数据的初始化;条件;循环变量的增量或减量){ //循环体代码块 }
说明:
数据的初始化:可以定义多个变量,中间用”,”间隔,但类型必须是同一种类型
且在第一次循环的时候执行一次
条件表达式:
可以是关系表达式,也可以是逻辑表达式,总之结果是boolean类型,且表达式有且只有一个.
条件为真值则进入循环体,条件为假值,则退出循环
循环变量的增量或减量:
当循环条件为真值,执行循环体
然后执行循环变量的增量或减量
然后判断条件表达式是否为真值
如果为真,则继续循环体
然后还是执行循环变量的增量或减量
如此往复
知道循环条件为假,则退出循环
执行for循环后面的语句
break:终止
break用在switch中,用于退出或终止switch结构,继续执行switch结构后面代码
break可以用在循环中(while,do while,for)
用于退出当前循环,继续执行当前循环结构后面的语句
break能够改变程序的执行流程
continue:继续
continue只能用在循环中,用于结束当前的循环,继续执行下一次循环
三元运算符:
语法: 类型名 变量名=(条件表达式)? 表达式1 : 表达式2; 说明: 条件表达式的结果为boolean类型 条件表达式为真值,则把表达式1的结果赋值给变量名 条件表达式为假值,则把表达式2的结果赋值给变量名 表达式1和表达式2的结果类型必须相同,且跟变量的类型相同 三元运算符的本质就是一个if-else 比如:
int totalPage = (totalConut%pageSize==0) ? (totalCount/pageSize): (totalConut/pageSize)+1
等价于:
if(totalPage%pageSize==0){
totalPage=totalConut/pageSize
}else{
totalPage=totalConut/pageSize+1
}
switch和if的区别:
- 都是分支结构
- if结构更适合做范围判断,也能做等值判断
- 所有的switch结构,都可以用if来替换,不是所有的if结构都能用switch替代
java的方法:
为什么需要方法:就是为了代码的重用,对于程序员来说,写一次可以使用多次.
- 有利于程序的维护
- 有利于程序功能的扩展
- 有利于满足单一职责,每个方法只做一件事,符合此原则,复用率高
- 提高开发效率
结论:一个好的程序 满足:
- 可复用性高
- 可维护性
- 可扩展性 方法的语法: 方法的返回数据类型 方法的名称(参数列表){ //方法代码块 return 返回数据; } 说明: 方法的返回数据类型:可以使任意的已知的类型 比如:八种数据类型,String类型 还有后续的类类型
注意:有一个特殊的类型 void void代表无类型
方法的名称:可以有程序员自定义任何名称,但必须见名知意 必须符合骆驼命名法 比如:
public String getName();
public void setName(String name);
参数列表:
必须放在小括号中,参数的个数可以是0或者多个
参数之间用”,”间隔,但也不能太多,多个的标准没有固定的数值,定义方法的人和调用方法的人统一
public int sum(int a,int b)
方法体:
是由若干java代码组成,能够完成某一种功能
一般情况下,方法体功能的简称就是方法的名称
如果参数列表中有参数,那么就可以在方法体中使用参数的数据,但是在方法体外不能使用方法中的参数
return 返回数据:
返回数据的类型,就是方法的返回类型,两者之间类型必须一致
返回数据只能返回一个数据,不能返回多个数据
如果需要返回多个数据,就把多个数据打包
打包的方式:
用数组的方式打包
用类来打包
返回数据可以省略,只有return关键字,那么方法的返回必须是void类型,如果返回类型是void
那么return关键字可以省略
语法:
return返回数据
return;
不写return关键字
return的说明:
上面的写法,不一定非要写在方法的最后一条语句
方法体中可以写多个return关键字,并放在方法体中的任意位置
如果在方法体中出现了return关键字,并执行到此关键字
相当于结束(终止)方法的执行
如果return带有返回数据,相当于结束或终止方法的执行,同时并返回数据
结论:
return是结束方法的执行,如果有数据就返回数据