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引入了新的类型— ...
随机推荐
- Hive安装 和管理
- js event
event jquery获取: 在jquery中调用函数中最多只能有event这一个参数,所有的值在event.data中可以获取. $('select').click(function(event) ...
- English-旅游英语及情景对话
1.旅游英语:预订机票情景对话及常用句型 目前,越来越多的人都选择以飞机为出行方式.但是如何用一口流利的英语订机票呢?这里我们替你总结了一些情景对话,还有一些常用的句型.大家都来学一学吧~A:Good ...
- 16_虚拟dom和dom diff算法
虚拟dom的作用:是为了减少操作真实的dom 初始化显示界面的过程: 1.创建虚拟dom树——>真实dom树——>绘制页面显示 更新界面的过程: 2.绘制页面显示——>setStat ...
- 04_JSX练习
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- zookeeper windows7下集群搭建
模拟分布式环境!!! 搞了好几天,各种错误!!终于成功了. 环境: windows7 /centos/xsheel 安装了三个虚拟机... 1.下载zookeeper http://archi ...
- 关于nginx多层uptstream转发获取客户端真实IP的问题
因为公司有个需求需要获取客户端的真实IP,前端是haproxy,后面是nginx,本来这个需求不难完成,但是难就难在是https请求也就是ssl 由于个人水平有限,在网上爬了很多资料,刚开始的ha是通 ...
- 如何设置java环境变量
以安装目录是E:\Program Files\Java\jDK1.7.0为例:
- asp.net中的reportview报错跟预编有关系
当报表控件出现: 报表定义无效.详细信息:根级别上的数据无效.行1,位置1. 先检查一下,你的aspx文件是不是变成了这样一句话 这是预编译工具生成的标记文件,不应被删除! 如果这样的话,报表控件是不 ...
- 一个漂亮的 PlaceHolder
预览: 不知道为什么下面这个窗口中的 JavaScript 代码没有运行-_-||,想看实际效果就把下面的代码保存下来打开看吧. 代码: <!DOCTYPE HTML> <html ...