Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java初始化/对象声明_Java_Object_Initialization - Fatal编程技术网

Java初始化/对象声明

Java初始化/对象声明,java,object,initialization,Java,Object,Initialization,我有一个MyObject类型的对象obj,我声明了它的一个实例 MyObject obj; 但是,我不初始化它。MyObject的类类似于: public class MyObject { public String i; public String j; public MyObject(String i) { i = this.i; } } 现在,我想设置j的值。所以我说: obj.j = "Hello"; 我可以在没有初始化obj的情况下

我有一个MyObject类型的对象obj,我声明了它的一个实例

MyObject obj;
但是,我不初始化它。MyObject的类类似于:

public class MyObject {
    public String i;
    public String j;
    public MyObject(String i) {
        i = this.i;
    }
}
现在,我想设置j的值。所以我说:

obj.j = "Hello";
我可以在没有初始化obj的情况下执行此操作吗?i、 e.不言而喻:

obj = new MyObject("My i");
如果我检查这个对象的值,如果我没有初始化它,或者在其中设置一个字段足以使它不为null,那么这个对象会为null吗


谢谢

不,你不能那样做。如果要访问其字段,必须创建
MyObject
的新实例

当然,除非您将字段
设置为静态

请注意,将字段
公开
会违反封装。您应该将它们设置为私有的(或
受保护的
,如果合适的话),并使用getter和setter来提供访问

旁注:

public MyObject(String i) {
    i = this.i;
}
这不会满足你的要求

必须将参数
i
分配给字段变量
i
,而不是相反

public MyObject(String i) {
    this.i = i;
}

不,你不能那样做。如果要访问其字段,必须创建
MyObject
的新实例

当然,除非您将字段
设置为静态

请注意,将字段
公开
会违反封装。您应该将它们设置为私有的(或
受保护的
,如果合适的话),并使用getter和setter来提供访问

旁注:

public MyObject(String i) {
    i = this.i;
}
这不会满足你的要求

必须将参数
i
分配给字段变量
i
,而不是相反

public MyObject(String i) {
    this.i = i;
}

不,你不能那样做。如果要访问其字段,必须创建
MyObject
的新实例

当然,除非您将字段
设置为静态

请注意,将字段
公开
会违反封装。您应该将它们设置为私有的(或
受保护的
,如果合适的话),并使用getter和setter来提供访问

旁注:

public MyObject(String i) {
    i = this.i;
}
这不会满足你的要求

必须将参数
i
分配给字段变量
i
,而不是相反

public MyObject(String i) {
    this.i = i;
}

不,你不能那样做。如果要访问其字段,必须创建
MyObject
的新实例

当然,除非您将字段
设置为静态

请注意,将字段
公开
会违反封装。您应该将它们设置为私有的(或
受保护的
,如果合适的话),并使用getter和setter来提供访问

旁注:

public MyObject(String i) {
    i = this.i;
}
这不会满足你的要求

必须将参数
i
分配给字段变量
i
,而不是相反

public MyObject(String i) {
    this.i = i;
}

您的构造函数语句是向后的。它应该说
this.i=i构造函数语句是向后的。它应该说
this.i=i构造函数语句是向后的。它应该说
this.i=i构造函数语句是向后的。它应该说
this.i=i