回顾:
1.循环结构:
3)for:固定次数,应用率高
2.break:跳出循环
continue:跳过循环体中剩余语句而进入下一次循环
3.适用情况:
4.嵌套循环:
循环中套循环,外层走一次,内层走所有次
层次越少越好,break只能跳出一层循环
5.数组:
引用类型,相同数据类型元素的集合
int[] arr = new int[3]; //0,0,0
int[] arr = {3,5,7};
int[] arr = new int[]{3,5,7};
arr[0] = 30;
arr[3] = 80; //数组下标越界异常
System.out.println(arr[arr.length-1]);
for(int i=0;i<arr.length;i++){
arr[i] = 100;
System.out.println(arr[i]);
}
笔记:
1.数组:
7)数组的复制:
7.1)System.arraycopy(a,1,a1,0,4);
7.2)int[] a1 = Arrays.copyOf(a,6);
a = Arrays.copyOf(a,a.length+1); //扩容
8)数组的排序:
8.1)Arrays.sort(arr); //升序
8.2)冒泡排序算法:
8.2.1)五个数冒四轮
8.2.2)每一轮都是从第1个元素开始冒
每一次都是和它的下一个元素比
8.2.3)冒出来的就不再参与比较了
2.方法:
1)封装一段特定的业务逻辑功能
2)方法尽可能的独立,只干一件事
3)方法可以被反复调用
4)减少代码重复,有利于代码的维护,有利于团队的协作
3.方法的定义:
修饰词 返回值类型 方法名(参数列表){
方法体
}
4.方法的调用:
1)无返回值: 方法名(有参传参);
2)有返回值: 数据类型 变量 = 方法名(有参传参);
5.return:
1)return 值; //1.1)结束方法的执行 1.2)返回结果给调用方
2)return; //2.1)结束方法的执行(在某种特殊情况下提前结束方法)
练习:
1.完成经典案例:------------至少两次
1)MaxOfArray--求数组最大值并将其放在最后一个元素的下一个位置
2)BubbleSort--冒泡算法对arr进行升序排列
2.完成课后作业
public static void main(String[] args){
say();
sayHi("zhangsan");
sayHello("zhangsan",26);
double a = getNum(); 输出a
int b = plus(5,6); 输出b
int m=5,n=6;
int c = plus(m,n); 输出c
}
public static void say(){}
public static void sayHi(String name){}
public static void sayHello(String name,int age){}
public static double getNum(){ return 56.789;}
public static int plus(int num1,int num2){
return num1+num2;
}
MethodDemo
方法可以有参也可以无参
-----有参可以使方法更加灵活
System.out. println("Hello");
System. arraycopy(a,1,a1,0,4);
Arrays. sort(arr);
int[] a1 = Arrays. copyOf(a,6);-------有参数
int a = scan. nextInt();
double b = scan. nextDouble();
double c = Math. random();----------无参数
double c = Math.random(); //0.0到0.99999999...
假设random()有参:
double c = Math.random(1,1000);
double c = Math.random(0,99);
double c = Math.random(20,40);
方法可以有返回值也可以没有返回值:
1)无返回值,返回值类型设计为void
2)有返回值,返回值类型设计为特定的数据类型即可
方法执行完之后:
1)若还需要用到方法中的某个数据-----有返回值
2)若不再需要用到方法中的数据-------无返回值
System.out.println("Hello");
System.arraycopy(a,1,a1,0,4);
Arrays.sort(arr);--------------------无返回值
int a = scan.nextInt();
double b = scan.nextDouble();
double c = Math.random();
int[] a1 = Arrays.copyOf(a,6);-------有返回值
各个项目比较通用的方法
冒泡(){
6句话
}
main(){
调存款-----------1行
调取款-----------1行
调转帐-----------1行
调查询余额-------1行
}
void 存款(){
500行
}
void 取款(){------------调验证密码()
500行
}
void 转帐(){------------调验证密码()
1000行
}
void 查询余额(){--------调验证密码()
300行
}
void 验证密码(){
100行
}
int[] arr = {67,23,45,1}; //升序
for(int i=0;i<arr.length-1;i++){ //控制轮
for(int j=0;j<arr.length-1-i;j++){ //控制次
if(arr[j]>arr[j+1]){
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
arr.length-1-i
i=0(第一轮) 比3次
i=1(第二轮) 比2次
i=2(第三轮) 比1次
第一轮:
67和23比,换,23,67,45,1
67和45比,换,23,45,67,1
67和1比,换,23,45,1,67----------67冒出来了
第二轮:
23和45比,不换
45和1比,换,23,1,45,67----------45冒出来了
第三轮:
23和1比,换,1,23,45,67----------23冒出来了
元素数少,排序方式随意
元素数多,排序方式得选一选
1)当数据不同时,用不同的排序方式,效率也是不同的
这30万个数据-------------插入排序最快
另30万个数据-------------冒泡排序最快
另30万个数据-------------快速排序最快
2)有一种排序方式一直是最快的
Arrays.sort(arr);
int[] a = {10,20,30,40,50};
int[] a1 = new int[6]; //0,0,0,0,0,0
for(int i=0;i<a.length;i++){
a1[i] = a[i];
}
a1[0] = a[0];
a1[1] = a[1];
a1[2] = a[2];
a1[3] = a[3];
a1[4] = a[4];
int num = 1;
while(num<=10){
num++;
}
System.out.println(num); //11
int num;
for(num=1;num<=10;num++){
}
System.out.println(num); //11
1.循环结构:
3)for:固定次数,应用率高
2.break:跳出循环
continue:跳过循环体中剩余语句而进入下一次循环
3.适用情况:
4.嵌套循环:
循环中套循环,外层走一次,内层走所有次
层次越少越好,break只能跳出一层循环
5.数组:
引用类型,相同数据类型元素的集合
int[] arr = new int[3]; //0,0,0
int[] arr = {3,5,7};
int[] arr = new int[]{3,5,7};
arr[0] = 30;
arr[3] = 80; //数组下标越界异常
System.out.println(arr[arr.length-1]);
for(int i=0;i<arr.length;i++){
arr[i] = 100;
System.out.println(arr[i]);
}
笔记:
1.数组:
7)数组的复制:
7.1)System.arraycopy(a,1,a1,0,4);
7.2)int[] a1 = Arrays.copyOf(a,6);
a = Arrays.copyOf(a,a.length+1); //扩容
8)数组的排序:
8.1)Arrays.sort(arr); //升序
8.2)冒泡排序算法:
8.2.1)五个数冒四轮
8.2.2)每一轮都是从第1个元素开始冒
每一次都是和它的下一个元素比
8.2.3)冒出来的就不再参与比较了
2.方法:
1)封装一段特定的业务逻辑功能
2)方法尽可能的独立,只干一件事
3)方法可以被反复调用
4)减少代码重复,有利于代码的维护,有利于团队的协作
3.方法的定义:
修饰词 返回值类型 方法名(参数列表){
方法体
}
4.方法的调用:
1)无返回值: 方法名(有参传参);
2)有返回值: 数据类型 变量 = 方法名(有参传参);
5.return:
1)return 值; //1.1)结束方法的执行 1.2)返回结果给调用方
2)return; //2.1)结束方法的执行(在某种特殊情况下提前结束方法)
练习:
1.完成经典案例:------------至少两次
1)MaxOfArray--求数组最大值并将其放在最后一个元素的下一个位置
2)BubbleSort--冒泡算法对arr进行升序排列
2.完成课后作业
public static void main(String[] args){
say();
sayHi("zhangsan");
sayHello("zhangsan",26);
double a = getNum(); 输出a
int b = plus(5,6); 输出b
int m=5,n=6;
int c = plus(m,n); 输出c
}
public static void say(){}
public static void sayHi(String name){}
public static void sayHello(String name,int age){}
public static double getNum(){ return 56.789;}
public static int plus(int num1,int num2){
return num1+num2;
}
MethodDemo
方法可以有参也可以无参
-----有参可以使方法更加灵活
System.out. println("Hello");
System. arraycopy(a,1,a1,0,4);
Arrays. sort(arr);
int[] a1 = Arrays. copyOf(a,6);-------有参数
int a = scan. nextInt();
double b = scan. nextDouble();
double c = Math. random();----------无参数
double c = Math.random(); //0.0到0.99999999...
假设random()有参:
double c = Math.random(1,1000);
double c = Math.random(0,99);
double c = Math.random(20,40);
方法可以有返回值也可以没有返回值:
1)无返回值,返回值类型设计为void
2)有返回值,返回值类型设计为特定的数据类型即可
方法执行完之后:
1)若还需要用到方法中的某个数据-----有返回值
2)若不再需要用到方法中的数据-------无返回值
System.out.println("Hello");
System.arraycopy(a,1,a1,0,4);
Arrays.sort(arr);--------------------无返回值
int a = scan.nextInt();
double b = scan.nextDouble();
double c = Math.random();
int[] a1 = Arrays.copyOf(a,6);-------有返回值
各个项目比较通用的方法
冒泡(){
6句话
}
main(){
调存款-----------1行
调取款-----------1行
调转帐-----------1行
调查询余额-------1行
}
void 存款(){
500行
}
void 取款(){------------调验证密码()
500行
}
void 转帐(){------------调验证密码()
1000行
}
void 查询余额(){--------调验证密码()
300行
}
void 验证密码(){
100行
}
int[] arr = {67,23,45,1}; //升序
for(int i=0;i<arr.length-1;i++){ //控制轮
for(int j=0;j<arr.length-1-i;j++){ //控制次
if(arr[j]>arr[j+1]){
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
arr.length-1-i
i=0(第一轮) 比3次
i=1(第二轮) 比2次
i=2(第三轮) 比1次
第一轮:
67和23比,换,23,67,45,1
67和45比,换,23,45,67,1
67和1比,换,23,45,1,67----------67冒出来了
第二轮:
23和45比,不换
45和1比,换,23,1,45,67----------45冒出来了
第三轮:
23和1比,换,1,23,45,67----------23冒出来了
元素数少,排序方式随意
元素数多,排序方式得选一选
1)当数据不同时,用不同的排序方式,效率也是不同的
这30万个数据-------------插入排序最快
另30万个数据-------------冒泡排序最快
另30万个数据-------------快速排序最快
2)有一种排序方式一直是最快的
Arrays.sort(arr);
int[] a = {10,20,30,40,50};
int[] a1 = new int[6]; //0,0,0,0,0,0
for(int i=0;i<a.length;i++){
a1[i] = a[i];
}
a1[0] = a[0];
a1[1] = a[1];
a1[2] = a[2];
a1[3] = a[3];
a1[4] = a[4];
int num = 1;
while(num<=10){
num++;
}
System.out.println(num); //11
int num;
for(num=1;num<=10;num++){
}
System.out.println(num); //11