栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

String创建对象区别(面试)(学习笔记)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

String创建对象区别(面试)(学习笔记)


只要String在没有通过new创建新的字符串对象,相同的字符串无论出现多少次,都是同一个;但一旦new创建新的了,就会申请新的空间来存储,即使内容相同,但是地址不同也不能当做同一个使用

char[] chs = {'h','e','l','l','o'};
String s1 = new String(chs);
String s2 = new String(chs);
String s3 = "hello";
String s4 = "hello";
//1
System.out.println((s1==s2)+","+(s1==s3)+","+(s3==s4));//false  false  true
//2
System.out.println((s1.equals(s2))+","+(s1.equals(s3))+","+(s3.equals(s4)));//true  true  true

public static void main(String[] args) {
    String s1 = "abc";
    String s2 = "abc";
    String s3 = "ABC";
    String s4 = "a";
    String s5 = s4 + "bc";//这句代码相当于有new创建了个内存空间,所以s2不等于s5
    String s6 = "a" + "bc";//这种拼接出来的没有new创建新的内存空间,所以s2等于s6
    //1
    System.out.println(s1.equals(s2)+" "+s1.equalsIgnoreCase(s3)+" "+s2.equals(s5)+" "+s3.equalsIgnoreCase(s5));//true true true true
    //2
    System.out.println((s1==s2)+" "+(s1==s3)+" "+(s2==s5)+" "+(s2==s6));//true false false true
    
    //利用字符串定义的变量拼接别的东西就相当于新开了一个内存空间
    //在通过字符串拼接字符串没有开辟新的内存空间
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760818.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号