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. PAT甲级——A1042 Shuffling Machine

    Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techn ...

  2. Neo4j Desktop 管理工具的安装和应用

    安装和启动Neo4j桌面 如果您还没有,请下载 Neo4j.使用提供的说明(下载时显示),按照步骤1安装并启动Neo4j Desktop应用程序.下载页面上的步骤2说明向您展示了如何设置您的第一个项目 ...

  3. element ui table 去掉边框

    // /deep/ .el-table { // thead { // .cell { // text-align: left; // table 表头 左对齐 // } // } // .delet ...

  4. 读书笔记--Hibernate in Action 目录

    1.理解对象/关系持久化 2.启动项目 3.领域模型和元数据 4.映射持久化类 5.继承和定制类型 6.映射集合和实体关联 7.高级实体关联映射 8.遗留数据库和定制SQL 9.使用对象 10.事务和 ...

  5. 面试Nginx的几个常见问题(

    1.Nginx 服务器上的 Master 和 Worker 进程分别是什么 Master 进程:读取及评估配置和维持 Worker 进程:处理请求   2.怎么添加模块? Firstly, you h ...

  6. 基于python爬虫的github-exploitdb漏洞库监控与下载

    基于python爬虫的github-exploitdb漏洞库监控与下载 offensive.py(爬取项目历史更新内容) #!/usr/bin/env python # -*- coding:utf- ...

  7. Leetcode598.Range Addition II范围求和2

    给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 < ...

  8. nodeJs基础方法

    Node.js 是一个基于Chrome javascript 运行时建立的一个平台, 用来方便地搭建快速的 易于扩展的网络应用 Node.js 借助事件驱动, 非阻塞I/O 模型变得轻量和高效, 非常 ...

  9. Shell中字符串、数值的比较

    原文:http://apps.hi.baidu.com/share/detail/31263915 在shell中字符串与数值的比较方法是不同的,要注意区分 整数比较:    -eq       等于 ...

  10. 2017年2月27日Unicorn, US (148) and China (69), followed by the U.K. (10), India (9), Israel (5) and Germany (5).

    Revisiting The Unicorn Club Get to know the newest crowd of billion dollar startups In 2013, when Ai ...