1、String类

  用于字符串操作,本质是字符数组char[ ]。

  String对象的值是不可变的,即当你修改一个String对象的类容,JVM不会改变原来的对象,而是生成一个新String对象。

  2、构造(new)字符串

  String类的构造函数有5个,可以通过字节数组、字符数组构造对象,也可以通过String对象(即复制一个String)来创建新的String对象,还可以构造空的字符串。

  3、不可变字符串

/*串池技术*/
String name="java course";

  这种方式使用了串池(String Pool)技术,串池是一段字符串的内存缓冲区。

  如上创建字符串对象时,JVM会检查name在串池中是否存在内容相同的字符串对象,若不存在,则在池中创建一个字符串name,否则会把name指向已经存在的对象。(这样貌似很高效)

  4、字符串长度——String.length()方法,返回字符串的个数。(一个汉字也是一个字符)

  5、两个字符串比较——依次比较字符编码

/*compareTo(String s)*/
/*大于s,返回大于0的值;小于,返回小于0的值;相等,返回0。*/
String s1="abc";
String s2="abd";
int result=s1.compareTo(s2); //-1 /*compareToIgnoreCase()忽略大小写*/
String s3="aBc";
String s4="ABC";
result=s3.compareToIgnoreCase(s4); //

  

  6、equals(),判断两个String对象内容是否相同,返回true或false

  equals()在String中被重写,而“==”比较的是两个对象在内存中的地址是否一样。

  忽略大小写:equalsIgnoreCase()

  7、子串查找

  indexOf(),返回子串第一次出现的位置;

  lastIndexOf(),从字符串末尾向前找,返回第一次出现的位置;

  8、截取子串

  substring(int start,int end),不包含索引值为end的字符

  9、分割字符串  

public String[] split(String regex);

/*limit是分割后返回的字符串数组的元素个数*/
public String[] split(String regex,int limit);

  “|”、“*”、“+”作为分隔符时,要加上转义字符“\\”;“\”就要写成“\\\\”;

  多个分隔符用“|”连接,也可以在正则表达式中添加空格。

  10、int、String转换

  静态方法:valueOf(int n);

  String对象转换为数字,使用包装类Integer的静态方法int parseInt(String s),只不过必须传入数字字符串。

  11、包装类  

  Java为每个基本数据类型定义了包装类,共8种,位于java.lang下。它们的使用方式一致,实现基本数据类型与包装类的相互转换。

  为什么需要包装类?因为包装类型是一个类,有属性有方法,所以就比基本数据类型功能强大。

  自动装箱:Autoboxing,将基本数据类型自动转换为包装类。例如可以将整型变量直接复制给Integer类型的变量

  自动拆箱:Unboxing,将包装类自动转换为基本数据类型。例如:

/*加法操作中,Integer先自动转换为int,完成运算,然后再次转换为Integer*/
Integer b;
Integer y=b+2;

 

  12、增强的switch语句

  Java 7后可以在switch语句的测试条件表达式中使用String对象,其实是调用了equals()方法。

  13、StringBuffer

  也用来代表字符串,StringBuffer在进行字符串处理时,不生成新的对象,在内存的使用上优于String类。

  所以在经常需要对一个字符串进行修改操作如插入、删除,使用StringBuffer更加高效。

  两者的很多方法相同,只是StringBuffer改变对象自身。

  StringBuffer的内部使用字符数组,当放入StringBuffer对象的字符长度超过初始化时设置的字符数组长度时,需要重新开辟长度增加两倍的字符数组,并把原来的字符数组内容复制到新字符数组中。

  所以设置合适的长度,对StringBuffer的性能影响很大。

  StringBuffer的主要方法偏重对字符串进行修改操作,这也是引入StringBuffer的原因!

  14、String和StringBuffer相互转换:

String s="abc";
StringBuffer sb1=new StringBuffer("123"); StringBuffer sb2=new StringBuffer(s);
String s1=sb1.toString();

  

