Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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_String - Fatal编程技术网

Java 将字符串的值保存到另一个类并检索它

Java 将字符串的值保存到另一个类并检索它,java,string,Java,String,我目前正在尝试将字符串的值保存到JAVA中另一个名为Memory.JAVA的类文件中。我之所以这样做是因为变量不会保存在Try-Catch块之外。因此,我使用以下代码在try-catch块中启动该类: Memory mem = new Memory(); 然后,当我想要保存字符串时,我使用以下命令: mem.brother1ID = "Whatever"; 我之所以不将其创建为新字符串,是因为在Memory类中,我已经启动了该字符串。为了测试是否已保存,我使用了System.out.pri

我目前正在尝试将字符串的值保存到JAVA中另一个名为Memory.JAVA的类文件中。我之所以这样做是因为变量不会保存在Try-Catch块之外。因此,我使用以下代码在try-catch块中启动该类:

Memory mem = new Memory();
然后,当我想要保存字符串时,我使用以下命令:

 mem.brother1ID = "Whatever";
我之所以不将其创建为新字符串,是因为在Memory类中,我已经启动了该字符串。为了测试是否已保存,我使用了
System.out.println
打印结果,在本例中,结果是“Whatever”,但当我尝试在同一类中打印相同的结果时,结果是“null”。有人对我的问题有什么建议吗?请随时在下面发表评论。谢谢

更新:

下面是一些代码:

private void searchFieldKeyReleased(java.awt.event.KeyEvent evt) {                                        
    try {

        Memory mem = new Memory();

        String sql = "select * from userInfo where firstName= ? OR lastname = ?";
        pst=conn.prepareStatement(sql);
        pst.setString(1, searchField.getText());
        pst.setString(2, searchField.getText());

        rs=pst.executeQuery();

        if(rs.next()) {
            String firstName = rs.getString("firstName");
            String lastName = rs.getString("lastName");
            String placeOfResidence = rs.getString("placeOfResidence");
            String employmentStatus = rs.getString("employmentStatus");
            String currentEmployer = rs.getString("currentEmployer");
            String taxStatus = rs.getString("taxStatus");
            String dateOfBirth = rs.getString("dateOfBirth");
            String mother = rs.getString("mother");
            String father = rs.getString("father");
            String brother1 = rs.getString("brother1");
            String brother2 = rs.getString("brother2");
            String brother3 = rs.getString("brother3");
            String brother4 = rs.getString("brother4");
            String brother5 = rs.getString("brother5");
            String sister1 = rs.getString("sister1");
            String sister2 = rs.getString("sister2");
            String sister3 = rs.getString("sister3");
            String sister4 = rs.getString("sister4");
            String sister5 = rs.getString("sister5");
            mem.brother1ID = rs.getString("brother1ID");
            mem.brother2ID = rs.getString("brother2ID");
            mem.brother3ID = rs.getString("brother3ID");
            mem.brother4ID = rs.getString("brother4ID");
            mem.brother5ID = rs.getString("brother5ID");
            mem.sister1ID = rs.getString("sister1ID");
            mem.sister2ID = rs.getString("sister2ID");
            mem.sister3ID = rs.getString("sister3ID");
            mem.sister4ID = rs.getString("sister4ID");
            mem.sister5ID = rs.getString("sister5ID");
            mem.fatherID = rs.getString("fatherID");
            mem.motherID = rs.getString("motherID");
            System.out.println(mem.brother1ID);
            System.out.println(firstName + " " + lastName);
            firstNameField.setText(firstName);
            lastNameField.setText(lastName);
            placeOfResidenceField.setText(placeOfResidence);
            employmentStatusField.setText(employmentStatus);
            currentEmployerField.setText(currentEmployer);
            taxStatusField.setText(taxStatus);
            dateOfBirthField.setText(dateOfBirth);
            motherField.setText(mother);
            fatherField.setText(father);
            brothersField1.setText(brother1);
            brothersField2.setText(brother2);
            brothersField3.setText(brother3);
            brothersField4.setText(brother4);
            brothersField5.setText(brother5);
            sisterField1.setText(sister1);
            sisterField2.setText(sister2);
            sisterField3.setText(sister3);
            sisterField4.setText(sister4);
            sisterField5.setText(sister5);



        }

    } catch(Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}    
这就是我试图获得与以前相同的
System.out.println结果的时候:

private void brotherViewButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                                   
    try {

        Memory mem = new Memory();

        String sql = "select * from userInfo where id=?";
        pst=conn.prepareStatement(sql);
        String IDNO = mem.brother1ID;
        System.out.println(IDNO);
        pst.setString(1, IDNO);

        rs=pst.executeQuery();

        if(rs.next()) {
            String firstName = rs.getString("firstName");
            String lastName = rs.getString("lastName");
            String placeOfResidence = rs.getString("placeOfResidence");
            String employmentStatus = rs.getString("employmentStatus");
            String currentEmployer = rs.getString("currentEmployer");
            String taxStatus = rs.getString("taxStatus");
            String dateOfBirth = rs.getString("dateOfBirth");
            String mother = rs.getString("mother");
            String father = rs.getString("father");
            String brother1 = rs.getString("brother1");
            String brother2 = rs.getString("brother2");
            String brother3 = rs.getString("brother3");
            String brother4 = rs.getString("brother4");
            String brother5 = rs.getString("brother5");
            String sister1 = rs.getString("sister1");
            String sister2 = rs.getString("sister2");
            String sister3 = rs.getString("sister3");
            String sister4 = rs.getString("sister4");
            String sister5 = rs.getString("sister5");
            System.out.println(firstName + " " + lastName);
            firstNameField.setText(firstName);
            lastNameField.setText(lastName);
            placeOfResidenceField.setText(placeOfResidence);
            employmentStatusField.setText(employmentStatus);
            currentEmployerField.setText(currentEmployer);
            taxStatusField.setText(taxStatus);
            dateOfBirthField.setText(dateOfBirth);
            motherField.setText(mother);
            fatherField.setText(father);
            brothersField1.setText(brother1);
            brothersField2.setText(brother2);
            brothersField3.setText(brother3);
            brothersField4.setText(brother4);
            brothersField5.setText(brother5);
            sisterField1.setText(sister1);
            sisterField2.setText(sister2);
            sisterField3.setText(sister3);
            sisterField4.setText(sister4);
            sisterField5.setText(sister5);



        }

    } catch(Exception e) {
        JOptionPane.showMessageDialog(null, e);
    } 
}     

