JAVA基础方法_Day06

方法

概念:方法是一个代码段的抽取 (函数、功能)
好处:降低了程序的冗余,提高了代码的复用性,隐藏 功能的实现细节

一、定义

格式:
修饰符 返回类型 方法名 (参数列表){
方法体;
return;
}
修饰符:固定式public static
返回类型:方法运行完毕后会得到一个具体的结果返回给调用者
方法名:方法的名字
参数列表:功能执行时需要的一些基本内容
方法体:具有功能的实现
return :结束方法,返回结果的关键字

二、参数列表、返回类型和方法体的关系

参数列表:原材料
方法:工厂
返回类型:产品

三、方法的分类

3.1 无返回的方法

方法可以执行具体的功能,但是执行完毕后没有返回值‘

3.2 有返回的方法

方法在执行完具体功能后,会将结果返回给调用者,这类方法的返回类型是具体的某种类型

四、使用

调用格式:
方法名(参数列表);

五、参数列表

分类:
形式参数:形参,在方法的定义中,作用是告知调用者,方法的执行,需要哪些,需要多少个参数,形参的变量名可以是任意的,但是请遵循规范
实际参数:实参,在方法的调用中,是真正的参数运算的数据

问:参数的类型有哪些?
答:参数的类型可以试任意的,如果是hi基本数据类型,传递的是值’;如果是引用类型传递的是地址值

5.2 值传递和引用传递

值传递:传递的数据是基本数据类型,形参的作用域是在当前方法中,随着方法的释放(出栈)会被释放
引用传递:传递的是引用数据类型的地址,引用数据类型创建出的内容都在堆内存中,不会随着栈中方法的释放(出栈)而释放

5.3 可变参数

格式:
数据类型…变量名
特点:
1、参数个数可以试任意的
2、可变参数的本质是数组
3、可变参数必须出现在参数列表的末尾

六、方法的重载

概念:在同一个类中,多个方法具有相同的方法名,且参数列表各不相同就形成了方法的重载
特点:
1、方法名相同
2、参数列表不同(个数不同、类型不同、顺序不同、)
好处:
只需要明确想要执行的功能,就能找到对应的方法,而不需要针对类似的功能而去记忆各个方法名不同的方法。

七、成员变量和局部变量

成员(全局):定义在方法外,类中的内容
局部:定义在方法内的内容
注:
1、变量的使用范围是在它所定义的代码段中,成员内容能在当前类的任意位置使用,局部内容只能在它所在的方法体中使用。
2、就近原则:方法中使用变量时,优先使用本方法中定义的内容,本方法中如果没有该变量,则使用成员的,如果成员中也没有定义则编译失败。
区别:
1、定义位置不同,成员的在类中,局部的在方法中
2、默认值不同,成员的有默认值(同数组的默认值),局部的没有默认值
3、适用范围不同,成员的可以在本类中的任何位置使用,局部的只能在所定义的方法中使用
4、内存的存储位置不同,成员的在堆中,局部的在栈中
5、内存中的存活时间,局部的是从入栈到出栈,成员的是从加载到内存直到被垃圾回收器回收

八、返回类型

概念:表示当方法运行完毕后,会将结果通过return关键字返回给调用者
关键字return的功能
1、将方法的结果返回给调用者,返回的结果可以试表达式
2、结束方法

注:
1、如果方法的返回类型是void,在方法的末尾处有一个隐十点return来完成方法的结束,此时return后不能有数据,应该直接分号结束
2、如果方法的返回类型不是void,那么方法必须有return执行方法的返回
3、return 之后不能再有语句

小结

方法数组以前学的不好,所以现在感觉还是有收获的,今天讲到了方法的重写,老师罗列了几个坑,比如

public static void main(String[] args) {

// b(3, 3); // 编译失败

}

public static void b(double a,int b){
System.out.println(“B”);
}

public static void b(int a,double b){
System.out.println(“A”);
}
//一般不会这样重写方法

还有一个小练习,感觉做做挺有帮助
` public class Test5 { // 在指定的字符串数组中通过指定的元素,返回所有出现该元素的下标
public static void main(String[] args) {
String[] names = {“ls”,“zs”,“ww”,“ls”,“zl”,“tq”,“ls”,“zsf”};
int[] indexs = getIndexs(names, “tq”);
if(indexs.length == 0){
System.out.println(“没有找到”);
}else{
System.out.println(Arrays.toString(indexs));
}

}

public static int[] createArray(int[] arr,int index){
int[] newArr = new int[arr.length+1];
for(int i = 0;i<=arr.length-1;i++){
newArr[i] = arr[i];
}
newArr[newArr.length-1] = index;
return newArr;
}

public static int[] getIndexs(String[] arr,String str){
int[] indexs = new int[0];
for(int i = 0;i<arr.length;i++){
if(str.equals(arr[i])){
indexs = createArray(indexs, i);
}
}
return indexs;
}
}
`

九、方法的注意事项

1、方法定义的位置是任意的
2、方法体中不能再定义方法
3、方法的执行,只有在方法被调用后才 能执行,才会进入栈中

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值