1、数组(下)、
1)数组的复制:
------①
int[] a = {10,20,30,40,50,60};
int[] b = new int[6];
System.arraycopy(a,0,b,0,6);
//a:源数组
//0:源数组的起始下标
//b:目标数组
//0:目标数组的起始下标
//6:要复制的元素个数
优点:灵活性好
------②
import java.util.Arrays; //【该行代码在public class 上一行】
int[] a = {10,20,30,40,50,60};
int[] b=Array.copyOf(a,6);
//a: 源数组
//b: 目标数组
//6: 目标数组的长度
// --- 若目标数组长度 > 源数组长度,则末尾补默认值
// --- 若目标数组长度 < 源数组长度,则将末尾的截掉
------③数组的扩容和缩容:
int[] a = {10,20,30,40,50};
a = Arrays.copyOf(a,a.length+1);// 扩容
a = Arrays.copyOf(a,a.length-1);/ /缩容
2)数组的排序
------①升序排列:Arrays.sort(arr);
------②降序排列:将数组进行升序排列然后倒着输出
2、方法
1) 方法:函数、过程
------①作用:用于封装一段特定的业务逻辑功能
------②建议:尽可能独立,一个方法只干一件事
------③可以被反复多次调用
------④减少代码重复,有利于代码维护
------⑤何时用:
一个业务在很多地方使用 --------------------------------- 实现复用
只要是一个独立的功能就一定得抽到方法中 -------- 常规做法
2)方法的定义:五要素
修饰词 返回值类型 方法名(参数列表) {
方法体
}
3)方法的调用:
package day06;
//数组的复制,排序,扩容等案例
import java.util.Arrays;
import java.util.Scanner;
public class ArrayDemo {
public static void main(String[] args) {
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){
arr[i]=(int)(Math.random()*100);
System.out.println(arr[i]);
}
Arrays.sort(arr);
System.out.println("排序后");
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
System.out.println("倒着排序");
for (int i=arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}
/*int[] a={10,20,30,40,50,60,};
a=Arrays.copyOf(a,a.length+1);//扩容
*/
/*
int[] a={10,20,30,40,50,60,70};
int[] b=Arrays.copyOf(a,1000000);
//a,被复制的数组
//b,要被填充的数组
//6,要被填充数组的长度
//若是(填充数组的长度)大于(被复制数组的长度),则在(填充数组的长度)末尾补充默认值;
//若是(填充数组的长度)小于(被复制数组的长度),则将(被复制数组的长度)超出的部分截掉;
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}
*/
/*
int[] a={10,20,30,40,50};
int[] b=new int[6];
System.arraycopy(a,0,b,1,5);
//a被赋值的数组
//0被复制数组的起始下标
//b要填充的数组
//5要复制的元素个数
//1被填充数组的起始下标
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}
*/
}
}
package day06;
//求数组的最大值,并将数组最后一个元素更改为最大值
import java.util.Arrays;
public class MaxOfArray {
public static void main(String[] args) {
int[] arr=new int[10];
for(int i=0;i<arr.length;i++) {
arr[i] = (int) (Math.random() * 100);
System.out.println(arr[i]);
}
//找最大值,最小值,总个数,总分,平均分---都属于统计内容
//统计内容:一定是说有数据都填充好了再进行
int max=arr[0];//假设第一个元素为最大值
for(int i=1;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];//修改最大值为较大的
}
}
System.out.println("最大值为:"+max);
arr=Arrays.copyOf(arr,arr.length+1);//扩容
arr[arr.length-1]=max;//将max赋值给最后一个元素
for (int i=0;i< arr.length;i++){
System.out.println(arr[i]);
}
}
}
package day06;
//方法的创建和调用案例
import java.util.Scanner;
import java.util.Arrays;
public class MethodDemo {
public static void main(String[] args) {
//say();
int[] e=testArray(16);
int num= plus(6343,323);
int a=6343,b=323;
int c= plus(a,b);//11
double d= getNum();//调用并接收
sayHi("沈志辉",21);//有参必须传参,并且数据类型必须匹配
sayHi("张三",10);//------调用时:实参
sayHi("李四",16);
System.out.println("over");
System.out.println(a);//------模拟返回值的后续操作,实际操作中不一定输出
System.out.println(num);//------模拟返回值的后续操作,实际操作中不一定输出
System.out.println(c);
System.out.println(e.length);
}
//有参,有返回值(数组类型)
public static int[] testArray(int num) {
int[] arr = new int[num];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 100);
}
return arr;
}
//有参有返回值
public static int plus(int num1,int num2){
int num=num1+num2;
return num;//返回的是num里面的数据
}
//无参,有返回值
public static double getNum(){
return 8.8;
/*
①方法中必须有return,
②return出现后方法结束执行
③return后面必须跟一个于返回值数据类型相同的数
④调用该方法时,会将return后面的数,返回给调用方
*/
}
//有参无返回值:
public static void sayHi(String name , int age){//---------定义时:形参
if(age>50){
return;
}
System.out.println("大家好,我叫"+name+"今年"+age+"岁了!");
}
//无参,无返回值
public static void say(){
System.out.println("大家好!我叫SZH,今年21岁了");
}
}
无返回值: 方法名(有参传参);
有返回值: 数据类型 变量 = 方法名(有参传参);
3、reyurn
return 值; //1)结束方法的执行 2)返回结果给调用方----------用在有返回值的方法中
return; //2)结束方法的执行-----------------------------------------用在无返回值的方法中
本文含有隐藏内容,请 开通VIP 后查看