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出来的是对象。 在后面的左右都是引用的“=”语句时,左右的引用同时指向了右边引用所指向的对象。

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

  • 相关阅读:
    STM32 USB应用——VCP
    基础数据类型与字节数组相互转换 BitConvter类
    C# 16进制与字符串、字节数组之间的转换
    C语言函数手册学习
    C串口通信
    C#串口通信
    C Socket通信编程
    C SOCKET编程
    C# SOCKE通信
    socket阻塞与非阻塞,同步与异步、I/O模型
  • 原文地址:https://www.cnblogs.com/plxx/p/3173015.html
Copyright © 2011-2022 走看看