5.1 参数绑定
-
如果是基本数据类型参数进行绑定,绑定后对参数进行修改,不会影响类中的属性值,如:
public static void main(String[] args) { Person p = new Person(); int n = 15; // n的值为15 p.setAge(n); // 传入n的值 System.out.println(p.getAge()); // 15 n = 20; // n的值改为20 System.out.println(p.getAge()); // 15还是20? }
-
引用数据类型参数绑定后,对外部数据进行修改,同样会影响类中属性数据。 如数组
public static void main(String[] args) { Person p = new Person(); String[] fullname = new String[] { "Homer", "Simpson" }; p.setName(fullname); // 传入fullname数组 System.out.println(p.getName()); // "Homer Simpson" fullname[0] = "Bart"; // fullname数组的第一个元素修改为"Bart" System.out.println(p.getName()); // "Homer Simpson"还是"Bart Simpson"? }`
-
引用类型参数的传递,调用方的变量,和接收方的参数变量,指向的是同一个对象。双方任意一方对这个对象的修改,都会影响对方(因为指向同一个对象嘛)
-
5.2 可变参数使用
为了解决函数重载中一些比较麻烦的问题: 函数名相同,返回类型相同,只是参数个数不同-->使用可变参数优化
使用方法 函数名(数据类型... 数据名) 三个点 数据名可以理解为数组看 例子:
public int sum(int... nums){
int res=0;
for(int i=0;i<nums.length;i++)
{
res+=nums[i];
}
return res;
}
//调用的时候可以两个参数 三个参数 .......等等
注意事项:
-
可变参数的实参可以为0个或者任意多个
-
可变参数的实参可以为数组
-
可变参数的本质就是数组
-
可变参数可以和普通类型的参数放在一起放在形参列表,但必须保证可变参数在最后。
public void f3(String str,double... nums){ }
-
一个形参列表中只能出现一个可变参数, 两个可变参数在一个函数中也是错误。
5.3 有参构造器和无参构造器
//有参构造器中默认存在父类的无参构造器, super()省略
public A{
public A(){
//A的无参构造器
}
}
public B extends A{
public B(String name)
{
//默认有一个 super()
//有参构造器
}
}