目录
5.5.3 StringBuffer 、StringBuilder、String之间的关系
5.1 String类
5.1.1 声明字符串
"我是字符串" , "123456789" , "上下 左右 东西 南北"
声明一个字符串变量a, 以及声明两个字符串变量a,b。 代码如下:
String a;
String a, b;
注意:
在不给字符串变量赋值的情况下, 默认值为null, 就是空对象,如果此时调用String的方法会发生空指针异常。
5.1.2创建字符串
字符串是常量它可以显示任何文字信息,字符串的值在创建之后不能更改。在Java语言中,单引号中的内容表示字符,例如's'。而双引号的内容表示字符串,例如,"我是字符串"。
' ' 字符 1个
" " 字符串 多个
1 、引用字符串常量
String a = " 建团一百周年"
String b = ''百年校庆",c = "时间就是金钱"
String str1,str2;
str1 = "we are students";
srt2 = "we are students";
当两个字符床对象应用相同的常量时,就具有相同的实体,内存示意图如图5.1所示。
2、利用构造方法实例化
例如,使用new关键字创建String对象。代码如下:
String a = new String (" 我爱清汤小肥羊 ");
String b = new String (a);
3、利用字符数组实例化
例如,定义一个数组charArray,使用该字符数组创建一个字符串,代码如下:
char[ ] charArray = { ' t ' ,' i ' , ' m ', ' e ' };
String a = new String (charArray);
4、提取字符数组中的一部分创建字符串对象
例如, 定义一个字符数组 charArray, 从该字符数组索引3的位置开始,提取两个元素,创建字符串。代码如下:
char[ ] charArray = { ' 时 ' , ' 间 ' , ' 就 ' , ' 是 ' , ' 金 ' , ' 钱 ' };
String a = new String( charArray, 3 , 2 };
例 5.1 编写一段代码,声明多个字符串变量,用不同的赋值方法给这些字符串变量赋值。
5.2 连接字符串
5.2.1 连接字符串
连接字符串就是字符串操作中较简单的一种。可以对多个字符串进行连接,也可使字符串与其他数据类型进行连接。
String a = "建团";
String b = "建团一百周年";
b = a + b; //b = "建团一百周年"
b += a; //b = b + a ="建团一百周年"
5.2.2 连接其他数据类型
String a = "建团";
int b = 100;
String c = "周年";
String d = a + b + c; //d = "建团一百周年"
a += (b+c);
1.b+c ="100周年"
本例实现的是将字符串常量与整型变量booktime和浮点型变量practice相连后的结果出输,booktime和·practice都不是字符串,当他们与字符串连接时会自动调用toString()方法将其转换成字符串形式参与连接。
5.3 提取字符串信息
5.3.1 获取字符串长度
str . length(); //长度 字符串名
例如,定义一个字符串a,使用length()方法获取其长度。代码如下:
String a = " 建团一百周年";
int b = a.length();
5.3.2 获取指定的字符
charAt(String index)方法可将指定索引处的字符返回。语法如下:
str . charAt(index);
str:任意字符串对象。
index:char值的索引。
5.3.3 获取子字符串索引位置
1、indexOf(String str)
a . indexOf(substr);
a:任意字符串对象
substr:要搜索的字符串
查找字符e在字符串str中首次出现的索引位置。代码如下:
String str = "we are the world";
int size = str,indexOf('e'); //size的值为1
String a = "";
int b = a.indexOf("a"); //0
int c = a.IastIndexOf("a") //8
int d = a.indexOf("a", 3); //4
int e = a.lastIdexOf("a" , 7);//6
2、indexOf(String str, int formIndex)
a.indexOf(str ,formIndex);
formIndex:开始搜索的索引位置
3、public int lastIndexOf(String str)
返回指定子字符串中最右边出现处的索引。语法如下:
a.lastIndexOf(str);
4、lastIndexOf(String str,int formIndex)
返回指定子字符串在此字符串中最后一次出现的索引,从指定的索引开始反向搜索
a.lastIndexOf(str, formIndex);
5.3.4 判断字符串首尾内容
String a = "建团一百周年";
Boolean b= a.startwith("建团");//判断是否以建团结尾·
Boolean c = a.endswith("建团") // 判断是否以建团开始
5.3.5 获取字符数组
Char[ ] ch = 字符串名.toCharArray();
String a = "建团一百周年";
Char[ ] ch = a.toCharArray();
5.3.6 判断子字符串是否存在
Char[ ] ch = 字符串名.toCharArray();
String a = "建团一百周年";
Char[ ] ch = a.toCharArray();
5.4 字符串的操作
5.4.1 截取字符串
str.substring(beginIndex,endIndex);
str:任意字符串
beginIndex:起始索引(包括)
endIndex:结束索引(不包括)
5.4.2 字符串替换
1、str . replace(oldstr,newstr) //(老,新);
String a = "建团一百周年"
regex:要被替换的字符序列。
replacement:替换后的字符序列。
2、a.replace("团","校");
repalceAll();
5.4.3 字符串分割
该语法可根据给定的分隔符对字符串进行拆分,支持正则表达式,最后返回一个字符串数组。
str.split(regex)
字符串.split(子串<可传正则表达时>,次数):
5.4.4 大小写转换
大转小:字符串.toLowerCase();
小转大:字符串.toUpperCase();
5.4.5 去除空白内容
字符串.trim();
5.4.6 比较字符串是否相等
a ==b 位置
a. equals(b) 值
a.equalsIgnoreCase(b)
5.4.7 格式化字符串
String format("转换符",....)
日期和时间字符串格式化
Date d = new Date
String str = String.format("转换符",d)
5.5 可变字符串
常规类型格式化
String str = string.format("转换符", . . .)
可变字符串
String
String str = "Hello";
str = "Helloworld";
StringBuffer 有锁 安全 慢
StringBuffer sbf = new StringBuffer("Hello");
sbf = sbf.append("world");
StringBuilder 不安全 快
5.5.1 StringBuffer 类的常用方法
追加 字符串名.append(需要追加的值);
设定某一个元素值 字符串名.setCharAt(序号,值);
插入 字符串名.insert(序号,值);
反转 字符串.reverse();
删除 字符串名.delete(前序号,后序号).
5.5.2 StringBuffer 类的使用方法
StringBuffer类和StringBuilder类具有兼容的API,所以两者的使用方法也相同。
5.5.3 StringBuffer 、StringBuilder、String之间的关系
1.区别:
String 常量
StringBuffer 变量 有锁 安全 慢
StringBuilder 变量 不安全 快
2、转换:
String ->StringBuffer new StringBuffer 对象
String ->StringBuilder new StringBuilder 对象
StringBuffer ->String .toString()方法
StringBuffer->String .toString()方法
StringBuffer < - > String < - > StringBuilder