黑马程序员_学习日记五_String类、StringBuffer类、基本数据包装类

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

 

String概述

    String类代表字符串,用于描述字符串事物,该类不能被继承。java程序中的所有字符串值(如“abc”)都作为此类的实例实现。字符串是常量,它们的值在创建后就不能更改,这是字符串的最大特点。

    注意:定义语句String s1 = “abc”;其中s1是一个String类类型引用,而“abc”则是一个对象,如果s1 = “kk”,并不是“abc”被覆盖了,而是引用s1的内存地址值改变了,指向了“kk”对象了。

    定义语句String s2 = new String(“abc”)和前一种方法使用是一样的,但还是会有区别,在String类中覆写了Object类的equals()方法,定义了自己独特的内容,该方法覆写之后用于判断字符串的内容是否相等。

    另外这两个定义语句之间也有区别,前面一个只有一个引用指向“abc”,而后面的语句其实是有两个引用,一个是用new关键字定义出来的引用,它的内存地址值再赋给s2,结果是有两个引用都指向了“abc”这个字符串。

 String常见功能-获取和判断

    语句String s1 = “abc”和Strings2 = “abc”,s1和s2其实都是指向同一个对象的。因为String类是final类型的,不能被继承,所以它就提供了多个方法对字符串进行操作。

    常见的操作如下:

    获取操作

    1.int length(),获取字符串的长度,返回值类型是int。

    字符串中要获取长度是通过调用length()方法来完成的,它和获取数组的长度不一样,获取数组的长度是通过length这个属性来完成的,区别一个是length()方法,一个是length属性,这点要注意。

    2.char charAt(int index),根据索引获取该位置上的某个字符,返回值类型是char。当访问到字符串中不存在的角标时会发生StringIndexOutOfBoundsException(字符串角标越界异常)。

    3.int indexOf(int ch),根据字符获取该字符在字符串中第一次出现的位置,接受的参数是字符的ASCII码值。该方法既可以判断,也可以获取。

    4.int lastIndexOf(int ch),返回指定字符在此字符串中最后一次出现的索引。

    判断操作

    1.boolean contains(CharSequence s),判断字符串中是否包含某一个字符串,因为indexOf(String str)可以索引str第一次出现的位置,如果返回值是-1,表示该str不存在该字符串中。所以,该方法也可以用于判断是否包含指定字符串。

    2. boolean isEmpty(),判断字符串中是否有内容,当且仅当length()为0时返回true。

    3.boolean startswith(String prefix),判断字符串是否是以指定内容开头。

    4.boolean endswith(String suffix),判断字符串是否是以指定内容结尾。

    5.boolean equals(String str),覆写了Object类中的equals()方法,判断字符串内容是否相等。

    6.boolean equalsIgnoreCase(String str),判断字符串内容是否相等,并忽略大小写。

 String常见功能-转换

    转换操作

    1.String(char[] value),将字符数组转换成字符串,该方法为构造方法,在初始化的时候就完成了转换操作。还有一个静态的方法也能完成该操作,那就是static String copyValueOf(char[] char)。

    2.char[] toCharArray(),将字符串转换成字符数组,返回值类型为char类型的数组。

    3.String(byte[] value),将字节数组转换成字符串。

    4.byte[] getBytes(),将字符串转换成字节数组,返回值类型为byte类型的数组,注意,字符串和字节数组在转换过程中,是可以指定编码表的。

5.static String valueOf(int value),将基本数据类型转换成字符串。

String常见功能-切割和替换

    替换操作

    1.Stringreplace(char oldChar, char newChar),用newChar字符替换此字符串中出现的所有oldChar字符,返回值为String类型。如果要替换的字符串不存在,返回的仍是原来的字符串。

    2.String replace(CharSequence target,CharSequence replacement),用指定字符串替换原字符串当中的所有匹配的目标子字符串。

    切割操作

    1.String[]split(String regex),将字符串按照指定参数regex拆分成字符串数组,参数regex属于字符串中的内容,注意:返回值为字符串数组。

    2.String substring(int beginIndex),返回一个新字符串,它是此字符串的一个子字符串。返回的字符串从索引一直到结尾。

    3.String substring(int beginIndex,intendIndex),返回一个新字符串,它是此字符串的一个子字符串。返回的字符串从开始索引一直到结束索引的前一个字符(既包含头,不包含结尾)。

String常见功能-比较和去除空格

    大小写转换操作

    1.String toUpperCase(),返回一个新的字符串,将原字符串全部转换成为大写。

    2.String toLowerCase(),返回一个新的字符串,将字符串全部转换成为小写。

    比较操作

    1.int compareTo(String),按字典顺序依次比较两个字符串中的字符,该比较基于字符串中各个字符的Unicode值,返回的是参数字符和此字符的Unicode差值。

    去除空格操作

