黑马程序员-Java语言基础– String类 第13天

---------------------- android培训java培训、期待与您交流! ----------------------

 

String类          

      字符串是一个特殊的对象。(存在于方法区的常量池中)字符串一旦初始化就不可以被改变。

class  StringDemo

{

      public static void main(String[] args)

      {

           // s = new String();//不多见。

           String s1= "abc";//s1是一个类类型变量,所有“abc”是一个对象。

                                   //字符串最大的特点:一旦被初始化,就不可以被改变。                         

           String s2= new String("abc");

           //s1和s2有什么区别?

           //s1在内存中代表一个对象。

           //s2在内存中有两个对象。

 

           System.out.println(s1==s2);//指向的是地址值。

          

           System.out.println(s1.equals(s2));//String类复写了Object类中equals方法。

                                                           //该方法用于判断字符串内容是否相同。

 

           //s1 = "kkk";//s1指向变了。而不是“abc”变了。对象并未改变。          

      }

}

 

String类适用于描述字符串事物。

那么它就提供了多个方法对字符串进行操作。

常见的操作有哪些?

“abcd”

 

1、获取

      1、1 字符串中包含的字符数,也就是字符串的长度。

           int length();获取长度。

      1、2 根据位置获取位置上的某个字符。

           char charAt(int index);

      1、3 根据字符获取该字符在字符串中的位置。

           int indexOf(int ch);//返回的是ch在字符串中第一次出现的位置。

           int indexOf(int ch,intfromIndex); 从fromIndex指定位置开始,获取ch在字符串中出现的位置。

 

           int indexOf(Stringstr);//返回的是str在字符串中第一次出现的位置。

           int indexOf(Stringstr,int fromIndex); 从fromIndex指定位置开始,获取str在字符串中出现的位置。

          

           int lastIndex(int ch):反向索引,只是从左边开始。

     

2、判断

      2、1 字符串中是否包含某一个字串。

           boolean contains(str);

      特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1, 表示该str不在字符串中存在。

           所以也可以用于对指定字符串的判断是否包含。

           if(str.indexOf("aa")!=-1)//包含。

 

           //只为判断,用contains.

           //要判断,还要拿位置。用indexOf;而且该方法既可以判断,又可以获取出现的位置。

      2、2 字符串中是否有内容。

           boolean isEmpty();原理就是判断长度是否为0。“”-->对象;  null-->指向为空。    2、3字符串是否以指定内容开头。

           boolean startsWith(str)

      2、4 字符串是否以指定内容结尾。

           boolean endsWith(str)

      2、5 判断字符串的内容是否相同。复写了Object类中的equalsf方法。

           boolean equals(str);

      2、6 判断内容是否相同,并忽略大小写。

           booleanequalsIgnoreCase();//邮箱登陆验证码大小写情况

     

3、转换

      3、1 将字符数组转成字符串。

           构造函数:String(char[])

                        String(char[] ,int offset, int count):将字符数组中的一部分转成字符串。

                            offset 是起始位。count是数量。

          

           静态方法:

                 static StringcopyValueOf(char[]);

                 static StringcopyValueOf(char[] data, int offset, int count);//一部分。

 

                 static StringvalueOf(char[]);

 

      3、2 将字符串转成字符数组。**  对象调用。

                 char[]toCharArray();

 

      3、3 将字节数组转成字符串。

           String(byte[])

           String(byte[],offset,count):将字节数组中的一部分转成字符串。

 

      3、4 将字符串转成字节数组。

                 byte[] getBytes();

 

      3、5 将基本数据类型转成字符串。

           static StringvalueOf(int)

           static String valueOf(double)

 

           3+"";//String.valueOf(3);都是把3转换成字符串  “3”

      特殊,字符串和字节数组在转换过程中,是可以指定编码表的。

 

4、替换

      String replacee(oldchar , newchar);

      如果要替换的字符不存在,返回的是原字符串。

