java String类

     String类的特点

     在java语言当中,对于String这个类的使用绝对是非常的频繁,今天巩固一下这个类的使用方法,值得注意的是,String类每一个对象实例都是不可变的,也就是说在初始化值实例之后,这个类实例的值是不可变的,当值发生改变的时候对象也就跟着改变了。

public static void main(String[] args) {
		String str="Stirng";
		System.out.println("未改变之前str的地址是:"+System.identityHashCode(str));
		      str=str+"改变";
		System.out.println("改变之后str的地址是:"+System.identityHashCode(str));
	}

输出的结果是:

   未改变之前str的地址是:366712642
   改变之后str的地址是:1829164700

       这里可以看到,两次str输出的地址是不一样的,因为String类是不可变的,当改变str变量值得时候,虚拟机其实是会重新创建一个新的对象赋值给str这个变量,所以在改变str这个变量的时候,其实对象内存是发生了改变的。java虚拟机内存中有堆和栈,栈是用来存放变量的,而堆是用来存放对象数据的,java虚拟机在创建变量的时候如:String str="String" ,会首先在栈中开辟一个空间来存放str这个变量,然后在堆中开辟一个空间来存放对象,然后将a指向堆开辟的地址,这里的指向地址初始化顺序是不确定的。当str值改变的时候,虚拟机会重新再堆中创建一块空间来存放新的对象,再将a指向这块新的地址。

String类的构造函数

      String类的构造函数有很多,主要分为几种,一种是直接构造字符串,第二种是通过字节码和编码格式构造,还有一种是通过字符数组构造。

    

字符串构造
String()创建一个空的字符串对象
String(String )创建一个参数的String对象副本
String(StringBuffer)根据StringBuffer中的值创建一个String对象
String(StringBuilder)根据StringBuilder创建一个String对象

                                   

字节码构造
String(byte[] bytes)根据字节码创建String对象,使用当前平台编码方式
String(byte[] bytes, Charset charset)根据字节码创建String对象,使用指定编码方式
String(byte[] bytes, int offset, int length)从offset开始截取bytes中length长度的字节码创建String对象
String(byte[] bytes, int offset, int length, Charset charset)从offset开始截取bytes中length长度的字节码创建String对象,指定编码方式
String(byte[] bytes, int offset, int length, String charsetName)从offset开始截取bytes中length长度的字节码创建String对象,指定编码方式
String(byte[] bytes, String charsetName)指定编码方式,根据字节码创建String对象

                                       

字符数组构造
String(char[] value)根据字符数组创建String对象
String(char[] value, int offset, int count)从value字符数组中从offset开始,截取count长度的字符创建String对象

    String常用方法

      1.char chartAt(int index);返回指定index位置的一个字符。

      2.int codePointAt(int index);返回指定index位置的字符的unicode码(可以理解为ASCILL码)

      3.int codePointBefore(int index);返回指定index-1位置的字符的unicode码(可以理解为ASCILL码)

      4.int compareTo(String otherString);按字典顺讯比较字符串,两个字符串第一个不同的字符进行比较

      

String s="learn my String";
System.out.println(s.compareTo("lbrn"));

        返回结果 3,是e和b两个字符的差

     5.int compareToIgnoreCase(String );忽略大小写的比较

     6.String connact(String);将指定的字符串添加到改字符串末尾

     7.boolean contains(CharSequence s);查看字符串中是否含有s,有则返回true否则false

     8.boolean endWiths(String reg);判断字符串是否已reg字符串为结尾

     9.boolean stratWiths(String reg);判断字符串是否已reg字符串为开头

    10.boolean equals(String s);将字符串于指定的字符串进行比较

    11.boolean equalsIgnoreCase(String s);将字符串于指定字符串进行忽略大小写的比较

    12.byte[] getBytes();取得字符串的字节码,编码为平台编码

    12 byte[] getBytes(CharSet charSet);指定编码获得字符串的字节码

    13.byte[] getBytes(String charSetName);指定编码获得字符串的字节码

    14.int hashCode();返回字符传串的哈希码

    15.int indexOf(char ch);返回第一次出现ch的索引值

    16.int indexOf(char ch,int fromIndex),从指定的fromIndex开始搜索,返回第一次出现ch的索引值

    17.int indexof(String str),返回第一次出现字符串str的索引值

    18.int indexOf(String str,int fromIndex);,从指定的fromIndex开始搜索,返回第一次出现str的索引值

    19.lastIndexOf(char ch)返回最后一次出现ch的索引值,其他的和indexOf一样

    20.boolean matches(String regx);判断是否符合给定的正则表达式

    21.replace(char old,char new);把字符串中的old,换成new

    22.replace(CharSequence old,CharSequence new)把old替换为new

    23.replaceAll(String regx,String new);把能和正则表达式regx匹配的替换为new

    24.replaceFirst(String regx,String new );把能和正则表达式匹配的第一个替换为new

   25.split(String reg);根据给定的字符串分割为字符串数组

   26.subString(int begin);从begin开始截取后面的字符串为一个新的字符串

   27.subString(int begin,int end);从begin开始截取到end为止创建一个新的字符创

  28.toUpperCase()把所有的字符改为大写并返回新字符串

   29.toLowerCase();把所有字符改为小写并返回新字符串

  30.trim();把首尾两遍的空格全部去掉

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值