Java类中的变量值通过方法

时间:2016-06-22 20:06:35

标签: java class

考虑这个课程:

belongs_to :intellectual_object
belongs_to :generic_file

在我的主要内容中我这样做:

public class Save extends Application {

    public int num1;
    public int count;

    public Save(int n1){
        num1=n1;
        count=1;
    }

    public int getcount()
    {
        return (count);
    }

}

现在 new Save(15); Integer result = new Save().getcount(); 的值应为1,而result则为0.

4 个答案:

答案 0 :(得分:1)

在第2行中,您正在初始化Save的新实例,而不是使用之前在第1行初始化的实例。

你可以这样引用前一个:

 ...
 Save mySave = new Save(15);
 Integer result = mySave.getcount();

答案 1 :(得分:1)

我不确定你是如何编译的,因为它会报告你没有将正确数量的参数传递给构造函数,但是为什么(假设)发生这种情况的解释如下:

考虑您的代码行:

Integer result = new Save().getcount();

由于你永远不会通过传递参数给count赋予任何值,因此它的默认值为0,因为字段具有默认值,而且整数为0。还要注意这一行:

new Save(15);

什么都不做。它创建一个新的Save对象,然后立即将其标记为垃圾收集,因为没有对它的引用。您可能想要为构造函数传递参数,如下所示:

Integer result = new Save(SOME_NUMBER).getcount(); //result is 1

这将正确调用构造函数并将count初始化为1。

根据您的代码,我假设您希望count变为静态,因为您想要计算您的课程实例的数量:

public static int count;

...

public static int getCount() { //Follow Java conventions - use camelCase
    return count;
}

...

//In main
new Save(15);
Integer x = Save.getCount(); //1 instance

答案 2 :(得分:0)

所以这是你的问题

 new Save(15);
 Integer result = new Save().getcount();

应该是

 Save save = new Save(15);
 Integer result = save.getcount();

Integer result = (new Save(15)).getcount();

当您获得计数初始化为0时,您进行新的保存。您应该保留一个保存实例。

答案 3 :(得分:0)

您提供的代码将无法编译。因为Save类定义了一个构造函数并且只接受一个参数。这将删除默认构造函数。因此new Save()行会出现编译错误。

我的猜测是,您正在寻找计算创建Save对象的时间(在这种情况下,应该完成count ++)或者您正在尝试检查Save对象是否至少创建一次(使用整数1为布尔值true) 在任何一种情况下,count字段和getCount()方法都应声明为静态。并使用Save.getCount()调用该方法。

我添加了工作代码,用于计算在此java online compiler ide - codiva中创建Save对象的次数。

PS:如果我对你想要的东西的理解不正确,请澄清你想要达到的目标。通过将代码段包含在http://ideone.comhttps://www.codiva.io 等在线Java中,也可以让其他人轻松获得帮助