JAVA笔记(十三)-----Stirng类

String类

1.字符串是一个特殊的对象

2.字符串一旦初始化就不可以被改变。

3.String str = "abc";

4.String str1 = new String("abc");//两个字符串对象,一个"abc"一个new String()

 

String类复写了Object类中的equals方法,该方法用于判断子串是否相同。

 

String s1 = "abc";

String s2 = new String("abc");

s1 和 s2 有什么区别?

s1在内存中有一个对象,s2在内存中有两个对象。

 

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

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

 

常见操作有哪些?

1.获取

  1.1字符串中包含的字符数,也就是字符串的长度

  int length();//获取长度

  数组也有长度length,但这不是方法(),是属性。

  1.2根据位置获取位置上某个字符

  char charAt(index);

  1.3根据字符获取该字符在字符串中第一次出现的位置

  int indexof(int ch);//把传入的字符串自动转换为字符编码进行查找

  int indexof(int ch,int formIndex);//从指定fromIndex位置开始获取str在字符串中出现的位置

  int lastIndexOf(str);

  int lastIndexOf(str,fromIndex);

 

2.判断

  2.1字符串中是否包含一个子串

  boolean contains(str);

  2.2字符串中是否有内容

  boolean isEmpty();

  2.3字符串是否以指定内容开头

  boolean startsWith(str);

  2.4字符串是否以指定内容结尾

  boolean endsWith(str);

  特殊之处:indexOf(str);可以索引str第一次在字符串中出现的位置,若返回-1说明该str不存在于字符串中,也可以用于对指定判断是否包含。

      而且该方法既可以判断,又可以获取出现的位置

      if(str.indexOf("abc") != -1)

  2.5判断字符串的内容是否相同

  boolean equals(str);//复写了Object类中的equals方法

  2.6判断内容是否相同,忽略大小写

  boolean equalsIgnoreCase();

 

3.转换

  3.1将字符数组转成字符串

   利用String类的构造函数:String(char[])

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

    静态方法:

      static String copyValueOf(char[]);

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

      static String valueOf(char[]);

  3.2字符串转成字符数组

      char[] toCharArray();

  3.3将字节数组转成字符串

      String(byte[]);

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

  3.4将字符串转成字节数组

      byte[] getBytes();

  3.5将基本数据类型转成字符串

      static String valueOf(int );

      static String valueOf(double);

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

 

4.替换

  String replace(oldChar,newChar);//如果要替换的字符串不存在,返回的是原串

  String replace(oldStr,newStr);

 

5.切割

  String[] split(regex)

   例:String s = "aaa,bbb,ccc";

     String ns = s.split(",");

 

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

    String substring(begin);

    String substring(begin,end);

    注:含头不含尾,从begin开始索引到end-1处字符,如果角标不存在,会出现字符串角标越界异常

 

7.转换、去除空格、比较

    7.1转换字符大小写

    String toUpperCase();

    String toLowerCase();

    7.2将字符串两端的多个空格去除

    String trim();

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

    int compareTo(str);

    返回值:如果参数字符串等于此字符串则return 0;

        如果此串大于参数字串,则return一个大于0的值

        如果此串小于参数字串,则return一个小于0的值

 

StringBuffer

1.字符串的组成原理就是通过该类实现的

2.StringBuffer可以对字符串内容进行增删

3.StringBuffer是一个容器

4.很多方法与String相同

5.StringBuffer是可变长度

 

StringBuffer是字符串缓冲区

  是一个容器,可以操作多个数据类型,最终通过toString方法变成字符串。

1.存储

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

    示例:

        StringBuffer sb = new StringBuffer();

        sb.append("abc").append("123");

        方法调用链:连续的调用,因为append返回的还是本类对象。

        StringBuffer insert(index,数据);可以将数据插入到index指定位置

2.删除

  StringBuffer delete(start,end);//含头不含尾

  StringBuffer deleteChar(index);//删除指定位置index的字符

 

3.获取

  char charAt(index); 

  int  indexOf(String str);

  int  lastIndexOf(String);

  int  length();

  String substring(int start,int end);

 

4.修改

  void  setCahrAt(index,char ch);

  StringBuffer  replace(start,end,string);

 

5.反转

  StringBuffer  reverse();

 

6.将缓冲区中指定数据存储到指定数据中

  void  getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin);

 

在JDK1.5版本之后出现了StringBuilder

StringBuffer是线程同步的(线程安全但效率较低)

StringBuilder是线程不同步的(线程不安全但效率较高,将StringBuilder的实例用于多个线程是不安全的,如果需要这样同步,则建议使用StringBuffer)

多线程:用StringBuffer(或者StringBuilder自己加锁)

单线程:用StringBuilder

以后开发建议使用StringBuilder

 

Java升级的三个因素:

1.提高效率  2.提高安全性  3.简化书写。

 

基本数据类型对象包装类

byte  Byte

shor  Short

int   Integer

long  Long

boolean Boolean

float  Float

double  Double

char  Character

基本数据  引用类型

基本数据类型对象包装类的最常见作用:用于基本数据类型和字符串类型之间做转换。

 

基本数据类型转成字符串,示例:基本数据类型 + "";或者基本数据类型.toString(基本数据类型值); 如 Integer.toString(34);//将34转换成"34"

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

      xxx  a = Xxx.parseXxx(String);

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

      double b = Double.parseDouble("12.23");

 

十进制转成其他进制:

    toBinaryString();//2进制

    toHexString();//16进制
    toOctalString();//8进制

    其他进制转十进制

    parseInt(String,radix);//s - 要解析的字符串。radix - 解释 s 时使用的基数。

 

JDK1.5版本以后出现的新特性。

  Integer x = 4;//自动装箱 等同于 Integer x = new Integer(4);

  x  = x + 2;//x自动拆箱变成int类型,和2进行加法运算然后将结果进行装箱赋给x

posted @ 2016-03-23 11:48  追风少年阿远  阅读(129)  评论(0)    收藏  举报