1.方法(method)是程序中最小的执行单元,当重复的代码和具有独立功能的代码可以抽取到方法中,可以提高代码的复用性,可维护性
方法定义:把一些代码打包在一起
方法调用:方法定义后并不是直接运行的,需要手动调用才能执行
2.最简单的方法定义和调用
方法定义格式
public static void 方法名(){
方法体;
}
方法调用格式:方法名();
注:方法必须先定义后调用,否则程序将报错
3.带参数的方法定义和调用
单个参数格式
public static void 方法名(参数){...}
单个参数调用:方法名(参数);
多个参数格式
public static void 方法名(参数1,参数2,...){...}
多个参数调用:方法名(参数1,参数2,...);
注:方法调用时,参数的数量与类型必须与方法定义中小括号里面的变量一一对应,否则程序将报错
形参:形式参数,指方法定义中的参数
实参:实际参数,指方法调用中的参数
4.带返回值方法的定义和调用:方法的返回值就是方法运行的最终结果
带返回值方法定义格式
public static 返回值类型 方法名(参数){
方法体;
return 返回值;
}
带返回值方法的调用格式:直接调用:方法名(实参);
赋值调用:整数类型 变量名=方法名(实参);
输出调用:System.out.println(方法名(实参));
注:在调用处要根据方法的结果,去编写另一段代码时会用到返回值
方法不调用就不执行
方法与方法之间是平级关系,不能互相嵌套定义
方法的编写顺序和执行顺序无关
方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写,如果要编写return,后面不能跟具体的数据
return语句下面,不能编写代码,因为永远执行不到,属于无效代码
5.return关键字
方法没有返回值:可以省略不写,如果书写,表示结束方法
方法有返回值:必须要写,表示结束方法和返回结果
6.方法的重载:同一个类中,方法名相同,参数不同(个数不同/类型不同/顺序不同)的方法与返回值无关
注:顺序不同可以构成重载,但是不建议
7.return和break关键字的区别
return:跟循环没什么关系,跟方法有关,表示结束方法;返回结果
break:跟方法无关,结束循环或者switch的
8.方法调用的基本内存原理
方法被调用后就会进栈执行
9.基本数据类型和引用数据类型
基本数据类型:变量中存储的是真实的数据(数据值是存储在自己空间中的)
特点:赋值给其他变量,也是赋的真实的值
引用数据类型:变量中存储的是地址值,引用指的是使用了其他空间的数据(数据值是存储在其他空间中,自己空间中存储的是地址值)
特点:赋值给其他变量,赋的是地址值
10.方法传递基本数据类型的内存原理
传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值
11.方法传递引用数据类型的内存原理
传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值
数组遍历,按规定输出
import java.util.Random;
public class Test8 {
public static void main(String[] args) {
Random r=new Random();
int arr[]=new int[10];
for (int i = 0; i < arr.length; i++) {
int number=r.nextInt(100)+1;
arr[i]=number;
}
printArr(arr);
}
public static void printArr(int arr[]){
System.out.print('[');
for (int i = 0; i < arr.length; i++) {
if (i== arr.length-1){
System.out.print(arr[i]);
}else{
System.out.print(arr[i]+",");
}
}
System.out.println(']');
}
}
求随机生成的数组中的最大值
import java.util.Random;
public class Test9 {
public static void main(String[] args) {
Random r=new Random();
double []arr=new double[10];
for (int i = 0; i < arr.length; i++) {
double number= r.nextDouble(500)+1;
arr[i]=number;
System.out.println(arr[i]);
}
printArr(arr);
}
public static double printArr(double []arr){
double max=arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i]>max){
max=arr[i];
}
}
System.out.println("最大值是:"+max);
return max;
}
}
判断输入的数是否在随机生成的数组中
import java.util.Random;
import java.util.Scanner;
public class Test10 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数");
int num1= sc.nextInt();
Random r=new Random();
int []arr=new int[10];
for (int i = 0; i < arr.length; i++) {
int number=r.nextInt(51);
arr[i]=number;
//System.out.print(arr[i]+" ");
}
contains(arr,num1);
}
public static boolean contains(int []arr,int number){
for (int i = 0; i < arr.length; i++) {
if(number==arr[i]){
System.out.println("数组中存在这个数");
return true;
}
}
System.out.println("数组中不存在这个数");
return false;
}
}
随机生成一个数组,将这段数组从from到to之间生成一个新数组
import java.util.Random;
import java.util.Scanner;
public class Test11 {
public static void main(String[] args) {
Random r=new Random();
Scanner sc=new Scanner(System.in);
System.out.println("请输入from的值");
int num1= sc.nextInt();
System.out.println("请输入to的值");
int num2= sc.nextInt();
int []arr=new int[20];
for (int i = 0; i < arr.length; i++) {
int number=r.nextInt(101);
arr[i]=number;
System.out.println(arr[i]);
}
int[] copyArr=copyOfRange(arr,num1,num2);
for (int i = 0; i < copyArr.length; i++) {
System.out.print(copyArr[i]+" ");
}
}
public static int[] copyOfRange(int []arr,int from,int to){
int []newArr=new int[to-from];
int index=0;
for (int i = from; i < to; i++) {
newArr[index]=arr[i];
index++;
}
return newArr;
}
}