java中的对象引用问题的再次理解

对象|问题

测试程序:
public class Test {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public Test() {
}

public void call(Test t1,Test t2) {
System.out.println("t1地址1="+t1);
Test t3 = new Test();
t1.setName("aaa");
t2.setName("bbb");
t3.setName("ccc");
System.out.println(t1.getName());//aaa
System.out.println(t2.getName());//bbb
t1=t2;
System.out.println(t1.getName());//bbb
t1=t3;
System.out.println(t1.getName());//ccc
System.out.println(t3.getName());//ccc
t3.setName("eeee");
System.out.println("t1地址2="+t1);
}

public static void main(String[] arg) {
Test t1 = new Test();
Test t2 = new Test();
System.out.println("t1地址0="+t1);
Test t4=new Test();
t4.call(t1,t2);
System.out.println("t1地址3="+t1);
System.out.println("t1=" + t1.getName());//aaa???
System.out.println("t2=" + t2.getName());//bbb????
}
/////////////////////////////////理解,以前理解的很好,现在又生疏了。再次重新理解。

在对象作为参数的时候,传入的不是对象,也不是对象的地址,而是对象地址的引用(拷贝了一份地址指针)。
所以在以对象为参数的方法中对象(赋值)=的时候,改变的只是地址引用的指针,而真正的对象的地址没有改变。

也不知道理解的对不对,先这样吧。看来我有必要重读java编程思想了。唉,最近理解能力下降。大脑呆滞了许多。郁闷。

时间: 2024-10-26 20:14:48

java中的对象引用问题的再次理解的相关文章

对java中递归问题的输出不理解,求大神解答!谢谢

问题描述 对java中递归问题的输出不理解,求大神解答!谢谢 对于这一段代码我能够理解,压栈然后出栈就是6,5,4 package recursion; public class testRecursion { public static void main(String[] args) { int num=3; recursion(num); } private static void recursion(int n){ n++; if(n<7){ recursion(n); System.o

java中下面这段代码怎么理解?

问题描述 java中下面这段代码怎么理解? class Connection { private static int count = 0; private int i = 0; private Connection() { System.out.println("Connection()");} // Allow creation via static method: static Connection makeConnection() { count++; return new C

浅谈Java中的存储空间类型

在Thinking in java里,列举了Java的六种存储类型1.寄存器编写过汇编程序的应该对寄存器非常熟悉,那时候用的ax,bx,cx,dx等等.寄存器在CPU里面,所以速度特别快,但是数量非常有限.在java中无法直接和寄存器打交道,不过在c中是可以声明寄存器变量的. 2.栈空间写过汇编的肯定感到非常亲切,在汇编程序里不就是压栈和出栈吗?有一个指针控制栈空间,分配空间是栈指针上移,就是push操作,释放空间指针下移,就是pop操作.当然C和C++也主要是通过栈分配空间的.因为只要压栈和出

java-Java中图形界面键盘事件的理解

问题描述 Java中图形界面键盘事件的理解 Java键盘事件中,如果按键一直按住不放 会触发几次键盘事件,会调用几次keyPressed方法?求高手指教 解决方案 你好,如果你不要实现长按键响应的话肯定是响应一次的 解决方案二: http://www.jb51.net/article/73080.htmhttp://jingyan.baidu.com/article/020278118975ef1bcd9ce552.html 解决方案三: http://www.2cto.com/kf/20131

java中this.对象 表示本类的对象,那this.方法 表示本类的方法吗

问题描述 java中this.对象 表示本类的对象,那this.方法 表示本类的方法吗 java中this.对象 表示本类的对象,那this.方法 表示本类的方法吗 解决方案 你的理解是正确的,可以指向本类方法,还有个SUPER,可以指向父类方法 解决方案二: this表示本类,调用方法是一般对象.方法,即调用某个类的某个方法 解决方案三: this在java中我见过比较好的理解是这样的: java中的this翻译成中文意思都可以理解为"我的"的意思,在你定义的那个类里面,不管你在哪里

Java中的存储空间类型

在Thinking in java里,列举了Java的六种存储类型1.寄存器编写过汇编程序的应该对寄存器非常熟悉,那时候用的ax,bx,cx,dx等等.寄存器在CPU里面,所以速度特别快,但是数量非常有限.在java中无法直接和寄存器打交道,不过在c中是可以声明寄存器变量的. 2.栈空间写过汇编的肯定感到非常亲切,在汇编程序里不就是压栈和出栈吗?有一个指针控制栈空间,分配空间是栈指针上移,就是push操作,释放空间指针下移,就是pop操作.当然C和C++也主要是通过栈分配空间的.因为只要压栈和出

Java中的对象和对象引用实例浅析

  本文实例讲述了Java中的对象和对象引用.分享给大家供大家参考.具体分析如下: 在Java中,有一组名词经常一起出现,它们就是"对象和对象引用",很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做"万物皆对象",这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Jav

深入理解java中的synchronized关键字_java

synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行它包括两种用法:synchronized 方法和 synchronized 块. 1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法.如: 复制代码 代码如下: publ

译文:理解Java中的弱引用

不久之前,我面试了一些求职Java高级开发工程师的应聘者.我常常会面试他们说,"你能给我介绍一些Java中得弱引用吗?",如果面试者这样说,"嗯,是不是垃圾回收有关的?",我就会基本满意了,我并不期待回答是一篇诘究本末的论文描述. 然而事与愿违,我很吃惊的发现,在将近20多个有着平均5年开发经验和高学历背景的应聘者中,居然只有两个人知道弱引用的存在,但是在这两个人之中 只有一个人真正了解这方面的知识.在面试过程中,我还尝试提示一些东西,来看看有没有人突然说一声&qu