Java基础-java字符串

本文主要探讨Java中的字符串,涉及字符串常量池的工作原理、`==`与`equals`的区别、String类中的equals方法实现、字符串拼接的内部机制、不可变字符串的特性以及空串和Null串的差异。同时,列举并解释了多个常用的String API,如length()、charAt()、indexOf()、endsWith()等。
摘要由CSDN通过智能技术生成

1.字符串常量池

字符串常量池是把经常用到的数据存放到内存中,避免频繁的数据创建和销毁,实现数据的共享,提高系统的性能

内存情况:虚拟机首先在常量池中查找该字符串是否存在,如果已经存在,则返回该引用,如果不存在,则在字符串常量池中创建该字符串对象,然后到字符串常量池中注册该字符串

当我们用new关键字创建字符串常量的时候,会先在堆内存中开辟一段内存空间,然后该内存会用来存储字符串常量的地址

2.==和equals的区别

基本数据类型==比较的是它的值


引用数据类型 

当用==比较的时候,比较的是它们在内存中存放的地址,只有同一个new出来的对象才是true


Java所有类都继承了Object这个基类,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些库中这些方法被覆盖掉了,比如String,Interger,Date在这些类中equals不是比较堆中的地址了,而是有它自己的含义


String中的equals方法

1.首先比较两个字符串的地址是否相同,如果相同返回true

2.如果字符串地址不同,首先判断是否属于String,如果是再比较里面的内容是否相同

3.字符串拼接

用“+”进行字符串拼接的时候,我们调用的是StringBulider的两个方法append和toString方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值