String类的常用方法和StringBuilder

来源:互联网 发布:javascript 隐藏鼠标 编辑:程序博客网 时间:2024/05/19 03:43

String类的介绍:
1.(重点)String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
所有用双引号引起来的字符串常量,都作为String类的对象.
【注意】:虽然没有写new,但是只要用双引号引起来的字符串都是String类对象
2.(重点)【特别特别注意】字符串的内容是不可发生改变的,你用方法得到的是一个新数组(原数组没有改变)

       原因是String内部使用的字符数组被private【String内部的数组的内容不能发生改变了】关键字       和final【final关键字修饰后,表示String内部定义的数组不能变化成其它数组了】关键字修饰了   3.(重点)println对于String进行了特殊处理,直接打印的是内容,而不是地址.(包括字符数组)   4.String类在java.lang包下,不需要导包   5.字符串的实质上是一个字符数组char[];

1.创建对象(3+1)
1.public String(String original)把字符串数据封装成字符串对象
//如:String str = new String(“HelloWorld”);
2.public String(char[] value)把字符数组的数据封装成字符串对象
3.public String(char[] value,int offset,int count)
//把字符数组中的一部分数据封装成字符串对象(索引从0开始计数)count从后取几个数
char[] value:字符数组
int offset:获取的字符串中的起始字符的索引
int count:向后取多少个
4. 直接赋值也可以是一个对象(定义一个字符串变量)如:string str = “HelloWorld”
注意:字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中的数据。

2.判断方法

boolean equals(Object obj):比较字符串的内容是否相同(区分大小写)
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean startsWith(String str):判断字符串对象是否以指定的str开头(区分大小写)
boolean endsWith(String str):判断字符串对象是否以指定的str结尾(区分大小写)

3.获取方法
int length():获取字符串的长度,其实也就是字符个数
char charAt(int index):获取指定索引处的字符(传入索引(满足从0开始计数))
int (String str):获取str在字符串对象中第一次出现的索引,没有返回-1,有返回其它值(区分大小写)
/ String str2 = “ILoveJava”;
int index1 = str2.indexOf(“java”);
System.out.println(“indexOf(): “+index1);//-1 /
String substring(int start):从start开始截取字符串到字符串结尾(满足从0开始计数)
String substring(int start,int end):从start开始,到end结束截取字符串;包括start,不包括end(满足从0开始计数)

4.转换方法
char[] toCharArray():把字符串转换为字符数组//(字符数组是可以直接打印的)
String toLowerCase():把字符串转换为小写字符串
String toUpperCase():把字符串转换为大写字符串

5.去除空白和切割方法
String trim()去除字符串两端空格
String[] split(String str)按照指定符号分割字符串
补充:
//调用Arrays类中的toString方法
//[它的作用是传入任意类型的数组,打印出固定格式(如:[aa,bb,cc,dd])]

6.替换方法
String replace(char oldChar,char newChar)替换字符串中的单个字符
String replace(CharSequence oldStr, CharSequence newStr)替换字符串中的指定内容
如:/ String newStr3 = str.replace(“do”, “done”);
System.out.println(“原字符串: “+str);//原字符串: How do you do?
System.out.println(“replace(): ” + newStr3);//replace(): How done you done? /

第2-6是String类的方法,所以所有的String类得对象,都具有该功能
7.[1]StringBuilder.使用
(1)添加方法:public StringBuilder append(任意类型):添加数据,并返回自身对象
(2)反转方法:public reverse()
[2]StringBuilder与String的互相转换?
1.String—>StringBuilder
(1)利用有参构造方法:
public StringBuilder(String str) 构造一个StringBuilder容器,并将字符串添加进去
(2)利用空参构造:
public StringBuilder() 构造一个空的StringBuilder容器
在调用append方法进行添加操作
2.StringBuilder—>String
调用StringBuilder对象的toString方法

8.特别补充(1)
一.如何通过Scanner获取一个字符串
1.通过next方法获取字符串,但是不能包含空格
注意:前面的空格\tab\回车都认为是无效的,第一个有效字符后面的第一个空格\tab\回车都认为是录入结束的标记
2.通过nextLine方法获取的字符串,可以包含空格
注意:回车换行作为录入的一行数据的结束标志

二.next方法和nextLine方法的区别?
1.next中不能包含空格,nextLine中可以包含空格
2.当使用next、nextInt、nextDouble,是按照一个队列索引,排队获取数据,不会抢【回车】
nextLine方法不排队,【抢回车】
解决方案:
1.为nextLine方法专门定义一个Scanner
2.如果前面使用的是nextInt等方法,后面在使用nextLine的时候,多写一句nextLine

    对于nextLine方法,要全部使用nextLine,要全部不使用nextLine

9.特别补充(2)
通过构造方法和字符串常量的形式创建String类的对象的区别?
String str = new String(“Hello”);
String str = “Hello”;
注意:
基本数据类型,==是对数据内容进行比较的
引用类型,==是对地址值进行比较的
如:
String str1 = new String(“Hello”);
String str2 = “Hello”;
String str3 = “Hello”;
System.out.println(str1==str2);//false
System.out.println(str1==str3);//false
System.out.println(str2==str3);//true

原创粉丝点击