做网站技术服务费属于什么科目,在线图片转文字识别,百度地图推广怎么收费标准,网页制作一般多少钱String类#xff1a;表示不可改变的字符串#xff0c;当前对象创建完毕之后#xff0c;该对象的内容#xff08;字符序列#xff09;是不能改变的#xff0c;一旦内容改变就是一个新的对象。
String对象的创建#xff1a; 1#xff09;#xff1a;直接赋一个字面量表示不可改变的字符串当前对象创建完毕之后该对象的内容字符序列是不能改变的一旦内容改变就是一个新的对象。
String对象的创建 1直接赋一个字面量 String str1 “ABCD”; 2通过构造器构造String str new String(“ABCD”); 面试题1两种方式有什么区别分别在内存中如何分布 常量池专门存储常量的地方。 编译常量池把字节码加载进JVM的时候存储的是字节码的相关信息不研究。 运行常量池存储常量数据研究。 解释 String str1 “ABCD”;最多创建一个String对象最少不创建String对象。如果常量池中已经存在“ABCD”那么str1直接引用此时不创建String对象否则先在常量池先创建“ABCD”内存空间再引用。 String str2 new string(“ABCD”);最多创建两个String对象至少创建一个String对象。new关键字绝对会在堆空间创建内存区域。
String对象的空值1表示引用为空null String str1 null; 没有初始化没有分配内存空间2)字符序列为空字符串string str2 ; 已经初始化分配内存空间不过没有内容。判断字符串非空 1”引用不能为空 2字符内容不能为空字符串“”; 字符串比较操作 1使用 “” 号只能比较引用的内存地址是否相同。 2使用equal方法在Object中和“”号相同建议子类覆盖equals方法去比较自己的内容 面试题2下列代码创建几个String对象 解释 String对象比较
单独使用 ” “ 引号创建的字符串都是直接量编译期就已经确定存储到常量池中使用new String(“”)创建对象会存储到对内存中是运行期才创建使用只包含直接量的字符串连接符如”aa“bb创建的也是直接量编译期就能确定存储到常量池中使用包含string直接量无final修饰符的字符串表达式如”aa“s1创建的对象是运行期才创建的存储在堆中注意变量在运行时候才知道值为多少编译的时候是不知道的 通过变量/调用方法连接字符串都只能在运行时候才能确定变量的值和方法的返回值不存在编译优化操作