5、切割

      String[] split(regex);//返回一个String数组。

      String[] arr = s.split(“,”);

 

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

      String substring(begin);//从指定位置到结尾。如果角标不存在,会出现字符串交表越界。

      String substring(begin, end);//包含头,不包含尾。

      获取全部字符串:s.substring(0,s.length());

 

7、转换,去除空格,比较。

      7、1 将字符串转成大写或者小写

           String toUpperCase();

           String toLowerCase();

      7、2 将字符串两端的多个空格去除。  

      7、3 对两个字符串进行自然顺序的比较。

           int compareTo(string);

 

StringBuffer(字符串缓冲区)

StringBuffer是字符串缓冲区,是一个容器。

CURD (增删改查)= create update read delete

特点:

1、长度是可以变化的。

2、可以直接操作多个数据类型。

3、最终会通过toString方法变成字符串。

 

StringBuffer类特有方法:

1、存储

      StringBuffer append():将指定数据作为参数添加到已有数据的结尾处。

      StringBufferinsert(index(offset),数据):可以将数据插入到指定index位置。

 

2、删除

      StringBuffer delete(start, end):删除缓冲区中的数据,包含start,不包含end。

      StringBufferdeleteCharAt(index):删除指定位置的字符。

           //清空缓冲区。

           //sb.delete(0,sb.length());

 

3、获取

      char charAt(int index)

      int indexOf(String str)

      int lastIndexOf(String str)

      int length()

      Stringsubstring(int start,int end)

     

4、修改

      StringBufferreplace(start,end,string);

      void setCharAt(int index,charch);

 

5、反转

      StringBuffer reverse();

 

6、将缓冲区中的指定数据,存储到指定字符数组中。

      void gerChars(int srcBegin,intsrcEnd,char[] dst , int dstBegin)

 

在JDK 1.5 版本之后出现了StringBuilder,不保证线程安全。

StringBuffer是线程同步,线程安全的可变序列。

StringBuilder是线程不同步。

 

以后开发,建议使用StringBuilder,提高效率。

 

Java升级三要素。1、提高效率,2、简化书写。3、提高安全性。

 

 

基本数据类型对象包装类

基本数据类型对象包装类。

基本数据类型 

    引用数据类型(类)

    byte

        Byte

    short

        Short

    int

        Integer

    long

        Long

    boolean

        Boolean

    float

        Float

    double

        Double

    char

        Character

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型之间做转换。

1、基本数据类型转成字符串:

      ①基本数据类型+""

      ②基本数据类型.toString(基本数据类型值);

      如:Integer.toString(34);//将34整数转成"34";

 

2、字符串转成基本数据类型

int num = Integer.parseInt("123");

long x = Long.parseLong("123");

即:xxx a = Xxx.parseXxx(String);(静态方法)

另外一种方法:intValue();例:Integer i =new Integer("123");int num = i.intValue();

注意:必须传入相应格式的数据,否则会出现NumberFormatException

 

十进制-->其他进制

toBinaryString();

toHexString();

toOctalString();

其他进制-->十进制

parseInt(str,radix);//radix即2,16,8

 

Integer x = new Integer("123");

Integer y = new Integer("123");

sop(x==y);//false(两个对象)

sop(x.equals(y));//true(Integer复写了Object的equals,变成了比较值是否相同)

 

JDK1.5以后,简化了定义方式。

Integer x = new Integer(4);可以直接写成Integer x = 4;//自动装箱。

x = x + 5;//自动拆箱。通过intValue方法。

需要注意:在使用时,如果Integer x = null;上面的代码就会出现NullPointerException

 

Integer m = 128;

Integer n = 128;

sop(m==n);//false

Integer a = 127;

Integer b = 127;

sop(a==b);//true,因为a、b指向同一对象。

因为当数值在byte范围内时(-128--127),对于新特性,如果该数值已经存在,则不会开辟新空间。


---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值