11.Java中的String类讲解
使用面向对象的方式写程序,很多时候都是在直接使用别人写好的类;
JDK中提供了大量类供我们使用,不过我们不需要去学习所有的类,只需要掌握开发中常用的几个类就行了;
要用其他类只要会查API文档就行了;
1、简介
在Java中,我们使用最多的数据,除了基本类型,就是字符串了;字符串使用String类描述,
1、使用String类,不需要手动导包;
2、String类直接继承Object类;
3、String类使用final关键字修饰,不能被子类继承;
4、java中,所有字符串,都是String类的对象;
5、String对象创建之后,里面的数据不能改变;
6、如果需要经常修改字符串,应该使用字符串缓冲区;
7、相同字面值(指的就是一个字符串中双引号括起来的字符)的字符串对象,内存中只会保存一份,多个相同字面值的字符串,内存中实际是共享的;
2、String对象的内存图解
3、String类的简单问题
String str1 = “abc”;
在常量池中创建了一个字符串对象,然后将这个对象的内存地址赋值给变量str1
String str2 = new String(“abc”);
在堆内存中也创建一个对象,然后这个对象里面是常量池中字符串对象的内存地址,然后将堆内存中的对象的内存地址赋值给变量str2
String str3 = “abc”;
这个没有创建对象,直接将常量池中已经创建的对象的内存地址赋值给变量str3
- 问:执行这几行代码总共会创建几个对象?
两个对象
- 问:str1 == str2输出什么?
false
- 问:str1 == str3 输出什么?
true
4、String的常用方法
4.1 获取方法
int length(); //获取字符串的长度
char charAt( int index ) //根据指定的下标获取对应的字符数据
int indexOf( int ch ) //获取指定的字符在字符串中从前往后第一次出现的下标
int indexOf( int ch , int fromIndex ) //获取指定的字符在字符串中从指定的位置往后第一次出现的下标
int indexOf( String str ) //获取指定的字符串在字符串中从前往后第一次出现的下标
int indexOf( String str ,int fromIndex ) //获取指定的字符串在字符串中从指定的位置往后第一次出现的下标
int lastIndexOf( int ch ) //获取指定的字符在字符串中从后往前第一次出现的下标
int lastIndexOf( int ch , int fromIndex ) //获取指定的字符在字符串中从指定的位置往前第一次出现的下标
int lastIndexOf( String str ) //获取指定的字符串在字符串中从后往前第一次出现的下标
int lastIndexOf( String str ,int fromIndex ) //获取指定的字符串在字符串中从指定的位置往前第一次出现的下标
String substring( int beginIndex ); //截取字符串的子串,从指定下标开始直到字符串结束;
String substring( int beginIndex ,int endIndex ); //截取字符串的子串,从指定下标(包括)开始直到指定下标(不包括)结束;
4.2 判断和比较
boolean isEmpty() //判断字符串是否为空
boolean equals(String anString ) //判断两个字符串是否相等
boolean contains( String s ) //判断指定的字符串在源串中是否存在
boolean startsWith( String str ) //判断是否以指定的字符串开始
boolean endsWith(String str) //判断是否以指定的字符串结尾
4.3 转换
valueOf() //把其他的数据转成字符串
toCharArray() //字符串转字符数组
getBytes() //字符串转字节数组
String[] split( String str ) //按照指定的方式切割字符串为字符串数组
toUpperCase() //字符串中所有字母都转大写
toLowerCase() //字符串中所有字母都转小写
4.4 其他方法
trim() //去除两端的空格
concat(String str)//拼接字符串;
replace(char oldChar, char newChar) //用新字符替换字符串中所有老字符
replace(CharSequence target, CharSequence replacement) //用新字符串替换字符串中所有老字符串
int compareTo(String anString ) //根据两个字符串中的字符在编码表中的位置返回的是 零 正数 负数