字符串String是JAVA中的一个很重要的类,因为我们日常生活中有很多操作字符的情况。在API中,字符串类提供了很多的方法使之与其他类型互相转换大大方便了我们的操作。
什么是字符串类呢。字符串就是由很多个字符组成的字符序列。
1.创建字符串对象:
A:直接给字符串对象赋值
Strings = "Hello";
B:通过构造方法传递字节数组参数
byte[]bys = {97,98,99,100,101};
Strings = new String(bys);
Strings = new String(bys,1,3); //从1开始,取得3个
C:通过构造方法传递字符数组参数
char[] chs = {'h','e','l','l','o'};
Strings = new String(chs);
String s = newString(chs,1,3);
2.字符串类中的方法。
A:判断
equals判断字符串的内容是否相同,区分大小写
equalsIgnoreCase判断字符串的内容是否相同,不区分大小写
startsWith是否以指定的字符串开头
endsWith是否以指定的字符串结尾
contains判断某个字符串是否包含指定的字符串
isEmpty判断字符串是否为空
B:获取
charAt获取指定索引处的字符
length获取字符串的长度
***注意:数组length属性,字符串有length方法.
indexOf获取指定字符/字符串第一次出现的索引
indexOf(char/String,fromIndex)从指定位置开始获取指定字符/字符串第一次出现的索引
lastIndexOf与indexOf相对应,返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
lastIndexOf(char/String,formIndex)返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
substring(intindex)从指定位置到末尾截取字符串.
subString(int beginIndex,int endIndex)从指定开始位置,到指定的末尾位置,截取字符串.
***注意:左闭右开.
/*
* 练习:给定一个字符串统计,统计大写字母,小写字母,数字出现的个数.
***注意:不包括特殊字符
String s ="aBDfacfWE309Pcafd";
*/
public class StringDemo1 {
public static void main(String[] args) {
String s ="aBDfacfWE309Pcafd";
//将字符串转换成字符数组
char[] chs =s.toCharArray();
//分别定义大写字母,小写字母和数字的统计变量
int upperNum=0;
int lowerNum=0;
int num=0;
//使用增强for循环遍历整个字符数组并判断
for(char ch:chs){
if(ch>='A'&&ch<='Z'){
upperNum++;
}
if(ch>='a'&&ch<='z'){
lowerNum++;
}
if(ch>='0'&&ch<='9'){
num++;
}
}
System.out.println("大写字母:"+upperNum);
System.out.println("小写字母:"+lowerNum);
System.out.println("数字:"+num);
}
}
C:转换
getBytes把字符串转换成一个字节数组
toCharArray把字符串转成一个字符数组
staticString copyValueOf(char[] data)返回指定数组中表示该字符序列的 String。
static String copyValueOf(char[] data, intoffset, int count)返回指定数组中表示该字符序列的 String.
toUpperCase 把字符串中所有字符串转成大写
toLowerCase 把字符串中所有字符串转成小写
concat字符串的连接
/*
* 需求:给定一个字符串,将该字符串中首字母变成大写,其余字母变成小写
* String s="aijOUWERDKcewiqoERTI";
*/
public class StringDemo {
public static void main(String[] args) {
String s="aijOUWERDKcewiqoERTI";
//将该字符串中的首字母变成大写
String s1=s.substring(0,1).toUpperCase();
//将该字符串中首字母以外的字母变成小写
String s2 =s.substring(1).toLowerCase();
//将改变后的两个字符串连接起来
s=s1.concat(s2);
System.out.println(s);
}
}
D:其他一些重要功能
替换
replace(char oldChar,char newChar)
replace(String oldString,StringnewString)
切割
String[] split(String str)
去除字符串两端的空格
Stringtrim()
按照字典(自然,a-z)顺序对字符串进行比较.
compareTo
3.StringBuffer
StringBuffer是一个可以变化长度和内容的容器。这里需要注意的是StringBuffer的内容和长度都是可变的,而String是不可变的。很多人说在使用String类的连接,替换功能的时候String的内容改变了,其实在内存中,虚拟机只是将字符串类对象的指向改变成了新的地址,而原来内存地址中的内容是没有改变的。StringBuffer和String之间是可以互相转换的,他们之所以可以互相转换,是因为彼此都有一些特殊的功能可以为操作字符串提供便利。
(1)如何获取StringBuffer类对象
A:StringBuffer buffer = new StringBuffer();
B:StringBufferbuffer = new StringBuffer("String");
C:StringBufferbuffer = new StrintBuffer(50);
(2)常用的方法
A:append(任意)
insert(索引,任意)
B:delete(intstart,int end)
C:replace(intstart,int end,String str)
D:Stringsubstring()
E:reverse()反转
(3)StringBuffer和StringBuilder的区别
线程是否安全
StringBuffer是线程安全的.
StringBuilder是线程不安全的.
以后的使用.一般都使用StringBuilder.
当明确知道会有线程安全问题,那么使用StringBuffer.
/*
* 需求:将一个字符串倒序列输出
* String s="uickabGHUIqwopcls";
*/
public class StringDemo3 {
public static void main(String[] args) {
String s="uickabGHUIqwopcls";
//将字符串对象转换为StringBuilder类,这里的转换是为了运用StringBuilder中的特殊方法
StringBuilder sb = new StringBuilder(s);
//将StringBuilder转成String
s=sb.reverse().toString();
System.out.println(s);
}
}
4.数据封装类
(1)为了方便我们更有效的进行数据操作,JAVA对数据对象进行了封装。我们可以使用这些数据封装类的方法来对数据进行更便捷的操作。
A:byte Byte
B:short Short
C:int Integer
D:long Long
E:float Float
F:double Double
G:char Character
H:boolean Boolean
(2)接下来我们学习Integer整型封装类的一些用法,其他的数据封装类都是相似的。
A:获取对象
Integeri = new Integer(int value);
Integeri = new Integer(String value);
B:常用方法
用于进制转换的方法了解
C:转换重点
从字符串到int类型
Integeri = new Integer("20");
int num = i.intValue();
Integer.parseInt("20");
Integeri = Integer.valueOf("20");
int num = i.intValue();
从int类型到字符串
10+"";
String.valueOf(10);
Integer.toString(10);
(3)装箱和拆箱
Integer i = 100; //把100装箱成Integer类型Integer i = new Integer(100)
i+= 200; //先把i拆箱成int类型的100i.intValue()
//接着进行100+200的操作
学习感悟:在今后的学习当中有很多地方要用到String和StringBuilder,他们的一些特殊方法对于操作字符串是非常有用的。JDK1.7之后改善了数据封装类的一些用法,更加方便数据操作了。
//最后把结果300装箱成Integer类型 Integer i = new Integer(300)