Java 字符串比较,String 中的一些方法 == 和 equals 的详解
"==" 是比较的是两个对象的内存地址,而equals方法默认情况下是比较两个对象的内存地址.
1.String str = "hello" 生成的字符串,首先是去检查字符串常量池中是否已经存在了这个"hello" ,若存在,就不会再创建一个新的"hello",直接返回常量池中的这个字符串地址,若不存在,那么就在字符串常量池中加入这个字符串.字符串常量池,存在于方法区中.
2.String str = new String("hello"),首先是在常量池中寻找是否存在这个字符串,存在则不再建立,若不存在,则建立,之后复制一份到堆内存中!在堆内存中new一个字符串,当然如果再new一个字符串,那么他们的内存地址是不同的.但是对于new出来的字符串,利用equals的时候,他们是相同的,原因是String 中重写equals的方法中,是利用字符串转为char 数组来对每一个char进行比较,最后得出去true 或者 false. new String 一共创建两次这个对象.一个在常量池,一个在堆内存中!
3.字符串比较技巧:
利用"中国".equals(str) ,用常量equals,防止发生空指针异常.方法调用不为空......变量调用方法的时候不能为NULL,不然会出现空指针异常!
4.字节数组,字符数组 与 String 的转换
str.getBytes() , str.toCharArray() 转换为字节数组和字符数组
5.split("-") 分隔符获取字符串内容
6.subString (startindex , endindex) 一般都是包头不包尾,所以需要endindex加一,这样才切割完整
7.StringBuffer 问题: 默认的构造方法是16字符,如果添加超过了16字符,那就自动增长一倍. 已经被StringBuilder代替
String 是一开始就建立的是常量,所以不建议经常修改!如果需要频繁修改字符串内容,建议使用字符串缓冲类.是用来存储String的容器,增删查改非常方便.
利用append 方法添加.
sb.reverse() 调换
8.StringBuffer 是线程安全的 (操作效率不高), StringBuilder (操作效率高) 非线程安全,但比前快.
推荐使用 StringBuilder 因为操作效率高!
Java 字符串比较,String 中的一些方法 == 和 equals 的详解的更多相关文章
- java字符串的替换replace、replaceAll、replaceFirst的区别详解
如果不是刚刚复习了下正则表达式,我可能也不会注意到,原来String的replaceAll跟replaceFirst用到了正则表达式! 不多解释,看代码: String s = "my.te ...
- JAVA字符串格式化String.format()的使用
JAVA字符串格式化-String.format()的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprin ...
- JAVA字符串格式化-String.format()的使用 【生成随机数补0操作】
转: JAVA字符串格式化-String.format()的使用 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的s ...
- String中的“equal方法”和“==”
二话不说,先来说下重写的事情: 在Java中,String .Math.还有Integer.Double....等这些封装类重写了Object中的equals()方法,让它不再比较其对象在内存中的地址 ...
- java字符串大小写转换的两种方法
转载自:飞扬青春sina blogjava字符串大小写转换的两种方法 import java.io..* public class convertToPrintString { pu ...
- java 执行 jar 包中的 main 方法
java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...
- JAVA中的四种JSON解析方式详解
JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...
- java 流操作对文件的分割和合并的实例详解_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 java 流操作对文件的分割和合并的实例详解 学习文件的输入输出流,自己做一个小的示例,对文件进行分割和合并. 下面是代 ...
- 《手把手教你》系列基础篇(九十一)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-下篇(详解教程)
1.简介 为了方便查看和归档:(1)不同包的日志可能要放到不同的文件中,如service层和dao层的日志:(2)不同日志级别:调试.信息.警告和错误等也要分文件输出.所以宏哥今天主要介绍和分享的是: ...
随机推荐
- SQL语句获取数据库中的表主键,自增列,所有列
SQL语句获取数据库中的表主键,自增列,所有列 获取表主键 1:SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_U ...
- ViewPager和View的事件响应规则
案例背景: 当我们实现viewpager的自动切换界面操作的时候,如果需要增加点击图片viewpager停止自动切换,松开手指viewpager自动切换又继续执行的逻辑,正常思维下实现代码如下所示: ...
- CodeForces 711C Coloring Trees
简单$dp$. $dp[i][j][k]$表示:前$i$个位置染完色,第$i$个位置染的是$j$这种颜色,前$i$个位置分成了$k$组的最小花费.总复杂度$O({n^4})$. #pragma com ...
- Chapter 2 Open Book——33
My chin raised a fraction. 我的下巴抬起来了一点. 我略微抬起下颚. "No, she did not send me here. I sent myself.&q ...
- 【Python】使用多个迭代器
如果要达到多个迭代器的效果,__iter__()只需替迭代器定义新的状态对象,而不是返回self class SkipIterator: def __init__(self, wrapped): se ...
- 搭建Gitlab
这个周末好奇想搭建一个私有的Gitlab,以前折腾过一次.现在记录如下. 一.安装Ubuntu 16.04 LTS server amd64 到Virtual Box 二.安装gitlab服务器 按照 ...
- SharePoint:备份和还原
注意事项: 1.备份和还原最好都用PowerShell,用时候用管理中心会遇到错误. 2.备份PowerShell要注意数据库服务器名,要与管理中心的数据库服务器一致,用ip可能会报错. Restor ...
- Java 代码性能优化
代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...
- H264中的MapUnits
1 MapUnits 在FMO(Flexible Macroblock ordering)时,从宏块到条带组的映射是以MapUnits为基本单位,MapUnits可能为宏块,也可能是上下两个宏块(见下 ...
- linux内存管理(repost)
一 为什么需要使用虚拟内存 大家都知道,进程需要使用的代码和数据都放在内存中,比放在外存中要快很多.问题是内存空间太小了,不能满足进程的需求,而且现在都是多进程,情况更加糟糕.所以提出了虚拟内存,使得 ...