黑马程序员_String类

本文深入探讨Java中字符串类String的特点与方法,以及如何高效地使用StringBuffer和StringBuilder进行字符串操作。同时,介绍了基本数据类型包装类的用途及进制转换方法,帮助开发者更好地理解和应用Java的字符串处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、概述

String类适用于描述字符串事物,提供了多个方法对字符串进行操作。

特点:字符串一旦被初始化就不可以被改变,存放在方法区中的常量池中。


实例代码1:

String s1="abc";//s1指向的内存中只有一个对象abc
String s2 = new String("abc");//s2指向的内容中有两个对象abc、new

System.out.println(s1==s2);
//false,s1创建后,是在字符串常量池中创建了一个"abc"字符串对象。
//而s2是在堆内存中创建了另外一个"abc"字符串对象。所以,两个对象不是同一个对象。
System.out.println(s1.equal(s2));
//true,字符串中equals比较的是字符串的内容是否相同

实例代码2:

String s1 = "abc";
s1 = "kk"//输出结果s1=kk
//因为s1变量储存的地址变了,指向了kk,abc继续留在在内存中

二、字符串的方法

1、获取

1.1获取字符串长度

int  length();


1.2根据位置获取指定的字符

char charAt(int index);//当访问到字符串不存在的角标时会发生角标越界异常


1.3获取指定字符的位置。如果不存在返回-1,所以可以通过返回值-1来判断某一个字符不存在的情况。既可以判断是否存在又可以获取位置。

int indexOf(int ch);//返回第一次找到的字符角标

int indexOf(int ch,int fromindex);//返回从指定位置开始第一次找到的角标

int indexOf(String str);//返回第一次找到的字符串角标

int indexOf(String str,int fromIndex)//返回从指定位置开始,第一次找到str的位置

int lastindexOf(int ch);//反向索引


2、判断

2.1字符串中包含指定的字符串吗?

boolean contains(String substring);

2.2字符串是否以指定字符串开头?

boolean startsWith(string);

2.3字符串是否以指定的字符串结尾?

boolean endsWith(string);

2.4判断字符串是否相同

boolean equals(string);//覆盖了Object中的方法,判断字符串内容是否相同。

2.5判断字符串内容是否相同,忽略大小写。

boolean equalsignoreCase(string);

2.6判断字符串中是否有内容

boolean isEmpty();//原理就是判断长度是否为0。


3、转换

3.1通过构造函数将数组转换成字符串

new String (char[]);

new String (char[],offset,count);//将字符数组中的一部分转成字符串,offset是开头,count是转换的个数


3.2通过字符串中的静态方法,将字符数组转成字符串。

static String copyValueOf(char[]);

static String copyValueOf(char[],int offset,int count);

static String ValueOf(char[]);

static String ValueOf(char[],int offset,int count);


3.3将基本数据类型或者对象转成字符串。

String valueOf(char);

String valueOf(boolean);

String valueOf(double);

String valueOf(float);

String valueOf(int);

String valueOf(long);

String valueOf(Object);


3.4将字符串转成数组

char[] toCharArray();//转成字符数组

byte[] getBytes();//可以加入编码表,转成字节数组。


4、切割

String[] split(分割的规则-字符串)


5、替换//修改后变成新的字符串,并不是在原字符串直接修改。

String replace(oldChar,newChar);

String replace(oldstring.newstring);


6、子串,获取字符串中的一部分

String substring(int start);//从start位开始,到lengt()-1为止

String substring(int start,int end);//从start开始,到end为止,包含头不包含尾


7、转换,去空格,比较

7.1将字符串转成大小写

String toLowerCase();

String toupperCase();

7.2去除字符串两端空格

String trim();

7.3对两个字符串进行自然顺序的比较

int compareTo();//如果参数字符串等于此字符串,则返回值为0;如果此字符串按字典顺序小于字符串参数,则返回一个小于0的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于0的值。


三、StringBuffer字符串缓冲区

StringBuffer概述:StringBuffer就是字符缓冲区,用于储存数组。初始容量为16个字符。

特点:长度可变,可以储存任意类型的数据,最终需要变成字符串


功能:

1、添加

StringBuffer append(data);在缓冲区尾部追加数据

StringBuffer insert(index,data);在指定位置插入数据


2、删除

StringBuffer delete(start,end);删除start到end-1范围的元素

StringBuffer deleteCharAt(index);删除指定位置的元素

sb delete(0,sb.length);//清空缓冲区


3、修改

StringBuffer replace(start,end,string);将start到end-1替换成string

void setCharAt(index,char);替换指定位置的字符

void setLength(len);将原字符串置为指定长度的字符串


4、查找(找不到返回-1)

int indexOf(string);返回指定字符串在此字符串中第一次出现处的索引。

int intdexOf(string,int fromindex);从指定位置开始查找字符串。

int lastindexOf(string);返回指定字符串在此字符串中最右处出现处的索引。

int lastintdexOf(string,int fromindex);从指定位置开始反向查找字符串。


5、获取子串

string substring(start);返回start到结尾的子串,角标不存在会出现字符串角标越界

string substring(start,end);返回start至end-1的子串,包含头不包含尾


6、反转

StringBuffer reverse();字符串反转


什么时候用StringBuffer?

当数据类型不确定,数据个数不确定,且最终变成字符串时使用StringBuffer


四、StringBuilder字符缓冲区

在JDK1.5之后出现了StringBuilder功能和StringBuffer一模一样


StringBuffer和StringBuilder的区别:

StringBuffer线程安全,适用于多线程操作。

StringBuilder线程不安全,适用于单线程操作,效率高。

开发建议使用StringBuilder。


JDK升级一般的目的

简化书写,提高效率,增加安全性


五、基本数据类型包装类

按照面向对象思想将基本数据类型封装成了对象

好处:

1、可以通过对象中的属性和行为操作基本数据

2、可以实现基本数据类型和字符串之间的转换


关键字 对应的类名

byte Byte

short Short

int Integer 

long Long

fliat Float

double Double

char Character

Boolean Boolean


基本数据类型对象包装类:都有XXX parseXXX方法

有一个类型没有parse方法:Character


将一个Integer对象转成基本数据类型值并调用对象的方法intValue();


将十进制整数转成其他进制:

String toBinaryString(int i);转成二进制

String toOctalString(int i);转成八进制

String toHexString(int i);转成十六进制

String toString(int i,int radix);


其他进制转成十进制:

parseInt(string,radix);


补充:

Integer x=128;

Integer y=128;

System.out.println(m==n);//false

Integer m=127;

Integer n=127;

System.out.println(m==n);//true

//在装箱时,如果数值在byte范围内,那么数值相同,不会产生新的对象,也就是说多个数值相同的引向的是同一个对象。

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值