我得到了NullPointerException

 手机用户2502883113 发布于 2023-02-13 14:15

我要回到java中的OOP.这里我遇到了一个简单的例子:

class CreateString {
    private String name;

    public CreateString(String name) {
        this.name = name;
    }

    String string = new String(name);//AAA
}

public class Main {

    public static void main(String[] args) {
        CreateString myName = new CreateString("tomjas");
    }
}

我从表示为"AAA"的行获得了NullPointerException.当我改变第二行时

 private String name="";

没关系.这段代码出了什么问题?我认为该字段是初始化的,因为可以从构造函数中得出结论.有关文档的任何提示和指示?

1 个回答
  • 您的string变量是类属性.因此,它将在创建类实例时初始化.但是那时name仍然是null,因为你只name在构造函数中赋值.所以最终会出现NullPointerException.

    要修复它,请string = new String(name);进入构造函数:

    class CreateString {
      private String name = null;
      private String string = null;
    
      public CreateString(String name) {
          this.name = name;
          string = new String(name);
      }
    }
    

    由于构造函数仅在初始化所有属性后执行,因此放置行的位置无关紧要private String string;.你也可以把它放在构造函数之后(正如你所做的那样),它仍然可以.

    2023-02-13 14:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有