大家好,今天小编关注到一个比较有意思的话题,关于java语言赋值的问题,于是小编就整理了3个相关介绍Java语言赋值的解答,让我们一起看看吧。
- java中String new和直接赋值的区别?
- java中String new和直接赋值的区别?
- Java中的类,成员变量的值,在声明的时候直接赋值与在构造函数中再赋值,这个是无所谓的,还是有什么规矩?
j***a中String new和直接赋值的区别?
关于字符串String赋值,String a="123", 这种方式比String a = new String("123");效率高多了。后者其实会创建两个对象。 "123"是一个常量池里的对象,new出来的对象是存放在内存堆中的,new出来的又是一个对象。
String a = "aaa";
用这种方式的时候j***a首先在内存中寻找"aaa"字符串,如果有,就把aaa的地址给它
如果没有则创建
String a = new String("aaa");
是不管内存中有没有"aaa"
都开辟一块新内存保存它
String a = "aaa";
String b = "aaa";
j***a中String new和直接赋值的区别?
关于字符串String赋值,String a="123", 这种方式比String a = new String("123");效率高多了。后者其实会创建两个对象。 "123"是一个常量池里的对象,new出来的对象是存放在内存堆中的,new出来的又是一个对象。
String a = "aaa";
用这种方式的时候j***a首先在内存中寻找"aaa"字符串,如果有,就把aaa的地址给它
如果没有则创建
String a = new String("aaa");
是不管内存中有没有"aaa"
都开辟一块新内存保存它
可以用以下方法验证下
String a = "aaa";
String b = "aaa";
J***a中的类,成员变量的值,在声明的时候直接赋值与在构造函数中再赋值,这个是无所谓的,还是有什么规矩?
声明的时候,不管你是否赋值,不同的类型(Build-in的基本类型和Class)都有缺省的值,比如int就是0,Object就是null.
所以,如果没有特别的初始赋值,不用在构造函数里去初始化properties / Fields,加重对象创建时无谓的负担;换言之,如果在对象创建时期没有特别的初始化要求,缺省构造函数也不不用写,JVM自己知道处理。
显示的构造函数自有其使用的场合。它给你提供了一种时机,在对象被创建的时候做一些定制化的、初始化的工作。举个例子,比如你的class里有个成员是:
private List<Member> memebers;
你想统一一下getMembers()的行为,也就是说,不管有没有member,都返回一个List对象,而不是时而为null,时而为List<Member>,给Caller添麻烦。
this.members = new ArrayList<Member>();
这样子,即便这个对象刚刚被new出来,在上面调用getMembers也不会返回null。
到此,以上就是小编对于j***a语言赋值的问题就介绍到这了,希望介绍关于j***a语言赋值的3点解答对大家有用。