第一阶段
14、控制结构
1、switch(表达式){
case 常量:
}
表达式数据类型应该和常量的数据类型一致,或可以自动转换成可以相互比较的类型
表达式返回值必须是byte、short、int、char、enum、String
case中必须是常量,不能是变量
break语句用来执行完一个case分支后跳出switch语句,如果没有,程序会自动执行到switch结尾
2、for循环
循环初始值可以有多条初始化语句,但是要求类型一致,并且中间用逗号隔开
3、do while循环
do{
}while();
先执行,再判断,一定会执行一次,
4、多层循环控制
只有内层循环的循环条件是false时,会跳出内层循环,才可结束外层循环的当次循环
5、random():返回带正号的double值,该值大于等于0.0小于1.0
6、跳转控制语句break:终止某个语句块的执行
(1)break出现在多层嵌套的语句中时,可以通过标签指明要终止的是哪一层的语句块
(2)标签的使用:
label1:
for(int i=0;i<4;i++){
label2:
for(int i=0;i<10;i++){
if(i==3){
break label 1;
}
System.out.println("i =" + i);
}
}
(3)break语句可以指定退出哪一层
break后指定到哪一个label就退出到哪里
若没有指定break,默认退出最近的循环体
7、跳转控制语句continue:结束本次循环,继续执行下一次循环
可通过标签指明跳出的是哪一层循环
8、跳转控制语句return:跳出所在的方法
15、数组
1、存放多个同一类型的数据,数组是引用数据类型
例如:double[] hens={1.1,2.2}
2、使用方式1-动态初始化
数据类型 数组名[]=new 数据类型[大小]
int a[]=new int[5]
使用方式2-动态初始化
声明数组:int a[]
创建数组:a=new int[10]
使用方式3-静态初始化
int a[5]={1,2,3,4,5}
3、注意细节
数组中的数据类型可以是任何数据类型,但是不能混用;
数组创建后若没有赋值,有默认值:char \u0000
数组属于引用类型,数组型数据是对象
数组在默认情况下是引用传递,赋的值是地址
例如:int[] arr1={1,2,3}
int[] arr2=arr1
此时是将arr1指向的地址赋值给了arr2,修改arr2中的内容也会修改了arr1中的内容
若要进行数组拷贝,且要求数据空间独立,可以先开辟独立的数组空间:
例如:int arr2[]=new int[arr1.length]
for(int i=0
arr2[i]=arr1[i]
}
4、数组添加
例如:int[] arr={1,2,3}
int[] newArr=new int[arr.length+1]
for(int i=0
newArr[i]=arr[i]
}
newArr[arr.length]=4
arr=newArr
16、排序
内部排序:将所有数据加载到内部存储器排序,交换式排序法、选择式排序法、插入式排序法
外部排序:数据量过大,无法加载到内存中,借助外部存储排序,合并排序法、直接合并排序法
17、查找
1、顺序查找; 2、二分查找
18、二维数组
1、int[][] arr={{1,2,3,0},{1,2,3,3}}
原来的一维数组的元素仍然是一个一维数组,构成二维数组
2、动态初始化-列数不确定
允许二维数组中的每个一维数组的元素个数不同
例如:
int[][] arr=int[3][]
for(int i=0
arr[i]=new int[i + 1]
//遍历一维数组,并且给一维数组中的每个元素赋值
for(j=0
arr[i][j]=i+1
}
}
3、声明方式:
int[][] y
int[] y[]
int y[][]
19、类与对象
1、类->数据类型
对象->具体的实例
2、private关键字:
被private修饰的成员只能在类内使用
3、this关键字
成员变量:定义在方法外,类里面
局部变量:定义在方法内
就近原则:成员变量和局部变量同名时,使用就近原则;
若要使用成员变量,则使用this.xxx
例如:
private int age;
public void setName(int age){
this.age=age;
}
4、构造方法:创建对象时给成员变量初始化
修饰符 类名(参数){
方法体;
}
(1)构造方法名必须与类名一致;
没有返回值类型和void;
没有具体的返回值;
(2)创建对象时由虚拟机调用,不能手动调用构造方法;
每创建一次对象,调用一次构造方法
(3)自己没有定义,系统默认给出无参的构造方法;
自己定义,系统不再提供默认的构造方法;
一旦定义有参构造器,无参构造器就没有了,此时需要自己写无参构造器
(4)构造方法重载:带参和不带参的构造方法,两者方法名相同,但是参数不同
5、标准javaBean
(1)成员变量用private修饰
(2)至少两个构造方法:空+全参
(3)成员方法必须要有提供每一个成员变量的setX()getX()方法
6、Syestem.out.printf("");
两部分参数:第一部分是要输出的内容%s(占位)
第二部分是填充的数据
System.out.printf("你好%s","张三");
Syetem.out.println();
7、键盘录入
(1)遇到空格、制表符、回车就停止接受,这些符号后面的数据就不再接受了:
nextInt();接收整数
nextDouble();接收小数
next();接受字符串
例如:
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个整数");
int num1=sc.nextInt();
System.out.println(num1);
System.out.println("请输入第二个整数");
int num2=sc.nextInt();
System.out.println(num2);
如果输入时123 123
则输出为num1=123
num2=123
(2)遇到空格、制表符会接受,但是遇到回车会停止接收数据
nextLine();接收字符串
注意:(1)(2)不能混用,先用nextInt,再用nextLine会导致nextLine接收不到数据