Java String类的经常使用方法

1.'=='、'.equals'和'contains'的区别:java

值类型是存储在内存中的栈,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而类型变量自己则存储在堆中。数组

    ==操做比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同(是否引用的同一个东西,故也许两个字符串表时内容相同,但存储在不一样位置,仍会报False),即栈中的内容是否相同。app

    equals操做表示的两个变量是不是对同一个对象的引用,即堆中的内容是否相同。this

    contains操做表示当前字符串是否含有参数指定的字符串编码

    ==比较的是2个对象的地址,而equals比较的是2个对象的内容,contains当字符串a与字符串b相等时,仍返回True。spa

    显然,当equals为true时,==不必定为true;对象

例子:blog

public class Example{
    public static void main(String args[ ]){
       String s1,s2;
       s1=new String("we are students");
       s2=new String("we are students");
       System.out.print(s1.equals(s2)+" ");    
       System.out.println(s1==s2);        
       String s3,s4; 
       s3="how are you";
       s4="how are you"; 
       System.out.print(s3.equals(s4)+" ");    
       System.out.println(s3==s4);
       System.out.print(s1.contains(s3)+" "); 
       System.out.println(s2.contains("we are students"));            
    }
}
结果:内存

True        Falseci

True        True

False        True

 

 

 

 

 

 

2.String类的经常使用方法

1)先后缀:public boolean startsWith(String s)    

                   public boolean endsWith(String s) 判断当前字符串的先后缀是否与指定字符串s相等。

2)字典序比较:

                  public int compareTo(String s) 按字典序与当前指定的字符串比较大小。

3)子串的检索:

                   public int indexOf (String s) 从当前字符串的头开始检索字符串s,并返回首次出现s的位置,若没有检索到字符串s,返回值为-1。

                   indexOf(String s ,int startpoint)  从startpoint位置开始检索字符串s,并返回首次出现s的位置,若没有检索到字符串s,返回值为-1。

                   lastIndexOf (String s)  从当前字符串的头开始检索字符串s,并返回最后一次出现s的位置,若没有检索到字符串s,返回值为-1.

4)字符串的截取:

                   public String substring(int startpoint)  从startpoint位置开始截取到字符串的最后一个位置,并返回所得的字符串。

                   substring(int start ,int end) 从start处开始截取,到end处中止,但end处字符不包含在其中,即只有(end-start)个字符。

5)字符串去空格:

                   public String trim():去掉字符串的先后空格。

 

 

 

 

 

 

 

3.字符串与基本数据类型的转换(java.lang包)

1)字符串转数字:

        public int static parseInt(String s):将数字类型字符串s转换为int型数据。

        public byte static parseByte(String s);

        public short static parseShort(String s);

        public long static parseLong(String s);

        public double static parseDouble(String s);

2)整数的进制表示(返回字符串):

        public static String toBinaryString(long i) 整数i的二进制表示;

        public static String toOctalString(long i)   十进制;

        public static String toHexString(long i)   十六进制;

        public static String toString(long i,int p)  整数i的p进制表示;

3)数字的字符串表示:

        public String valueOf(byte n)    

        public String valueOf(int n)    

        public String valueOf(long n)    

        public String valueOf(float n)    

        public String valueOf(double n)

 

 

 

 

 

 

4.对象的字符串表示

全部的类都默认是java.lang包中Object类的子类或间接子类。Object类有一个public方法public String toString(),一个对象经过调用该方法能够得到该对象的字符串表示

