Java中参数的传递
来源:互联网 发布:注册中文域名多少钱 编辑:程序博客网 时间:2024/06/05 07:14
Java的参数是传值还是传引用,到现在也没有一个确切的定论。但是在 thinking in Java一书中,有一句经典的解释:“When you are passing primitives into a method,you get a distinct copy of the primitive.When you are passing a reference into a method,you get a copy of the reference."意思是说,不管java传的是值还是传引用,传递的都是对应的值or引用的副本。
在Java中,值有两种类型,值类型与引用类型。当传递的是值类型的时候,其实传递的是值的副本,即将自身的值复制传递;当传递的是引用类型的时候,其实传递的是自身指向自己的地址的副本,而非是“自己”这整个对象。
请看下面两个例子:
例1:
public class Test{
public static void test(boolean test){
test = !test;
System.out.println("In the test(boolean) : test = " + test);
}
public static void main(String[] args) {
boolean test = true;
System.out.println("Before test(boolean) : test = " + test);
test(test);
System.out.println("After test(boolean) : test = " + test);
}
}
运行结果:
Before test(boolean) : test = true;
In the test(boolean) : test = false;
After test(boolean) : test = true;
可以看出,test方法中改变了传进来的参数值,但对这个参数本身并没有影响,即对main函数中的test没有影响,说明参数类型为值类型时是按值传递的。
若想改变test的参数本身,可为test方法添加返回值类型为Boolean即可。
例2:
public class Test{
public static void test(StringBuffer str){
str.append(",World");
}
public static void main(String[] args) {
StringBuffer string = new StringBuffer("Hello");
test(string);
System.out.println(string);
}
}
运行结果:
Hello,World
可以看出,在调用test方法是,将string作为参数传了进去,string是一个引用类型对象,所以其实穿进去的是string这个对象的地址。通过地址找到对象然后修改了对象的值,对象自然也就发生了变化。
- java中参数的传递
- java中参数的传递
- java中参数的传递
- Java中参数的传递
- java中参数传递
- java中参数传递
- java中参数传递
- java中参数传递
- java中参数传递
- java中参数传递
- java中函数参数的传递
- Java中参数传递的问题
- Java中函数的参数传递
- java中参数传递的研究
- Java中参数传递的问题
- java中参数传递的方式
- JAVA中参数传递的概念
- java中函数的参数传递详解
- CDH5 部署步骤
- js 小数取整的函数
- sqlserver 视图模型 排序报错 无法绑定由多个部分组成的标识符
- 解题报告:HDU_6102 GCDispower (离线处理+莫比乌斯反演)
- ubuntu系统下安装python3
- Java中参数的传递
- 余弦相似度的计算——C++
- pip安装使用详解(转)
- 流量模式选择
- 微信小程序flex布局
- go语言的模板,text/template包
- 递归函数
- DVWA笔记之二:Command Injection
- Laravel5.1-邮件发送