关于历次重开Java学习的记录0x01
Java教程看过好几遍,记住的东西没有多少.以记录的方式,记录一下本次学习过程有收获的地方.
0x01 可变参数
用 类型... 定义,可变参数相当于数组类型.
class Group{
private String[] names;
public void setNames(String names) {
this.names = names;
}
}
上面的setNames()就定义了一个可变参数.调用时,可以怎么写:
Group g = new Group();
g.setNames("xiaoming","xiaohong","xiaojun");
g.setNames("xiaoming","xiaohong");
g.setNames("xiaoming");
完全可以把可变参数改写成String[]类型:
class Group{
private String[] names;
public void setNames(String[] names){
this.names = names;
}
}
0x02 参数绑定
调用方把参数传递给实例方法时,调用时传递的值会按参数的位置一一绑定.
基本类型的参数绑定.
基本类型的参数就相当于C++中的值传递,只是复制参数值.
双方各自的后续修改,互不影响.
引用类型的参数传递类似于C++中的饮用传递,更改外面的值,里面的值会跟着改.
在C程序中,需要交换两个参数的值时,一般采用引用传递.
public class main{
public static void main(String[] args){
Person p = new Person();
String bob = "Bob";
p.setName(bob);
System.out.println(p.getName));
bob = "Alice";// bob还是Alice
System.out.println(p.getName());
}
}
class Person{
private String name;
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
}
基本类型传递和引用类型传递无非就是基于变量的区别;
基本类型传递只是值的复制,没有地址的事情.
而引用类型的传递是根据地址的变化传递的;
上面的例子中,两次打印都是bob.
更改bob后,其指向发生变化.
但是传入的参数并没有更新;
如果再次传入;
就会改变其指向的值. Java, Go, Js, C# 都是值传递没有引用传递
这里区别无非是传递的值内容是什么 萋小磊 发表于 2021-9-13 03:09
Java, Go, Js, C# 都是值传递没有引用传递
这里区别无非是传递的值内容是什么
那意思就是传递的是地址还是真实的值吗
{:1_908:}
页:
[1]