疯狂JAVA5.2方法详解
方法的所属和参数传递机制
package com.crazyJava.chacpter03.faceObject;
/**
* @ClassName: ParameterPassingTest
* @Description:5.2.2 方法的参数传递机制
* @Author: 01412126
* @Date: 2022/1/24 17:33
*/
/*
* 5.2.1 方法的所属
* 1、Java里面的方法要么属于类要么属于对象,有static修饰的方法属于类本身,没有static修饰的方法属于对象
* 2、之所以用不同对象调用有static修饰的方法结果都一样,其实本质上还是对象所属的类来调用的
* 3、一个类里面的方法相互调用的时候没有写对象或类,其实是隐藏了this关键字,背后还是有对象或类来调用方法的
*
* 5.2.2 Java的参数传递机制都是值传递,不管是基本数据类型还是引用数据类型
* 值传递的意思就是,传过去的是实际参数的一个副本,不管方法中对这个复制品如何操作,对实际参数本身都不会有影响
*
* */
class Swap{
public int a;
public int b;
public void swap(Swap swap){
int temp = swap.a;
swap.a = swap.b;
swap.b = temp;
System.out.println("swap()后的a = " + swap.a + " swap()后的b = " + swap.b);
}
}
public class ParameterPassingTest {
public static void swap(int a,int b){
int temp = a;
a = b;
b = temp;
System.out.println("swap()后的a = " + a + " swap()后的b = " + b);
}
public static void main(String[] args) {
// int a = 9;
// int b = 7;
// swap(a,b);
// System.out.println("a = " + a + " b = " + b);
Swap swap = new Swap();
swap.a = 10;
swap.b = 9;
//对于这里,传过去的是swap变量的值,与main函数里面的swap变量不是同一个
swap.swap(swap);
System.out.println("a = " + swap.a + " b = " + swap.b);
}
}
方法的重载
package com.crazyJava.chacpter03.Methods;
import org.junit.Test;
/**
* @ClassName: OverLoadTest
* @Description:方法的重载
* @Author: 01412126
* @Date: 2022/1/25 8:36
*/
/*
* 确定一个方法的三要素:
* (1)方法的所属者,类或对象
* (2)方法名
* (3)形参列表
*
* 方法的重载:两同一不同
* 方法的所属者和方法名相同,形参列表不同。其他的如修饰符和返回值类型则与方法重载没有关系
*
* 拿方法的形参作为区分方法的特点比较模糊,int foo()和foo()方法如果直接使用foo()这样的写法无法区分是调用有int返回还是无int返回的
* 方法,所以不能拿方法的返回值作为方法重载的区分要点,同理修饰也是如此。
*
*
* */
public class OverLoadTest {
public void eat(){
System.out.println("hhaa");
}
public void eat(String s){
System.out.println("eat " + s);
}
public void eat(String ... s){
//不太推荐这样写
}
@Test
public void test(){
eat();
eat("noddle");
}
public static void main(String[] args) {
OverLoadTest overLoadTest = new OverLoadTest();
overLoadTest.eat();
}
}