String

String对象一旦创建就不能改变 是常量

需要进行大量字符串操作应采用StringBuffer/StringBuilder  最终结果转换成String对象

StringBuffer

线程安全的  可变字符序列

一个类似于String的字符串缓冲区(字符数组)

常用方法

  length(  )  返回容器(字符)个数

capacity()容量

  append(String str )  添加字符

  insert(int offset, String str)在指定字符插入字符

  indexof(String str)在字符数组首次出现 的下标

indexof(String str,int fromIndex)查找字符串首次出现的位置,从某个位置开始

lastindexof(String str)在字符数组最后出现 的下标

  reverse( )字符反转

  toString()转换为对应的字符串

StringBuilder

线程不安全的 单线程使用   与StringBuffer相比通常优先于StringBuilder,因为它支持所有相同的操作,但因为它不执行同步,所以更快

package com.pojo;

public class StringBuilderDemo {
public static void main(String[] args) {
//StringBuilder sb="abc";//不兼容的类型
//StringBuilder sb=new StringBuilder();//默认16个字符大小的容量
//StringBuilder sb=new StringBuilder();//初始化100容量大小
//StringBuilder sb=new StringBuilder("abc");
StringBuilder sb=new StringBuilder();
sb.append("hello");
sb.append(1.5);
sb.append(true);
System.out.println(sb.length());
System.out.println(sb.capacity());//容量大小
System.out.println(sb.insert(5, "word"));
System.out.println(sb.reverse());//反转
System.out.println(sb.replace(5, 7, "111"));
System.out.println(sb.substring(1, 2));//截取字符串
System.out.println(sb.indexOf("rt"));
}
}

  

案例

package com.pojo;

import java.util.Arrays;

public class MyStringBuilder {
public static void main(String[] args) {
MyStringBuilderDemo m=new MyStringBuilderDemo();
m.append("hello");
m.append(",java");
m.append("123456");
System.out.println(m.length()+""+m.capacity()+""+m.toString());
}
} class MyStringBuilderDemo{
private char[] value;//字符数组
private int count=0;//字符数组中存放字符的个数
public MyStringBuilderDemo() {
value=new char[16];
}
public MyStringBuilderDemo(int capacity) {
value=new char[capacity];
} public MyStringBuilderDemo(String str) {
value=new char[str.length()+16];
}
//得到字符数组中的字符个数
public int length() {
return count;
}
//返回容器的容器大小
public int capacity() {
return value.length; }
//实现字符串的添加
public MyStringBuilderDemo append(String str) { int len=str.length();//获取要添加字符串的长度
//确保字符数组能放进去所添加的字符串
ensureCapacity(count+len);
//把要添加的字符串追加到新的指定数组的指定位置后面
str.getChars(0, len,value ,count);
count+=len;//元素个数增加了
return this;
} private void ensureCapacity(int Capacity) {
//数据超出容量大小 扩容
if (Capacity-value.length>0) {
int newCapacity=value.length*2+2;//扩容后新字符数组的大小
value=Arrays.copyOf(value, newCapacity);
}
}
//把字符数组转换成字符串显示
public String toString() {
return new String(value, 0, count); } }

  

JAVA高级特性--String/StringBuffer/Builder的更多相关文章

  1. Java高级特性-String、StringBuffer和StringBuilder

    Java高级特性-String.StringBuffer和StringBuilder String Java语言中的字符串值都属于String类,虽然有其他方法表示字符串(如字符串数组),但Java一 ...

  2. paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型

    paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...

  3. java高级特性增强

    第4天 java高级特性增强 今天内容安排: 1.掌握多线程 2.掌握并发包下的队列 3.了解JMS 4.掌握JVM技术 5.掌握反射和动态代理 java多线程增强 .1. java多线程基本知识 . ...

  4. Java高级特性——反射机制(第二篇)

    在Java高级特性——反射机制(第一篇)中,写了很多反射的实例,可能对于Class的了解还是有点迷糊,那么我们试着从内存角度去分析一下. Java内存 从上图可以看出,Java将内存分为堆.栈.方法区 ...

  5. Java高级特性1_流库_初体验

    Java高级特性流库_初体验 面对结果编程 在编程里, 有两种编程方式, 一种是面对过程编程, 一种是面对结果编程. 两者区别如下 面向过程编程 面向过程编程需要编程程序让程序依次执行得到自己想要的结 ...

  6. 云端卫士实战录 | Java高级特性之多线程

    <实战录>导语 一转眼作为一名Java开发者已经四年多时间了,说长不长说短不短,对于java的感情还是比较深的,主要嘛毕竟它给了我饭吃.哈哈,开个玩笑.今天我想借此机会来和大家聊聊Java ...

  7. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  8. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  9. Java学习笔记--String StringBuffer StringBuilder

    String StringBuffer StringBuilder String http://docs.oracle.com/javase/7/docs/api/ 中文: http://www.cn ...

随机推荐

  1. nodejs+express 初学(三)

    Nodejs 的模块,nodejs中每一个js文件都是独立的,不用担心他们中的变量会相互覆盖 模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个Node.js 文件就 ...

  2. 高斯消元和高斯约旦消元 Gauss(-Jordan) Elimination

    高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵. 在讲算法前先介绍些概念 矩阵的初等变换 矩阵的初等变换又分为矩阵的初等行变换和矩阵的初等列变换 ...

  3. Qt运行不出现界面

    安装Qt之后按照例程运行,结果不出现界面,原因是路径中有中文,将中文全部改成英文之后,问题解决.

  4. Django项目:CRM(客户关系管理系统)--38--30PerfectCRM实现King_admin编辑自定义字段验证

    # kingadmin.py # ————————04PerfectCRM实现King_admin注册功能———————— from crm import models #print("ki ...

  5. html5绘图工具选择

    1. Chart.js 基于html5, 完全开源免费 功能过于简单,只有6种图,能满足小系统需求,使用简便,效果比较炫. http://www.bootcss.com/p/chart.js/ 2. ...

  6. npm常用命令及版本号

    npm 包管理器的常用命令 测试环境为node>=8.1.3&&npm>=5.0.3 1, 首先是安装命令 //全局安装 npm install 模块名 -g //本地安装 ...

  7. 遍历list时删除元素的正确做法

    我们往往会遇到需要删除list中满足条件的元素.举例: List<string> list_str =new List<string>() { "A",&q ...

  8. session失效刷新后登录页面嵌入在iframe中的解决办法

    在login页面中添加以下一段代码:   var _topWin = window;  while (_topWin != _topWin.parent.window) {       _topWin ...

  9. 有趣的HTML5 Web 存储

    HTML5 web 存储,一个比cookie更好的本地存储方式. 什么是 HTML5 Web 存储? 使用HTML5可以在本地存储用户的浏览数据. 早些时候,本地存储使用的是 cookie.但是Web ...

  10. WPF 如何显示gif

    最近碰到了要显示表情的需求,而表情刚好是gif的图片. 于是用了Image试了下,发现不行,只会显示第一帧,然后上网查了下资料,大致有这么几种方法,都可以实现. 第一种: 使用Winfrom里面的pi ...