String类型字符串对象的创建

堆和栈区别:
栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享。
堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

  • ==:判断两个字符串在内存中首地址是否相同,即判断是否同一个字符串对象
  • equals():比较存储在两个字符串对象中的内容是否一致

public static void main(String[] args){
    String s=new String("abc");//使用new关键字在堆内存中创建字符串对象
    /*String s1="abc";其实编译器在后台进行String s1=new String("abc")的转换
     * 首先在栈中创建一个String类型的对象引用变量s1
     * 然后查找栈中有没有存放“abc”的地址,如果没有,则将“abc”存放进栈并令s1指向“abc”的地址
     * 如果有,则直接令s1指向“abc”的地址*/
    String s1="abc";
    // 创建了两个引用。创建了两个对象。两个引用分别指向不同的两个对象。 
    System.out.println("s和s1首地址是否相等?"+(s==s1));
    System.out.println("s和s1内容是否相等?"+s.equals(s1));
    /*
     * 只要是用new()来新建对象的,都会在堆中创建,而且其字符串是单独存值的,即使与栈中的数据相同,也不会与栈中的数据共享。*/
}

运行结果:
s和s1首地址是否相等?false
s和s1内容是否相等?true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值