1.String trim(),返回一个新的字符串,将原字符串两端的空格去除。

StringBuffer概述

    StringBuffer是字符串缓冲区,也是一个容器,它有以下特点:

1.它的长度是可变化的,

2.可以直接操作多个数据类型,

3.最终会通过toString()方法变成字符串。

    StringBuffer类也是final的,不可以有子类。但是StringBuffer产生的对象是一个可变对象,当对它进行修改时不会像String那样重新建立对象,它只能通过构造方法来建立,或者调用append()方法,这是StringBuffer类和String类的主要区别之一。

    比如有语句:

        StringBuffer sb = new StringBuffer();

        sb = “hello,java.”;//此处会报错

    第二个赋值语句会报错,因为StringBuffer产生的对象不能通过赋值符号对它进行赋值。对象建立以后,在内存中就会分配内存空间,并初始化一个null。对对象赋值可以通过构造方法来赋值, StringBuffer sb = newStringBuffer(“hello,java.”),还可以调用它的append()方法对它进行赋值。比如

        sb.append(“hello,java.”);

    1.StringBuffer append(),赋值,将指定的数据作为参数添加到已有数据的结尾处。返回值类型为StringBuffer类对象。所以可以连续调用本类方法。比如

        sb.append(“hello”).append(“java”).append(“hello”)…;

    2.StringBuffer insert(int offset, boolean b),插入,在指定的offset位置处插入数据类型为boolean的内容。返回值类型扔为StringBuffer类对象。

StringBuffer常见功能-删除和修改

    1.StringBuffer delete(int start, int end),删除字符串缓冲区中的数据,包含start,但是不包含end。返回值为StringBuffer类对象。

    2.StringBuffer deleteCharAt(int index),删除指定位置的字符。

    3.Char charAt(int index),获取指定位置上的字符。返回值为Char类型数据。

    4.StringBuffer replace(int start, int end,String str),用指定字符串str替换指定位置start和end之间的这段字符串,返回值类型是StringBuffer类对象。

    5.void setCharAt(int index, char ch),用指定字符替换索引处的字符,注意:该方法返回的类型为空。

    6.StringBuffer reverse(),将对象反转,返回值为StringBuffer。

    7.void getChars(int srcBegin, int srcEnd,char[] dst, int dstBegin),将字符串缓冲区中的srcBegin到srcEnd指定数据存储到指定的字符数组dst中,从dstBegin处开始存储。

StringBuilder概述

    在JDK1.5之后出现了StringBuilder类。StringBuilder是一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer类的一个简易替换,用在字符缓冲区被单个线程调用的时候。

    StringBuilder和StringBuffer的主要区别在于StringBuilder是线程不同步的,而StringBuffer是线程同步的。当程序是单线程程序的时候,最好使用StringBuilder类,因为StringBuffer既然是同步的,所以要判断监视器的状态,这样就会造成程序效率低。而StringBuilder则不需要判断监视器的状态。但是当程序是多线程程序时,就必须使用StringBuffer类了,因为StringBuilder的实例在多线程的情况下是不安全的。

    另外,java的升级主要考虑三个方面,第一,就是提高效率;第二,简化书写;第三,提高安全性。

基本数据类型对象包装类

    Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。

    基本数据类型包装类的最常见作用,就是用于基本数据类型和字符串类型之间的转换。

    1.基本数据类型转换成字符串

    有两种方法,第一种是:基本数据类型+“”;第二种是:基本数据类型.toString(基本数据类型值);比如:

        Integer.toString(34);//将34整数变成“34”;

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

    有两种方法,第一种是:基本数据类型包装类.parseInt(String st)/parseLong(Stringstr)/…;比如:

        int a = Integer.parseInt(“123”);//将字符串类型的123转换成整型数据123

    第二种是先产生一个基本数据类型包装类对象,并初始化值,然后再调用intValue()方法转换成对应的数据类型,比如:

        Integer i = new Integer(“123”);

        i.intValue();

     注意:parseInt()方法是静态的,但是intValue()方法是非静态的,需要被对象调用。

    JDK1.5版本出现以后基本数据类型出现了一个新特性,可以直接定义语句Integer x= 4;这个时候,右边的“4”已经不在是整形数据,他会被虚拟机隐式转换成为Integer类对象。这个升级主要就是简化书写。而且这个对象还可以直接参与运算,比如:x= x + 2;参与运算的过程中,x又被隐式转换成为int类型,和2运算,之后,虚拟机又将和转换成为Integer类对象赋给x。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值