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. django之setup()

    #django包的__init__.py包含setup函数def setup(): """ Configure the settings (this happens as ...

  2. easyui datagrid取消点击行的选中事件

    http://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&theme=material&dir=ltr&pitem= ...

  3. vue:vue引入组建的多种写法

    vue的路由组件中,引入模块的两种写法:(@等价于..)死的写法:不是按需加载1:import Index from '@/components/Index'(import Index from '. ...

  4. 如何启用windows8, windows10中被停用的远程桌面,如何连接windows10远程桌面?

    针对windows8.x中文版以及win10无远程桌面功能的解决办法: 第一步到一个网站上下载一个工具包. 这个是开源的.可以放心使用.下载地址: https://github.com/binarym ...

  5. B树、B-树、B+树、B*树的定义和区分

    MySQL是基于B+树聚集索引组织表 B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右 ...

  6. linux 3.10 的又一次hung

    最近又遇到一次hung,dmesg中堆栈如下: [176223.913270] ------------[ cut here ]------------ [ PID: at net/sched/sch ...

  7. 22.多线程.md

    目录 1.线程的创建和启动 1.1继承Thread类创建线程 1.2继承Runnable接口实现创建线程 1.3使用Callable和Future创建 2.控制线程 2.1 Thread类的join方 ...

  8. 利用原生态的(System.Web.Extensions)JavaScriptSerializer将mvc 前台提交到controller序列化复杂对象

    主要代码如下: public JsonResult Test() { string s = Request.Form.ToString(); JavaScriptSerializer jss = ne ...

  9. linux基本命令练习

    1. 熟悉linux命令并且练习用法以及应用场景. 初学者完成Linux系统分区及安装之后,需熟练掌握Linux系统管理必备命令,命令包括:cd.ls.pwd.clear. chmod.chown.c ...

  10. OpenCV SVM

    #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <ope ...