一个类能够经过重写该方法,以便得到该对象想要的字符串表示。(java.util包中的Date类就经过重写该方法使得Date对象调用toString()获得的字符串是由日期信息组成的字符序列。

若一个类没有重写该方法,则该类所建立的对象调用该方法获得的字符串格式为:

类名@对象的引用

例:

import java.util.Date; 
public class Example{
    public static void main(String args[ ]){
        Date date=new Date();
        Student stu=new Student("张三",89);
        TV tv=new TV("电视机",8776);
        System.out.println(date.toString());
        System.out.println(stu.toString());
        System.out.println(tv.toString()); 
    }
}
class Student{
    String name;
    double score;
    Student(String name,double score){
       this.name=name;
       this.score=score;
    }
    public String toString(){
       return "姓名:"+name+",分数:"+score;
    }
}
class TV{
    String name;
    double price;
    TV(String name,double price){
       this.name=name;
       this.price=price;
    }
}

输出结果为:

 

 

 

 

 

 

 

5.字符串与字符数组、字节数组

1):字符串与字符数组

    类的构造方法String(char[])和String(char[],int offset,int length)分别用数组a中的所有字符和部分字符建立字符串对象。

    String类也提供了将字符串存放到数组中的方法:

    public void getChars(int start,int end,char c[],int offset)

     字符串调用getChars()方法将当前字符串中的一部分字符复制到参数c指定的数组中,将字符串从位置start到end-1位置上的字符复制的数组c中,并从数组c的offset处开始存放这些字符。

    String类还提供了一个方法 public char[] to CharArray()

    字符串对象调用该方法能够初始化一个字符数组,改庶族的长度与字符串的长度相等,并将字符串对象的所有字符复制到该数组中。

2):字符串与字节数组

    String类的构造方法String(byte[])用指定的字节数组构造一个字符串对象。构造方法String(byte[],int offset,int length)用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。方法public byte[] getBytes()使用平台默认的字符编码,将当前字符串转化为一个字节数组。

例:

public class Example{
    public static void main(String args[ ]){
        byte d[]="YOUIHE你我他".getBytes();           
        System.out.println("数组d的长度是(一个汉字占两个字节):"+d.length);
        String s=new String(d,6,2);
        System.out.println(s);
    }
}

 

 

 

 

 

 

 

6.StringBuffer类

    String类建立的字符串对象不能修改、删除或替换字符串中的某个字符,即String对象一旦建立,实体是不能再发生变化的。而StringBuffer类对象的实体的内存能够自动的改变大小,经过调用append()方法能够追加字符串序列。

1)构造方法:

StringBuffer():分配给该对象的实体的初始容量可容纳16个字符,且容量会自动增长。

StringBuffer(int size):指定初始长度,能够指定分配给该对象的实体的初始容量为size指定的字符个数,且容量会自动增长(至关于这里用size代替前者的“16”)。

StringBuffer(String s):用一个字符串指定初始长度 。

2)经常使用方法:

a.追加字符串:append()。

b.取单个字符:char charAt(int n)获得参数n指定的位置上的单个字符。

c.替换其中单个字符:void setCharAt(Int n,char ch)将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换。

d.插入字符串:StringBuffer insert(int index,String str)将一个字符串插入另外一个字符串中,并返回当前对象的引用。

e.删除子串:StringBuffer delete(int startIndex,int endIndex)从当前StringBuffer对象实体中的字符串中删除一个子字符串,并返回当前对象的引用。

f.字符串替换:StringBuffer replace(int startIndex,int endIndex,String str)将当前对象实体中的字符串的一个子字符串用参数str制定的字符串替换。

g.字符串反转:public StringBuffer reverse()将对象实体中的字符翻转,并返回当前对象的引用。

3)length与capacity的区别:

length返回当前引用实体的实际长度,capacity则返回当前StringBuffer的容量(即默认不断+16,16为预留空间,虽然没有存储东西,但在capacity中会算入容量,而在length中不算)。

 

 

 

 

 

 

7.StringTokenizer类

1)构造方法:

a.StringTokenizer(String s):为字符串s构造一个分析器,使用默认空格分隔标记。

b.StringTokenizer(String s,String delim):为字符串s构造一个分析器,参数delim中的字符的任意排列组合都是分隔标记。

例:用户输入浮点数,程序分别输出该书的整数部分和小数部分。

import java.util.*;  public class Example{     public static void main(String args[ ]){         String []mess={"整数部分","小数部分"};         Scanner reader=new Scanner(System.in);         double x=reader.nextDouble();         String s=String.valueOf(x);         StringTokenizer fenxi=new StringTokenizer(s,".");                for(int i=0;fenxi.hasMoreTokens();i++){            String str=fenxi.nextToken();//将分隔符前的String赋给整数部分            System.out.println(mess[i]+":"+str);         }     }  }

相关文章
相关标签/搜索