1、分支语句(if)
场景:对范围进行判断的时候
语法结构:
a、第一种形式
if(表达式){
语句块;
}
b、第二种形式
if(表达式){
语句1;
}else{
语句2;
}
c、第三种形式
if(表达式1){
语句1;
}else if(表达式2){
语句2;
}
...
else{
语句n;
}
2、分支语句(switch)
场景:等值判断
语法:
switch(变量|表达式){
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
...
default:
语句n;
break;
}
注意:其中常量值可以是整数、字符、枚举,JDK1.7后支持String类型。
现象:case下滑(下坠)。
3、循环语句(while)
场景:不清楚到底循环多少次
语法结构:
while(表达式){
循环体;
迭代变量自增;
}
注意:一定要添加变量自增,否则进入死循环。
死循环:
while(true){
}
4、循环语句(do…while)
语法结构:
do{
循环体;
}while(表达式);
注意:while后有';',do-while循环至少执行一次循环体。
举例:
Scanner sc = new Scanner(System.in);
String answer = "no";
// 向女朋友求婚
do {
System.out.println("嫁给我吧!");
answer = sc.nextLine();
} while (!answer.equals("yes"));
//建议:String判断相等,使用equals方法,不建议用==
//结果输出
System.out.println("结婚!");
总结:while与do-while的区别。
5、循环语句(for)
场景:一般知道循环多少次
语法结构:
for(表达式1;表达式2;表达式3){
循环体;
}
执行顺序:表达式1-->表达式2-->(满足)循环体-->表达式3-->表达式2-->(满足)循环体-->...
注意事项:for()中有且只有两个';'
死循环:
for(;;){
}
举例:
for(int i=100;i<999;i++){
//拆分
//整数相除为整数,浮点数运算为浮点数
int bai = i/100; //百位
int shi = i%100/10; //十位
int ge = i%10; //个位
//判断是否满足水仙花特点
if(i == (bai*bai*bai + shi*shi*shi + ge*ge*ge)){
System.out.println(i);
}
}
嵌套循环:九九乘法表
6、控制语句
a、break
场景:用在switch、循环语句中,跳出循环,结束后面所有循环。
举例:
for(int i=0;i<10;i++){
System.out.println(i + "跑一圈");
if(i==6) break;
}
b、continue
场景:循环语句中,结束本次循环,进入下一次循环。
举例:
for(int i=0;i<10;i++){
System.out.println(i + "下一题");
if(i==6) continue;
System.out.println("next");
}
c、return
场景:方法中,需要返回给调用者一定的结果。
7、数组
a、定义:存储一系列相同数据类型的数据的集合。
b、声明语法结构:
数据类型[] 数组名; -->推荐使用
数据类型 数组名[];
注意:单独声明数组时不能指定数组的长度(即元素的个数)。
c、数组的初始化:
注意:数组一旦初始化,长度不可变;数组未初始化,不能使用。
1)静态初始化
语法:
数据类型[] 数组名=new 数据类型[]{初始值列表}
数据类型[] 数组名={初始值列表}
例:
int[] scores=new int[]{90,85,81,91,70}; //java成绩
int[] scores2 = {70,80,90,100,88};
2)动态初始化
语法:
数据类型[] 数组名=new 数据类型[长度]
例:
int[] scores3 = new int[5];
scores3[0] = 90;
scores3[1] = 98;
scores3[2] = 80;
scores3[3] = 78;
scores3[4] = 89;
定义:索引(下标),指的是数组中元素的编号,Java中下标从0开始。
注意:数组越界异常,空指针。
d、数组操作
1)遍历
例1:
for(int i=0;i<5;i++){
System.out.println(scores[i]);
}
注意:可以使用数据名.length来获得数组的长度。
例2:
//增强for循环,foreach
for(int score:scores){
System.out.println(score);
}
2)取最值
例:
int[] scores={90,89,81,78,22};
int max = 0; //最大值
for(int i=0;i<scores.length;i++){
if(max < scores[i]){
max = scores[i];
}
}
System.out.println("最高成绩为:"+max);
3)排序
例:
Arrays.sort(scores);
e、多维数组。
8、方法
a、定义:方法是把一些相关的语句组织在一起,用于解决某一特定问题的语句块。
b、语法:
[修饰符] 返回值类型 方法名(数据类型1 参数1,…,数据类型n 参数n){
方法体;
return 结果;
}
例:
public static int myAdd(int a, int b){
int c = a + b;
return c;
}
注意:刚开始,建议每个方法前都添加public static修饰符。如果没有返回值,则返回值类型为void,此时可以不加return语句。
概念:形参,实参。
c、值传递
Java里方法的参数传递方式只有一种:值传递。
即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
例:
//不发生变化,基本数据类型不发生变化
public static void myFunction(int a){
a = 10;
}
//发生变化的,引用数据类型传递的是内存地址
public static void myFunction2(int[] a){
a[0] = 8;
}
d、方法重载(overload)
定义:在同一个类中,出现了重名的方法,但是其参数列表不同(参数的个数、参数的类型)。
好处:可以方便程序员调用。
public static int myAdd(int a, int b){
return a + b;
}
public static int myAdd(int a, int b, int c){
return a + b + c;
}
public static short myAdd(short a, short b){
return (short)(a + b);
}