首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.lang.String类值变量

java.lang.String类值变量
EN

Stack Overflow用户
提问于 2016-06-10 15:43:14
回答 3查看 2.2K关注 0票数 1

我一直在浏览String.class文件(java.lang.String),我有几个问题。

该类的char[]声明为final,变量名为value。下面有一个构造函数,通过它设置char[]的值。

代码语言:javascript
复制
public String(char value[]) {
    this.value = Arrays.copyOf(value, value.length);
}

我的问题是:

1)如何通过构造函数设置最终变量的值?

第二,等量法。

代码语言:javascript
复制
public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

在此方法中,如果anObjectString的实例,则该方法将anotherString.value分配给char数组。但是,当我尝试执行String.value时,我会得到一个错误“值不可见”。我假设是因为它在String类中声明为私有,但是String类如何能够在String实例上使用anotherString.value呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-10 15:55:07

1.)在构造函数中设置最终变量的值是允许的,因为每次调用构造函数时,最终变量都是新变量。换句话说,每次调用构造函数时,都会生成一个新对象,该对象具有可以设置的新的最终变量。

2.)就像@ControlAltDel所说的,“在类中,可以在其他对象中访问私有方法和字段”,但是如果您只想将字符串设置为一个字符数组,只需使用"anotherString.toCharArray()“

希望这能有所帮助!用Java玩得开心

票数 1
EN

Stack Overflow用户

发布于 2016-06-10 15:58:05

  1. 如果一个变量声明为static final,那么它将被静态地设置为该类和该类的所有实例。如果它声明的final是非静态的,那么它必须由每个实例初始化和设置,但在初始化后不能进一步修改。
  2. value成员不可见,因为它可能已声明为私有。另外,它是final,所以它是不可修改的。这是一个重要的概念,因为Java字符串是不可变的。
票数 0
EN

Stack Overflow用户

发布于 2016-06-10 16:48:50

1)最终变量不需要在声明时初始化,但必须在使用之前初始化(指定值)一次。可以用任何一种方式,即只给最终实例变量赋值一次。( a)声明本身。b)实例初始化程序块。( c)建设者。

如果变量在声明期间被赋值,则Java编译器不允许在实例初始化器或构造器中重新分配。

如果在声明期间没有为实例变量赋值,那么Java编译器将允许在初始化器块中初始化值。在这种情况下,将不允许在构造函数中初始化。

如果在声明期间或在实例初始化程序块中未初始化值,则必须在Constructor中初始化值,否则将出现编译时错误,说明空白最终字段可能尚未初始化。

2)在类中,如果另一个对象是同一个类的实例,则可以访问另一个对象的私有成员变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37752237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档