zoukankan      html  css  js  c++  java
  • java 对象赋值问题

    import java.io.*;

    class CCircle{

     private static double pi = 3.1415;

     private double radius;

     public CCircle(double r)  {  

     radius = r;

     }

     public void show()  {  

     System.out.println("Area is "+pi*radius*radius);

     }

     public void SetRadius(double r)  

    {

      radius = r;

     }

     public boolean compare(CCircle c2)

     {   

    if(this.radius == c2.radius)  

      return true;

      else  

      return false;

     }

     public double GetRadius()

     {   return radius;  }

    };

    public class HelloWorld{

     public static void main(String args[])

     {   

    CCircle cirl1,cirl2;  

     cirl1 = new CCircle(1.0);   

    System.out.println(cirl1.GetRadius());

         cirl2 = cirl1;

      System.out.println(cirl2.GetRadius());

         cirl2.SetRadius(3.0);

      System.out.println(cirl2.GetRadius());

      System.out.println(cirl2.GetRadius());

      System.out.println(cirl1.compare(cirl2));

     }

    }

    最后结果显示,两个对象是相等的。 CCircle cirl1,cirl2; cirl1 = new CCircle(1.0); cirl2 = cirl1; cirl2.SetRadius(3.0); 表达式: A a1 = new A(); 它代表A是类,a1是引用,a1不是对象,new A()才是对象,a1引用指向new A()这个对象。

    在JAVA里,“=”不能被看成是一个赋值语句,它不是在把一个对象赋给另外一个对象,它的执行过程实质上是将右边对象的地址传给了左边的引用,使得左边的引用指向了右边的对象。JAVA表面上看起来没有指针,但它的引用其实质就是一个指针,引用里面存放的并不是对象,而是该对象的地址,使得该引用指向了对象。在JAVA里,“=”语句不应该被翻译成赋值语句,因为它所执行的确实不是一个赋值的过程,而是一个传地址的过程,被译成赋值语句会造成很多误解,译得不准确。

    再如: A a2; 它代表A是类,a2是引用,a2不是对象,a2所指向的对象为空null;

    再如: a2 = a1; 【它代表,a2是引用,a1也是引用,a1所指向的对象的地址传给了a2(传址),使得a2和a1指向了同一对象。】

    综上所述,可以简单的记为,在初始化时,“=”语句左边的是引用,右边new出来的是对象。 在后面的左右都是引用的“=”语句时,左右的引用同时指向了右边引用所指向的对象。

    再所谓实例,其实就是对象的同义词。

  • 相关阅读:
    dubbo源码阅读-服务调用之远程调用(十二)
    dubbo源码阅读-注册中心(十三)之Zookeeper
    dubbo源码阅读-远程暴露(七)之Transport
    dubbo源码阅读-远程暴露(七)之Exchangers
    dubbo源码阅读-服务调用(十二)之本地调用(Injvm)
    dubbo源码阅读-ProxyFactory(十一)之StubProxyFactoryWrapper本地存根
    dubbo源码阅读-服务暴露(七)之本地暴露(Injvm)
    dubbo源码阅读-ProxyFactory(十一)之JavassistFactory
    OpenCV 实现颜色直方图
    FFMPEG结构体分析:AVPacket
  • 原文地址:https://www.cnblogs.com/plxx/p/3173015.html
Copyright © 2011-2022 走看看