【无标题】

JAVA常用类

字符串常用类

String类

String的特性

String类:代表字符串。JAVA程序中所有字符串字面值(如“ABA”)都作为此类的实例实现。

String是一个final类,代表不可变的字符序列,不可被继承。即,不可变性

​ 体现:1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能通过原有的value进行赋值。

​ 2.当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能再原有的内存上加上

​ 3.当调用String的replace方法修改指定字符串时,也必须重新指定内存区域

String实现了Serializable接口:表示字符串是支持序列化的(io流)

String实现了Comparable接口:表示String可以比较大小

字符串是一个常量,用双引号引起来表示。他们的值在创建之后不能更改。

String对象的字符内容是存储在一个字符数组value【】中的

注意:String是一个类,但是他的对象赋值不需要new 就可以直接赋值即通过字面量的方式(区别于new )给一个字符串赋值,此时的字符串值声明在字符串常量池中。字符串常量池中是不会存储相同的字符串的

String s1 ="xcsdc";//字面量的定义方式
String s2 ="xcsdc";

String的实例化:

方式一:通过字面量定义的方式

方式二:通过new +构造器的方式

String不同拼接操作的对比:

String s1="tian";
String s2="siyu";
String s3="tiansiyu";
String s4="tian"+"siyu";
String s5=s1+"siyu";
String s6="tian"+s2;
String s7=s1+s2;
String s8=s5.intern();
s3==s4  //true
  s3==s5 //false
    s3==s6 //false
    s3==s7 //false
    s5==s6 //false
    s5==s7 //false
    s6==s7 //false
	s3==s8 //true

结论:

1,常量与常量的拼接结果在常量池,且常量池中不会存在相同内容的常量

2,只要其中有一个是变量,结果就在堆中

3,如果拼接的结果调用intern()方法,返回值就在常量池中

常用方法

char[] chars = str.toCharArray();

int length():返回字符串的长度: return value.length

char charAt(int index):返回某 索引处的字符return value[index]

boolean isEmpty():判断是否是空字符串: return value.length== 0

String toLowerCase():使用默认语言环境,将String中的所有字符转换为小写

String toUpperCase():使用默认语言环境,将String 中的所有字符转换为大写

注意:该方法中,s1是不变的,仍然为原来的字符串,新的字符串字符大小写发生了变化

String trim(): 返回字符串的副本,忽略前导空白和尾部空白

boolean equals(Object obj):比较字符串的内容是否相同

boolean equalsLgnoreCase(String anotherString):与equals方法类似, 忽略大小写

String concat(String str):将指定字符串连接到此字符串的结尾。等价于用 “+”

int compareTo(String anotherString):比较两个字符串的大小

String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一一个子字符串。

String substring(int beginIndex, int endIndex) :"[beginIdx, endIdx)"返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一一个子字符串。

boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束

boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始

boolean startsWith(String prefix, int toffset): 测试此字符串从指定索引开始的子字符串是否以指定前缀开始

boolean contains(CharSequences): 当且仅当此字符串包含指定的char值序列时,返回true

int indexOf(String str): 返回指定子字符串在此字符串中第一次出现处的索引

int indexOf(String str, int fromIndex): 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始

int lastIndexOf(String str): 返回指定子字符串在此字符串中最右边出现处的索引

int lastIndexOf(String str, int fromIndex): 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索

** indexOf和lastIndexOf方法如果未找到都是返回-1

替换:
String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。

String replace(CharSequence target, CharSequence replacement): 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

String replaceAll(String regex, String replacement) :使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串

String replaceFirst(String regex, String replacement): 使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串。

匹配:
boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。

切片:
StringD split(String regex):根据给定正则表达式的匹配拆分此字符串。
String[] str = ss.split(" "); “将一个字符串 转换为String数组”

StringD split(String regex, int limit): 根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一一个元素中。

String 与基本数据类型转换
  • 字符串->基本数据类型,包装类

    Integer包装类的public static int parselnt(String s):可以将由“数字”字符组成的字符串转换成整形

类似的,使用Java.lang包中的Byte,Short,Long,Float,Double类调相应的类方法可以将由“数字”字符组成的字符串,转换为相应的基本数据类型

  • 基本数据类型,包装类->字符串

    调用String类的public String valueOf(int n),可将int类型转换成字符串

相应的valueOf(byte b),valueOf(long I),valueOf(float f),valueOf(double d),valueOf(boolean b)可由参数的相应类型到字符串的转化

String与字符数组的转换
  • 字符数组->字符串

    String类的构造器:String(char[])和String(cahr[],int offset,int length)分别用字符数组中的全部字符和部分字符创建字符串对象

  • 字符串->字符数组

    public char[] toCharArray():将字符串中的全部字符放在一个字符数组中

    public void getChars(int srcBegin,int srcEnd,char[]dst,int dstBegin):提供了将指定索引范围内的字符串存放在数组中的办法

String与字节数组转换
  • 字节数组_>字符串

    String (byte[]):通过使用平台的默认字符集解码指定的byte数组,构造一个新的String

    String(byte[],int offest,int length):用指定的字节数组的一部分,即从数组起始位置offest开始取length个字节构造一个字符串对象

  • 字符串->字节数组

    public byte[] getBytes():使用平台的默认字符集将次String编码为byte序列,并将结果存储到一个新的byte 数组中

    public byte[] getBytes(String charseName):使用指定的字符集将此String编码到byte序列,并将结果存储到新的byte数组

StringBuffer与StringBuilder

java.lang.StringBuffer代表可变的字符序列,JDK1.0中声明,可以对字符串内容进行增删,此时不会产生新的对象,很多方法与String相同。作为参数传递时,方法内部可以改变值。StringBuffer类不同于String,其对象必须使用构造器生成。有三个构造器:

StringBuffer():初始容量为16的字符串缓冲区
StringBuffer(int size):构造指定容量的字符串缓冲区
StringBuffer(String str):将内容初始化为指定字符串内容

String ,StringBuffer,StringBuilder的比较

String:不可变的字符序列;底层使用char[]存储
StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储
StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值