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对象的内存图解

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() //去除两端的空格
  
concatString str//拼接字符串;
  
replace(char oldChar, char newChar) //用新字符替换字符串中所有老字符
  
replace(CharSequence target, CharSequence replacement) //用新字符串替换字符串中所有老字符串
  
int compareTo(String anString ) //根据两个字符串中的字符在编码表中的位置返回的是 零  正数  负数