方法的概述
●方法是一种语法结构,它可以把一段代码封装成一个功能,一边方便重复调用。
●使用方法的好处:提高代码的复用性,程序逻辑更清晰。
public static void main (String [] args){
}
public static int sum(int a, int b ){
}
public class Demo1 {
public static void main(String[] args) {
int c1= sum(10,20);
System.out.println(c1);
int c2= sum(20,90);
System.out.println(c2);
}
public static int sum(int a, int b) {
int c = a + b;
return c;
}
}
方法的定义,调用
方法完整的定义形式,调用
方法定义的完整格式
修饰符 返回值类型 方法名(形参列表){
方法体代码
return 返回值;
}
方法的调用格式
●方法必须调用才可以跑起来,调用格式:方法名(...);
方法的调用流程
●方法没有被调用时,再方法区中的字节码文件忠存放
●方法被调用的时候,需要进入到栈内存中运行
方法合适的注意点
●方法的修饰符:暂时用 public ststic
●方法声明了具体的返回值类型,内部必须用return返回对应类型的数据
●形参列表可以有多个,也可以没有,多个形参必须用“,”隔开,且不能给初始化值
方法的其他写法
方法定义时:返回值类型,形参列表可以按照需求
填写修饰符 返回值类型 方法名(形参列表){
方法体代码
return 返回值
//学会方法的其他形式及其流程
public class Demo1 {
public static void main(String[] args) {
sssc();
System.out.println();
}
// 无参数无返回值的方法
public static void sssc () {
for (int i=1;i<4;i++){
System.out.println("hello,world");
}
}
}
注意事项:
●如果方法不需要返回结果,返回值类型必须申明为void(无返回值),此时方法内部不可以使用return返回数据
●方法如果没有参数,或者返回值类型申明为void可以称为无参数,无返回值的方法,
方法使用的常见问题
●方法的编写反序无所谓。
●方法与方法之间是平级关系,不能嵌套定义。
●方法的返回值羹型为 void (无返回值),方法内则不能使用 return 返回数据,如果方法的返回值类型写了具体美型,方法内部则必须使用 return 返回对应类型的数据,
●return 语句下面,不能编写代码,因为永远执行不到,属于无效的代码。
●方法不调用就不执行,调用时必须严格匹配方法的参数情况。
●有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用,甚至直接调用;无返回值方法的调用只能直接调用一下
方法案例
- 计算1~n的和返回
public class Demo1 {
public static void main(String[] args) {
sum(8);
System.out.println("1~n的和为"+sum(5));
}
public static int sum(int n) {
int sum =0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
- 判断整数是奇数还是偶数
public class Demo1 {
public static void main(String[] args) {
arr(9);
}
public static int arr(int n) {
if (n % 2 == 0) {
System.out.println("n为偶数");
} else {
System.out.println("n为奇数");
}
return n;
}
}
- 数组求最值改方法实现
public class Demo1 {
public static void main(String[] args) {
//需求:使用方法,找出任意数组的最大值返回
int [] arr ={12,13,34,56,78,90};
int max =MaxDate(arr);
System.out.println("最大值为"+max);
}
public static int MaxDate(int[] arr) {
//找出数组的最大值返回
int max =arr[0];
//遍历数组的每一个元素,与最大值的数据进行比较,若较大的替换
for (int i = 1; i < arr.length; i++) {
if(arr[i]>max){
max = arr[i];
}
}
return max;
}
}
方法的参数传递机制
- 基本类型的参数传递机制
Java的参数传递机制:值传递
●在传输实参给方法的形参是,并不是传输实参变量本身,而是传输实参变量储存的值,这就是值传递。
注意:
实参:方法内部定义的变量
形参 :如在定义方法时,“()”中申明的参数
public class Demo1 {
public static void main(String[] args) {
//目标:理解Java的基本类型的参数传递,值传递
int a=10;
chang (a);
System.out.println(a); //10
}
public static int chang(int a) {
System.out.println(a); //10
a =20;
System.out.println(a); //20
return a;
}
- 引用类型的参数传递
public class Demo1 {
public static void main(String[] args) {
//目标:理解Java的引用类型的参数传递,值传递
int[] arrs={12,13,14};
chang(arrs);
System.out.println(arrs[1]); //222
}
public static void chang(int []arrs) {
System.out.println(arrs[1]); //13
arrs[1] =222;
System.out.println(arrs[1]); //222
}
基本类型和引用类型的参数在传递的时候的异同
都是值传递
基本类型的参数传递储存的是数据值
引用类型的参数传递储存的是地址值
方法的参数传递案例
- 打印整形数组内容
需求:设计一个方法用于输出任意整型数组的内容,要求输出以下形式
“该数组没有为:[11,22,33,44,55]"
public class Demo1 {
public static void main(String[] args) {
int [] num ={10,20,30,40,50};
printArray(num);
}
public static void printArray(int []arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
// if (i == arr.length - 1) {
// System.out.println(arr[i] + ",");
// } else {
// System.out.println(arr[i]);
System.out.print(i ==arr.length-1? arr[i] :arr[i] +",");
}
System.out.println("]");
}
}
- 从数组中查询指定元素的索引
需求:设计一个方法可以接收整型数组,喝药查询的元素值,最终要返回元素在该数组中的索引,如果数组中不存在该元素,则返回-1
public class Demo1 {
public static void main(String[] args) {
int[] num = {10, 20, 30, 40, 50};
int index = printArray(num, 90);
System.out.println("查询的索引是" + index);
}
public static int printArray(int[] arr, int date) {
//找出数据的索引
for (int i = 0; i < arr.length; i++) {
if (arr[i] == date) {
return i;
}
}
return -1;
}
}
- 比较两个数组的内容是否一样
需求:
如果两个数组的类型,元素个数,元素顺序和内容是一样的我们就认为这2个数组是一模一样的。
例如:如下2个数组是一样的
int [] arrs -(10,J0,0];
inL [] arrs -(10,20,30);
请使用方法完成:能够判断任意两个整型数组是否一样,并返回 true 或者 false
public class Demo1 {
public static void main(String[] args) {
int[] num = {10, 20, 30, 40, 50};
int[] index = {10, 39, 90, 89, 78};
System.out.println(compare(num,index));
}
public static boolean compare(int[] arr1, int[] arr2) {
//判断两个数组的内容是否一样,先判断长度,再判断元素
if (arr1.length == arr2.length) {
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
} else {
return false;
}
}
}
方法重载
同一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法就是重载方法。
方法重载的好处
●可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计。
方法重载的识别技巧
●只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管!
(如:修饰符,返回值类型都无所谓)
●形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。
单独使用return关键字
return 可以立即跳出并结束当前方法的执行; return 关键字单独使用可以放在任何方法中
如果要直接结束当前方法的执行,怎么解决?
● return ;跳出并立即结束所在方法的执行
● break ;跳出并结束当前所在循环的执行
● continue ;结束当前所在循环的当次继续,进入下一次执行