Java 字符串总结
三种字符串类:String,StringBuilder,StringBuffer
String类
1. 常用构造器
| 构造器 | |
| public String(char value[]) | |
| public String(char value[],int offset,int count) |
2. 常用方法
| 方法 | 功能 |
| public char charAt(int index) | a.charAt[i]类似于C中a[i] |
| public char[] toCharArray() | |
| public String subString(int begin,int end) | |
| public boolean equals(Object o) | |
| public int length() | |
| public String trim() | 将前导和后继空格或缩进(不可见字符)去掉 |
3. String对象的不可变性
存在代码如下
String a="abab";
String b= "ab"+"ab";
System.out.println(a==b);
b="ab";
String c=b+"ab";
System.out.println(a==c);
结果为true false,原因是Java中每一个String对象都是不可变的。JVM在堆内存中为String对象开辟了一个空间叫做字符串常量池,每个已创建的String对象都会放在这个内存空间中,很显然String c指向的字符串常量和String a指向的字符串常量的地址是不同的,因此输出false。那么 之前比较String a和String b为什么又输出true了呢?,因为Java为了节省内存空间,在两个字符串常量进行连接时会检查池中是否已经存在该目标字符串,如果存在,就直接返回该串的指针。
4. String对象不好的地方
前面说过,String对象是不变的,因此一旦存在大量的String拼接等变化时,String的效率将会变得很低
StringBuilder类
1. 常用构造器
| 构造器 | |
| public StringBuilder(String str) | |
| public StringBuilder(int capacity) | 指定容量为capacity个字符 |
| public StringBuilder() | 默认容量为16个字符 |
2. 常用方法
| 方法 | 功能 |
| public StringBuilder append(String str) | 可以不设返回,简写可为a.append(b) ,也可写成a=a+b,同时,StringBuilder只能与String拼接 |
| public StringBuilder insert(int offset,String str) | |
| public StringBuilder delete(int start,int end) | |
| public StringBuilder reverse() | |
| public String toString |
3. StringBuilder的优缺点
相对于String对象,在于增删查改方面,StringBuilder效率好多了,但StringBuilder并没有对增删查改方法进行同步,因此StringBuilder类并不是线程安全的,在多线程操作时会出现问题。
StringBuffer类
相对于StringBuilder,StringBuffer增加了线程安全机制,方法实现了同步。不过构造器和方法跟StringBuilder基本一样,这里就不再记录~
不过相较于StringBuilder类,StringBuffer由于实现了同步,可能效率上要比StringBuilder要低一点,不过也很有限。

对于同一个程序,两者跑完58组数据的时间相差也就100ms左右
Java 字符串总结的更多相关文章
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- (转)Java字符串
转自:http://blog.sina.com.cn/s/blog_899678b90101brz0.html 创建字符串有两种方式:两种内存区域(字符串池,堆)1," " 引号创 ...
- Java字符串split函数的注意事项
Java字符串的split方法可以分割字符串,但和其他语言不太一样,split方法的参数不是单个字符,而是正则表达式,如果输入了竖线(|)这样的字符作为分割字符串,会出现意想不到的结果, 如, Str ...
- 关于java字符串编译优化问题
情景一:不好的字符串拼接习惯 起因是这样的:一个大牛在写了一篇关于java字符串优化问题的讲解,他提到:不要使用strObj+otherValue的方法将otherValue转换为字符串形式,因 ...
- Java字符串排列算法
Java字符串排列算法 题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多取到16个 共有多少种组合方式? 比如:取1个球可以构成的组合有 A B C D E 共5种,取2个球可以构成的组 ...
- Java字符串转换
public class StringConvertToInt{ public static void main(String[] args) { String a ="12a34bW()5 ...
- Java字符串null相加
Java字符串null相加 最近和同事讨论了下面的一段代码: String a = null; a += a; System.out.println(a); 运行结果: nullnull 本着学习的态 ...
- JAVA字符串格式化String.format()的使用
JAVA字符串格式化-String.format()的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprin ...
- Java字符串的10大热点问题,你都懂吗?
转自 威哥干JAVA http://www.codingke.com 下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧: 1.如何比较字符 ...
- java 字符串为空问题
java 字符串为空问题 String testStr = null; System.out.println(testStr); if (testStr == null) { System.out.p ...
随机推荐
- obs nginx-rtmp-module搭建流媒体服务器实现直播 ding
接下来我就简单跟大家介绍一下利用nginx来搭建流媒体服务器. 我选择的是腾讯云服务器 1.下载nginx-rtmp-module: nginx-rtmp-module的官方github地址:http ...
- 基于Flink的视频直播案例(上)
目录 数据产生 Logstash部分 Kafka部分 Flink部分 配置/准备代码 视频核心指标监控 本案例参考自阿里云的视频直播解决方案之视频核心指标监控和视频直播解决方案之直播数字化运营. 基于 ...
- 【409】Linux 系统 Testrun
文件名:Testrun #!/bin/sh PROG=./puzzle case $1 in 1) T=Tests/bad* ;; 2) T=Tests/sol* ;; 3) T=Tests/unso ...
- nodejs常用命令
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包. 1.npm install m ...
- Win10出现键盘未失灵,按下的键都是快捷键的问题
某一天,WIN10开机.然后键盘莫名其妙的都无法正常使用,没有卡Window键,键盘也没有失灵,按下的键都成为了快捷键:终于在 https://zhidao.baidu.com/question/ ...
- ACM_四数之和
四数之和 Time Limit: 2000/1000ms (Java/Others) Problem Description: 有n个不同的整数,判断能否从中选4次,4个数和刚好为m.数字可重复选取. ...
- Snackbar:用它来替换Toast 显示短提示
简介 Snackbar 它是Toast的子类.主要用来提示短暂的提示信息后,然后它自动消失. 它寄生在普通view上,具有一些基本功能. 它寄生在 CoordinatorLayout 时,有以下两个特 ...
- oracle 自定义类型 type / create type
一:Oracle中的类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nvarchar2. 2.数值类型.如:int.number(p,s).integ ...
- SQL Split函数,将一串字符串返回成table
写法一: CREATE FUNCTION [dbo].[Split] ( @str VARCHAR(MAX), --传进来的字符串 ) --分割符 ) RETURNS @t TABLE --定义一个虚 ...
- 简单3步,你即可以用上myFocus
Step 1. 在html的标签内引入相关文件 <script type="text/javascript" src="js/myfocus-2.0.0.min.j ...