导航:首页 > 编程语言 > java对象与引用传递

java对象与引用传递

发布时间:2022-07-30 14:00:27

java中的值传递和引用传递的区别

值传递和引用传递是c中的概念,在java中可以用于方便理解,但是java中是值传递的。说说区别吧,昨天刚好看见这个问题。8个基本数据类型是值传递,即方法内对其修改是不会改变实参的,其他引用类型(除了string)可以理解为引用传递,传进方法内部的是一个地址,可以理解为房子的钥匙,你有了钥匙,照样可以对房子进行改变,是吧。那为什么string不行呢?因为string是不可改变的,虽然它也是传了地址,但已经是第二个引用(b)了 ,当你对形参进行改变,这时候b会指向新的string对象。这时候原来的引用a是没有改变的,还是指向第一个对象。
不懂可以追问,共同学习

❷ 如何区分Java中的值传递和引用传递

引用传递的是对象的地址,值传递的是变量的值
使用引用传递,被调用函数使用的是调用函数传入的对象本身,也就是说在被调用函数中对对象进行修改将直接导致外部对象的值被修改。
而值传递,传递进去的是变量的副本(即拷贝),此时在被调用函数中对形参的任何修改都不会改变外部变量的值。
引用你可以直接理解成对象的别名。例如有有函数Test(String str);对象String name;
调用Test:Test(name);
则在Test里面str其实是name外部变量的别名,他们所代表的是同一个对象,所以Test函数修改str即修改name

❸ java对象引用传递问题看这个程序

楼主先看看这段简洁版的代码:

class Person{ // 定义Person类
private Book book ; // 一个人有一本书
public void setBook(Book b){
book = b ;
book.setTitle("caca");
}
public Book getBook(){
return book ;
}
};

class Book{ // 定义Book类
private String title ; // 标题
public Book(String title) {
this.title = title;
}
public void setTitle(String t){
title = t ;
}
public String getTitle(){
return title ;
}

};
public class Test2{
public static void main(String arg[]){
Book book = new Book("hello");
Person person = new Person();
System.out.println("book.getTitle()---" + book.getTitle());
person.setBook(book);
System.out.println("person.getBook().getTitle()---" + person.getBook().getTitle());
System.out.println("book.getTitle()---" + book.getTitle());
System.out.println();
}
};
你的代码太长了,主要就是看上面这几行。理解我下面说的话,差不多就都理解了。
这里的输出结果是:
book.getTitle()---hello
person.getBook().getTitle()---caca
book.getTitle()---caca
为什么book.getTitle()前后的值不一样呢?
因为,setBook(book)方法中传递的实际上是一个指针,是对名字为”hello“的书的引用。person接收到这个引用之后,又对book里的名字赋值,更改为”caca"。最后,执行book.getTitle()时,
又是同一个引用。注意的是,从始至终,就只有一个真正的book,其他的都是对这个book的引用。因为,你只new了一个。

❹ Java中什么是值传递什么又是引用传递

值传递是:如int ,float,char,String,Double等,传递的是具体的数值
引用传递:传递的是 对象的使用权,如 数组,接口,对象

❺ JAVA中引用对象的传递是值传递还是引用传递的问题

各种说法,其实java从本质上来讲参数传递都是值传递,如果传的是对象,虚拟机会在栈上开辟出一块新的地址,然后指向传递过来的参数在堆中的内存地址,而不是直接引用栈上的地址,所以就算是参数传递,也只是传递了内存地址而已,如果传递过来的参数改变了指向的内存地址,那么不会对原来的对象造成任何影响。

❻ java类方法如何实现引用传递和值传递

参数是基本类型就是传值,传对象就是引用传递。

swap(Integer x, Integer y)可以传递引用,但是没办法实现交换。这跟Integer的实现方式有关。所以不是引用传递就一定能改变外面的值。

下面是引用传递,交换的情况,又臭又长。

classUntitled{

intneedFix;


publicstaticvoidswap(Untitledx,Untitledy){
inttemp=x.needFix;
x.needFix=y.needFix;
y.needFix=temp;

}
publicstaticvoidmain(String[]args){
Untitle1=newUntitled();
Untitle2=newUntitled();
u1.needFix=3;
u2.needFix=4;
swap(u1,u2);
System.out.println(u1.needFix+","+u2.needFix);
}
}

另外,你可以考虑一下引用传递,不过也是一种传值,java里面没有事实上的指针。直接交换引用指向的对象是没有作用的。

Untitledtemp=x;
x=y;
y=temp;

无效。

阅读全文

与java对象与引用传递相关的资料

热点内容
php年薪5年 浏览:67
如何上网上设个人加密账户 浏览:44
linux打开ssh服务 浏览:78
微信位置可以加密吗 浏览:470
算法蛮力法 浏览:438
随机排练命令 浏览:147
python多进程并发 浏览:41
安卓软件安装如何躲避安全检测 浏览:647
奇幻潮翡翠台源码百度云盘 浏览:187
什么软件可以免费pdf转word 浏览:15
php正则表达式大全 浏览:394
androidntp时间 浏览:299
轮机长命令簿英文 浏览:148
oppo铃声设置被加密怎么处理 浏览:548
粤苗app图形验证码怎么填 浏览:899
管家婆架设云服务器 浏览:254
php的登录界面代码 浏览:997
php开发客户端 浏览:998
theisle测试服怎么搜服务器 浏览:447
广播PDF 浏览:218