Java String类和StringBuffer类的更多相关文章

  1. Java 常用类String类、StringBuffer类

    常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...

  2. 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照

    本文主要介绍String类.StringBuffer类.StringBuilder类的差别  : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作 ...

  3. String类和StringBuffer类的区别

    首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...

  4. String类,StringBuffer类转字符数组

    String不可变类型和StringBuffer可变类型 String类和StringBuffer类都是字符串表示类,区别在于String对象引用变量是不可变的,而StringBuffer类对象引用变 ...

  5. 【学习笔记】String进阶:StringBuffer类(线程安全)和StringBuilder类

    一.除了使用String类存储字符串之外,还可以使用StringBuffer类存储字符串.而且它是比String类更高效的存储字符串的一种引用数据类型. 优点: 对字符串进行连接操作时,使用Strin ...

  6. String类与StringBuffer类

    String类与StringBuffer类   一.String类和StringBuffer类的区别 String类是不可变类,新建的对象为不可变对象(String类的内容和长度是固定的),一旦被创建 ...

  7. (1)StringBuilder类和StringBuffer类 (2)日期相关的类 (3)集合框架 (4)List集合

    1.StringBuilder类和StringBuffer类(查手册会用即可)1.1 基本概念 由于String类描述的字符串内容无法更改,若程序中出现大量类似的字符串时需要申请独立的内存空间单独保存 ...

  8. java中String类、StringBuilder类和StringBuffer类详解

    本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html  版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...

  9. Java String类和StringBuffer类的区别

    1.String与StringBuffer的区别简单地说,就是一个变量和常量的关系.StringBuffer对象的内容可以修改:而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象.St ...

  10. Java 基础 常用API (Object类,String类,StringBuffer类)

    Java API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底 ...

随机推荐

  1. centOS7搭建hadoop,zookeeper,hbase

    1.配置ssh免密登录 (本人使用的是centOS7虚拟机) (本人未在root用户下安装,建议使用root用户,不然很麻烦!!) ① 本机无密钥登录 1.进入~/.ssh目录(若无,则执行一次ssh ...

  2. 微信小程序 保存图片

    微信小程序 保存图片 注: 此处使用的是小程序 wepy框架, 原生或其他的请注意转换写法 <div class="handle"> <button class= ...

  3. 使用 PM2 将 Node.js 的集群变得更加容易

    介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...

  4. Twisted框架学习

    Twisted是用Python实现的基于事件驱动的网络引擎框架,是python中一个强大的异步IO库.理解twisted的一个前提是弄清楚twisted中几个核心的概念: reactor, Proto ...

  5. 2.2 Go语言基础之位运算操作

    一.位运算符 位运算符对整数在内存中的二进制位进行操作. 运算符 描述 & 参与运算的两数各对应的二进位相与. (两位均为1才为1) | 参与运算的两数各对应的二进位相或. (两位有一个为1就 ...

  6. 限定某个业务控制方法,只允许GET或POST请求方式访问

    可以在业务控制方法前,指明该业务控制方法只能接收GET或POST的请求 @Controller @RequestMapping(value="/user") public clas ...

  7. Centos7下使用Ceph-deploy快速部署Ceph分布式存储-操作记录(转)

    之前已详细介绍了Ceph分布式存储基础知识,下面简单记录下Centos7使用Ceph-deploy快速部署Ceph环境:1)基本环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  8. 九十七:CMS系统之模板抽离和个人信息页面

    模板抽取,将公共的页面抽出来作为模板 {% from 'common/_macros.html' import static %}<!DOCTYPE html><html lang= ...

  9. jQuery,javascript获得网页的高度和宽度【收藏】

    网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document.body.offset ...

  10. Java垃圾收集器与内存分配策略

    程序的计数器.虚拟机栈.本地方法栈3个区域随线程而生,随线程而灭:栈中的栈侦随着方法的进入和退出而有条不紊地执行出栈和如栈操作. 判断对象是不是已经死亡的方法: 一.引用计数算法: 给对象添加一个引用 ...