当前位置:  技术问答>java相关

只读类的一个问题

    来源: 互联网  发布时间:2017-04-06

    本文导语:  //: Immutable1.java public class Immutable1 {   private int data;   public Immutable1(int initVal) {     data = initVal;   }   public int read() { return data; }   public boolean nonzero() { return data != 0; }   public Immutable1 quadruple()...

//: Immutable1.java
public class Immutable1 {
  private int data;
  public Immutable1(int initVal) {
    data = initVal;
  }
  public int read() { return data; }
  public boolean nonzero() { return data != 0; }
  public Immutable1 quadruple() {
    //此处明明新建了一个对像,并且返回这个新对像,后面的(见闻注解)
    return new Immutable1(data * 4);     

  }
  static void f(Immutable1 i1) {          
    Immutable1 quad = i1.quadruple();
    System.out.println("i1 = " + i1.read());
    System.out.println("quad = " + quad.read());
  }
  public static void main(String[] args) {
    Immutable1 x = new Immutable1(47);
    System.out.println("x = " + x.read());
    f(x);
    //此时,x对象变量指向的对象仍然为47??,如果是String我能理解
    System.out.println("x = " + x.read());
  }

结果是: 
x = 47
i1 = 47
quad = 188
x = 47

|
在程序中我们把一个值放到Immutable1类里,用Immutable1类中的变量data来存储这个值,当需要的时候就用这各类的对象(x)来调用这各类的read()-----读取这个值。事实上类Immutable1提供了一个更改这个存储值的方法,那就是Immutable1的构造方法public Immutable1(int initVal)!

|
倒~~x 是一个对象,它不是指向47,你的f(Immutable1 i1) 中,传递的是对象的一个引用,不是String,嘿嘿~~不过你也可以重载啊~~那就可以用String了

|
up

|
用String~
up

|
楼上说的都差不多了

|
你的x变量从开始创建就一直没有发生过任何改变。
为什么不应该是47?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3