Java里面取值(get)跟赋值(set)有什么区别
区别有:1. 取值(get):用于读取对象的属性值,不改变对象的状态;2. 赋值(set):用于修改对象的属性值,可能改变对象的状态;3. 访问控制:通过get和set方法,可以实现对属性的封装和保护;4. 扩展性:get和set方法可以加入额外的逻辑,如验证和监听。
1. 取值(get)
读取属性:get方法用于读取对象的属性值。
不改变状态:获取属性值不会改变对象的状态。
返回类型:get方法的返回类型与属性类型相同。
例子:
public int getAge() { return age; }
,用于获取age
属性。
2. 赋值(set)
修改属性:set方法用于修改对象的属性值。
可能改变状态:赋值操作可能会改变对象的状态。
无返回值:set方法通常没有返回值。
例子:
public void setAge(int age) { this.age = age; }
,用于设置age
属性。
3. 访问控制
通过get和set方法,可以控制外部对属性的访问和修改,提供封装。
4. 扩展性
在get和set方法中,可以加入额外的逻辑,如验证属性值的合法性或添加监听器。
延伸阅读
Java中直接赋值和构造方法赋值的区别
在Java中,直接赋值只会产生一个实例化对象,并且可以自动保存到对象池中,以实现对象的复用;而构造方法赋值会产生两个实例化的对象,并且不会自动入池,无法实现对象的重用。
1.直接赋值:先在字符串池中寻找是否存在和这个值相同的String对象。如果没有,则在字符串池中创建这个对象,然后返回这个对象的引用;若寻找成功,则直接返回这个引用。
2.构造方法赋值:堆允许程序在运行时动态地申请某个大小的内存空间。虽然两个对象指向同一块内容,但是他们本身是两个不同对象,只是地址相同。
直接赋值只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用;而如果使用构造方法赋值,就会开辟两块堆内存空间,并且其中一块堆内存将成为垃圾空间,此外也会对字符串共享产生问题。