首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

Stack Overflow用户

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

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

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

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

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

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

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

https://stackoverflow.com/questions/37752237

复制
相关文章

相似问题

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