实体对象中,有一个get方法我需要多次调用,需不需要定义一个变量,然后使用这个变量。

例如
public class Test{
private int id;

public int getId(){

return id;

}
public setId(int id){
this.id=id;

}
}
假如,我现在需要用getId()这个方法来做比较。
test.getId()很多地方都需要用到。我不定义一个变量,和定一个变量来使用。有什么区别。
-----------------------------上面是一个实体类,忽略。下面是我想问的-------------------------------
if(test.getId()==1){
}else if(test.getId()==2){
}else if(test.getId() == 3){}
和下面这种写法比较,哪个较好。为什么?(一个把test.getId赋值给了int id的一个变量,一个就直接用test.getId()去做比较,当test.getId()用得比较多的时候,哪种方式比较好)
int id = test.getId();
if(id == 1){
}else if(id == 2){
}else if(id == 3){
}

如果你定义了id这个变量。那么类中的getId和setId就是用来操作这个变量的。如果你不定义id这个属性的话。可以在类中写:
public int getId(){
return 2;
}
这样你调用getId这个方法的时跟之前说的就不一样了。
反正你test.getId()很多地方调用,其实你只需要定义一个属性id然后写上get和set方法,然后掉了无论你怎么比较,什么时候用都不会出问题。所以说你定义一个变量和不定义一个变量关键是看你用的时候的场景。一般一个实体类中有属性的话。就需要提供get和set方法。set是给这个变量设置值,get是拿到id存放的值。如果你不定义id。那么get和set可以用来处理业务逻辑。就是普通的一个处理方法而已。
不知道你是否看懂我的意思,你的问题有点没问明白。你要是不太懂可以私下聊。

我看完你的题目了,你的意思我明白了:
你上面的题用id来接收这种方法要好些:只需要用到一次对象调用方法。不然上面那种发放每次判断都要通过对象去调用,肯定效率就低了很多。
不过最好的写法是这样的:
int id = test.getId();
if(1 == id){
}else if(2 == id){
}else if(3 == id){
}
这样子会更好,尤其是字符串的时候。追问

呵呵,能说说具体点的原理吗。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-26
你这不是静态方法,必须要 new 一个实例出来 才可以调用。也就是必须定义一个变量并且要new才可以使用。
针对你上面的代码,后一种方法更简捷,更便于阅读,推荐使用第二种。
从程序执行效率上也推荐使用第二种。
第2个回答  2013-03-27
定义一个id变量是为了接收getId()传过来的值,可以减少代码量,也可以提高效率,不用再去调用getId这个方法。你应该是个初学者,可以去下载些视频资料学习,这样速度更快,比在这一个一个的问来的快。有不懂再问我,扣扣及百度名。
第3个回答  2013-03-26
如果需要频繁使用获取的值,用一个变量把这个值存起来可能性能好一点。一般的使用就直接get就行了。追问

我想知道他们内部的一些机制是怎样的。如果用得比较多的话,定义一个变量应该是会好点的。但是我不知道他在同一个方法里面,调用相同的属性的时候是重新取,或者还是取原来的。

追答

调用一次get就重新取一遍;但是如果用一个局部变量暂存它,那该就只取一次。这里不需要太纠结这个问题,值都是一样的,举个例子吧,向别人借东西,每次调用get的话就是借一次用一次,后者就是借过来用几次再还。

追问

我比较关心这个效率和资源占用的问题,倒不是纠结这个get用几次。呵呵。谢谢。

追答

各有利弊。用一次取一次,要反复去拿值;取一次存起来,需要申请一个变量空间来保存它。

本回答被提问者采纳
第4个回答  2013-03-26
都一样的,没有区别,编程不要居于条款。适用可读就行。当然若很多个类中都存在id属性,建议你建一个抽象类来定义id,其它的类继承该抽象类,这样符合面向对象的思想

实体对象中,有一个get方法我需要多次调用,需不需要定义一个变量,然后...
反正你test.getId()很多地方调用,其实你只需要定义一个属性id然后写上get和set方法,然后掉了无论你怎么比较,什么时候用都不会出问题。所以说你定义一个变量和不定义一个变量关键是看你用的时候的场景。一般一个实体类中有属性的话。就需要提供get和set方法。set是给这个变量设置值,get是拿到id存放...

实体类创建一个对象以后,直接调用get方法怎么没有报空指针错误?_百度...
1、布尔型(boolean)变量默认值为false,byte、short、int、long为0,字符型为'\'(空字符),浮点型(float double)为0.0,引用类型(String)为null 可以先看看java编程思想前九章

java中一个类想调用另一个类的变量,必须到方法里面吗,直接在类里面能不...
java 不能在类中初始化引用,所以不能直接在类中new一个对象出来,要使用其他类的变量,必须在自己的类的方法中先创建被引用类的实例,通过实例来引用该类的变量,但是,如果被引用的类的变量是静态的,则可以通过如下指令引用:类名.变量 来直接引用这个变量。

在C++中,如果一个函数中有多个变量,在调用后希望全部保留以供继续使用...
可以将变量设置为【全局变量】,使得改变量在整个程序中起作用 当然,也可以设置为【静态变量】,效果是一样的 建议看一下变量的作用域和生存期方面的知识,就会很容易懂了 希望对你有帮助o(∩_∩)o

java的get和set方法
你说出你的名字就调用了你的get方法,反之如果给你取名字调用的就是你的set方法,get和set方法不是一定要必须两者都有,你可以根据实际情况而定。get方法是用来得到对象里属性的值,set方法相反,是用来给对象的属性设值的。get方法一般是得到成员变量的值,set是设置一个成员变量的值 ...

C#中如何在一个窗体中调用另一个窗体控件中的数据?
该例子使用对话框形式调用另一个窗体:Form2 frm = new Form2();frm.ShowDialog();textBox1.Text = frm.textBox2.Text;在上面的代码中,我们实例化了窗体Form2,并调用了ShowDialog()方法将其显示为模态对话框。 然后,我们读取了窗体Form2中textBox2的文本,并将其分配给主窗体中的textBox1。

java怎么调用变量来调用方法?
在Java中,如果要调用一个方法,你可以使用下面的语法:Copy codevariable.method();其中,variable是要调用方法的对象,method()是该对象所对应的方法。例如,假设你有一个字符串变量str,要调用该字符串的toUpperCase()方法来将字符串转换为大写,你可以使用如下代码:str.toUpperCase();请注意,调用方法...

一个类中如何调用另一个类方法中的变量?
方法中的变量如果不是静态的,那么是无法调用的。一个类中调用另外一个类的变量,方法三个,如下:1.如果是静态的变量,那么直接根据:类名.变量名 来调用。2.如果是普通变量,那么要根据:类的对象.变量名 来调用。3.根据get()方法返回这个变量 ...

C# 进行变量定义时为什么要定义一个公有一个私有,两个变量再相互调用啊...
也许你看到的是比较简单的,也就是直接返回return name,但是也有很多场合是需要name经过一些列转换才return的,这当然也可以用一个public的函数来代替,但是Name是属性,name是字段,字段不能公开,属性才能公开,这是面向对象的一种良好的设计。

2个javascript脚本中变量问题
不可以的 如果是在jsp文本中你可以给他返回给一个变量值 通过隐藏文本域写出这个值 然后在第二个js中通过 document.getElementById("").value得到这个值 就可以在第二个脚本中用了

相似回答