Java字符串String详解
1、String字符串
实例化String对象:
(1)直接赋值,如:String str="hello";
(2)使用关键字 new,如:String str=new String("hello");
由图可知:使用 new 的方式在堆内存中开辟了两个空间,
第一个 "hello",对象 str 没有指向,无用等待回收,
第二个 "hello",被 str 指向,有用。
所以 直接赋值(只开辟了一个空间) 的方式更常用和合理,可以节省一些空间。
字符串的内容不可更改
如:
2、String字符串常用方法
String字符串的方法较多,可以根据API给出的方法去做测试,下面是常用方法:
(1)字符串长度:length() 「数组中的是 length 属性」
(2)字符串转换数组:toCharArray()
(3)从字符串中取出指定位置的字符:charAt()
(4)字符串与byte数组的转换:getBytes()
(5)过滤字符串中存在的字符:indexOf() 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。(可以用在判断多位数是否包含某个数字时,先转成string再判断)
(6)去掉字符串的前后空格:trim() 「空格易影响到对字符串的判断,需适时去掉」
(7)从字符串中取出子字符串:subString()
(8)大小写转换:toLowerCase() toUpperCase()
(9)判断字符串的开头结尾字符:startWith() endsWith()
(10)替换String字符串中的一个字符:replace()
3、StringBuffer的常用方法:
append() insert() replace() indexOf()
StringBuffer类的应用:
为什么有的时候要用StringBuffer,而不用String:
String是不可变的,所以要对String作改动不能直接改那个String本身,而是要创建新的String,所以如果改动次数多,用String就效率不高,而StringBuffer(如果是单线程则建议用StringBuilder,不用考虑线程安全性,效率更高点)。有朋友说1.5后StringBuffer和String的拼接性能差不多则不敢苟同,如下测试在我的机器上用JDK1.8测试:
public class demo {
public static void main(String[] args) {
long l = System.currentTimeMillis();
String s = "";
for (int i = 0; i < 100000; i++) {
s += "q";
}
System.out.println(System.currentTimeMillis() - l);
System.out.println(s.substring(0, 1)); l = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 100000; i++) {
sb.append("q");
}
System.out.println(System.currentTimeMillis() - l);
System.out.println(sb.toString().substring(0, 1));
}
}
输出:
3870
q
3
q
也就是做10万次拼接,String要3.87秒,而StringBuffer则只要0.003秒,差别还是相当大的。(JDK1.6有9s多的差距)
4、StringBuilder
一个可变的字符序列,该类被设计作用StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候,建议优先考虑该类,速度比StringBuffer要快
但如果涉及到线程安全方面,建议使用StringBuffer
常用方法:
append() insert() …
Java字符串String详解的更多相关文章
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Java的String详解
Java的String详解 博客分类: Java javaStringString详解常用方法 Java的String类在开发时经常都会被使用到,由此可见String的重要性.经过这次认真仔细的学习 ...
- Python操作redis字符串(String)详解 (三)
# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置 ...
- Java字符串类型详解
Java 字符串类主要有String.StringBuffer.StringBuilder.StringTokenizer 1.字符串类型底层都是使用char数组进行实现. 2.从jdk1.7以后,S ...
- C#的String.Split 分割字符串用法详解的代码
代码期间,把代码过程经常用的内容做个珍藏,下边代码是关于C#的String.Split 分割字符串用法详解的代码,应该对码农们有些用途. 1) public string[] Split(params ...
- jquery $.trim()去除字符串空格详解
jquery $.trim()去除字符串空格详解 语法 jQuery.trim()函数用于去除字符串两端的空白字符. 作用 该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止 ...
- JAVA IO 类库详解
JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...
- Java集合类的详解与应用
Java集合类的详解与应用 集合简介: 1.定义:可以同时存储不同类型的数据 他的存储空间会随着数据的增大而增大 2.缺点:只能存储引用数据类型 3.优点:更加合理的利用空间,封装了更多的方法,用起来 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
随机推荐
- 转载:基于HALCON的模板匹配方法总结
转载链接: http://blog.csdn.net/b108074013/article/details/37657801 很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总 ...
- jmap dump文件压缩后失效
最近线上出问题,于是用jmap -dump拿到dump文件,再linux压缩后拿到windows下无效,后来又直接拿了一个没有压缩的竟然可以用...坑啊!~
- 20165304《JAVA程序设计》第四周学习总结
教材内容总结 第五章 子类与继承 1.子类声明中通常用关键字extend来定义一个子类(class 子类名 extend 父类名{}) 2.子类和父类在同一包中的继承性,继承的成员变量或方法的访问权限 ...
- java 父类引用指向子类对象---动态绑定
知识点: 1.java 中父类引用指向子类对象时动态绑定针对的只是子类重写的成员方法: 2.父类引用指向子类对象时,子类如果重写了父类的可重写方法(非private.非 final 方法),那么这个对 ...
- 使用ssh密钥登录虚拟主机里的另一台主机报警的解决方案
提示:Address 192.168.*.* maps to localhost, but this does not map back to the address - POSSIBLE BREAK ...
- 5分钟快速打造WebRTC视频聊天<转>
原文地址: 5分钟快速打造WebRTC视频聊天 百度一下WebRTC,我想也是一堆.本以为用这位朋友( 搭建WebRtc环境 )的SkyRTC-demo 就可以一马平川的实现聊天,结果折腾了半天,文本 ...
- jquery下插入标签以及clone的应用
//内部插入 插入一个儿子 //var $ele = $("<h1></h1>")//创建h1标签 // $ele.html('hello') // $el ...
- The Google File System 中文版
摘要 我们设计并实现了Google文件系统,一个面向分布式数据密集型应用的.可伸缩的分布式文件系统.虽然运行在廉价的日用硬件设备上,但是它依然了提供容错功能,为大量客户机提供了很高的总体性能. 虽然与 ...
- 一个docker镜像中的目录删除不了问题
在一个容器中,删除一个目录,失败: bash-4.2# pwd /home/zxcdn/ottcache/tomcat bash-4.2# uname -a Linux 3516b6c97679 -. ...
- Spring/SpringBoot定义统一异常错误码返回
配置 大致说下流程, 首先我们自定义一个自己的异常类CustomException,继承RuntimeException.再写一个异常管理类ExceptionManager,用来抛出自定义的异常. 然 ...