内存
对象中的值
brother1ID
null
的原因是您正在使用该对象的新实例

我强烈建议您阅读Java中对象实例的作用域,以及创建新实例与使用现有实例的区别

例如,执行此操作时:

Memory mem = new Memory();
mem.brother1ID = "1234";

mem = new Memory();
System.out.println(mem.brother1ID);
打印的值将为
null
。这是因为您正在使用该类的新实例。如果希望在多个方法调用中保持这些值,最好将
内存
对象保存为包含所显示方法的任何类的实例变量。i、 e:

private Memory memory = new Memory();

...

private void searchFieldKeyReleased(java.awt.event.KeyEvent evt) {
    // Use 'this.memory'
    this.memory.brother1ID = "1234";
    //(or)
    System.out.println(this.memory.brother1ID);
}

private void brotherViewButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // Use 'this.memory'
}
请看这里

try {

    Memory mem = new Memory();

    String sql = "select * from userInfo where id=?";
    pst=conn.prepareStatement(sql);
    String IDNO = mem.brother1ID;
    System.out.println(IDNO);
您正在创建内存对象,而没有设置任何值。
然后,您试图打印将为null的字符串,所有字符串变量将初始化为null,这就是为什么您得到“null”。您可以做的是将打印语句从底部的try-catch块中取出,如果数据库中有任何记录,它将打印最后的记录。

到目前为止,您所解释的情况非常混乱。我认为您需要发布您遇到问题的整个代码片段。好的,我将添加到我的帖子中。与其试图描述您的代码,为什么不简单地发布一些示例代码呢?在这里,我已经添加了一些示例代码。每次您执行
Memory mem=new Memory()
您都在创建一个全新的,完全不同的
内存实例
。它们不共享任何状态,因此您设置为一个的任何值都无法从另一个读取。请您解释一下我将如何使用此。内存将变量保存到内存类?已添加。同样,我认为您可能应该使用一些小型Java类,并使用实例变量进行实验。这是一个需要掌握的非常重要的概念,虽然大型项目可以通过查看功能获得回报,但您可能一次处理的内容有点太多。只是想知道,当您可以只执行memory.brother1ID时,为什么要使用This.memory.brother1ID?只是为了显式地访问
This
的实例变量。在这种特殊情况下,这没有什么区别,但在我看来,最好先用
this
作为实例变量访问的开头,以防您意外地拥有一个同名的局部变量。