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详解的更多相关文章

  1. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  2. Java的String详解

    Java的String详解 博客分类: Java javaStringString详解常用方法  Java的String类在开发时经常都会被使用到,由此可见String的重要性.经过这次认真仔细的学习 ...

  3. Python操作redis字符串(String)详解 (三)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置 ...

  4. Java字符串类型详解

    Java 字符串类主要有String.StringBuffer.StringBuilder.StringTokenizer 1.字符串类型底层都是使用char数组进行实现. 2.从jdk1.7以后,S ...

  5. C#的String.Split 分割字符串用法详解的代码

    代码期间,把代码过程经常用的内容做个珍藏,下边代码是关于C#的String.Split 分割字符串用法详解的代码,应该对码农们有些用途. 1) public string[] Split(params ...

  6. jquery $.trim()去除字符串空格详解

    jquery $.trim()去除字符串空格详解 语法 jQuery.trim()函数用于去除字符串两端的空白字符. 作用 该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止 ...

  7. JAVA IO 类库详解

    JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...

  8. Java集合类的详解与应用

    Java集合类的详解与应用 集合简介: 1.定义:可以同时存储不同类型的数据 他的存储空间会随着数据的增大而增大 2.缺点:只能存储引用数据类型 3.优点:更加合理的利用空间,封装了更多的方法,用起来 ...

  9. Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

随机推荐

  1. javascript select标签的操作

    用原生的方法对select标签的增删操作 1.选中某一个option,一般采用 option[i].selected  = true 2.添加option首先需要创建一个option的节点,然后插入到 ...

  2. nginx 代理跨域

    跨域 nginx设置http{ add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X- ...

  3. day27-反射

    1.介绍 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语 ...

  4. 17_react脚手架应用分析

    |-- index.html // 启动页(主页) |-- build //构建目录,遵循发布系统规范 | |-- index.html //静态页面 | |-- static //资源文件发布到cd ...

  5. nodejs 热更新插件

    键入命令: npm -g install supervisor supervisor必须安装到全局 可以用supervisor 来启动服务 命令supervisor app.js

  6. ReactiveX 学习笔记(2)创建数据流

    操作符(Operators) Rx 的操作符能够操作(创建/转换/组合) Observable. Creating Observables 本文主题为创建/生成 Observable 的操作符. 这里 ...

  7. webpack 自动发现 entry 的配置和引用方式

    假定我们的项目目录为如下的样子: - root/ - assets/ - app/ - global.js - index/ - index.js - auth/ - login.js - regis ...

  8. openwrt用WEB刷固件型号不对问题强行处理

    参照这里:https://blog.csdn.net/caoshunxin01/article/details/79355602 原机是一块mt7620A的通板,之前刷了一个叫WE826型号的固件,发 ...

  9. winform中datagridview刷新后的排序记忆

    datagridview先点标题排序,但是重新刷新之后,还是变成窗体加载后的样子 我这里用定时器刷新的. 1.先定义三个全局变量 /// <summary> /// 需要排序的列和方向 / ...

  10. 在Unity中使用Lua脚本

    前言:为什么要用Lua首先要说,所有编程语言里面,我最喜欢的还是C#,VisualStudio+C#,只能说太舒服了.所以说,为什么非要在unity里面用Lua呢?可能主要是闲的蛋疼.....另外还有 ...