zoukankan      html  css  js  c++  java
  • java中String类小结

    构建一个字符串

    1、用字符串直接量:

    String message = new String("Welcome to java");

    2、用字符串直接量:

    String message = "Welcome to java";

    3、用字符数组

    Char[] charArray = {'m', 'y'};

    String message = new String(charArray);

    不可变字符与限定字符串

    String对象是不可变的,内容不能改变

    java虚拟机为了提高效率并节约内存,对具有相同字符串序列的字符串直接量使用同一个实例:

    public class Main
    {
        public static void main(String args[])
        {
        	String s1 = "Welcome to java";
        	String s2 = new String("Welcome to java");
        	String s3 = "Welcome to java";
        	
        	System.out.println("s1 == s2 is " + (s1 == s2));
        	System.out.println("s1 == s3 is " + (s1 == s3));
    	}
    }
    

    结果:

    s1 == s2 is false
    s1 == s3 is true

    字符串的比较

     字符串相等的比较:

    1、使用equals方法

    boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false

    2、使用compareTo方法

    int compareTo(String anotherString) :当前String对象与anotherString比较相等关系返回0不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
    int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。

     public static void main(String args[])
        {
        	String s1 = "Welcome to java";
        	String s2 = new String("Welcome to java");
        	String s3 = "Welcome to C++";
        	System.out.println(s1.equals(s2));
        	System.out.println(s1.equals(s3));
        	System.out.println(s1.compareTo(s2));
        	System.out.println(s1.compareTo(s3));
    	}
    

    运行结果:

    true
    false
    0
    39

    字符串长度、字符以及组合字符串

    String类提供获取字符串长度、获取单个字符和连接字符串的方法

        public static void main(String args[])
        {
        	String s1 = "Welcome to java";
        	System.out.println("s1's length is: " + s1.length());
        	System.out.println("s1[2] == " + s1.charAt(3));
        	String s2 = " bigjava";
        	String s3 = s1.concat(s2);
        	System.out.println(s3);
        	System.out.println(s1);
    	}
    

    运行结果:

    s1[2] == c
    Welcome to java bigjava
    Welcome to java

    也可以使用(+)连接两个或更多的字符串:String s3 = s1 + s2;

    获取子串

    使用charAt获取单个字符

    也可使用String类中的substring 方法从字符串中提取子串:

    String substring(int beginIndex) 取从beginIndex位置开始到结束的子字符串
    String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串

    String s1 = "Welcome to java";
    System.out.println(s1.substring(4));
    System.out.println(s1.substring(2, 7));
    

    运行结果:

    ome to java
    lcome

    字符串的转换、替换和分隔

    String toLowerCase() :将字符串转换成小写。
    String toUpperCase() :将字符串转换成大写。

    String s = "Welcome to java";
    System.out.println("s.toUpperCase(): " + s.toUpperCase()); //s.toUpperCase(): WELCOME TO JAVA
    System.out.println("s.toLowerCase(): " + s.toLowerCase()); //s.toLowerCase(): welcome to java
    

    String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar

    String replaceFirst(char oldString, char newString) :将字符号串中第一个oldString替换成newString

    String replaceAll(char oldString, char newString) :将字符号串中所有匹配的oldString替换成newString

    String s = "Welcome to java";
    System.out.println(s.replace('e', 'm'));
    System.out.println(s.replaceFirst("e", "AB"));
    System.out.println("eleleledsafsdfhie".replaceAll("el", "wml"));
    

    运行结果:

    Wmlcomm to java
    WABlcome to java
    wmlwmlwmledsafsdfhie

    public String[] split(String regex):将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组

    public static void main(String args[])
    {
        	String s = "2014/07/08";
        	String[] array = s.split("/");
        	for(int i = 0; i < array.length; ++i) {
        		System.out.print(array[i] + " ");
        	}
    }
    

    运行结果:

    2014 07 08 

    public String trim():返回该字符串去掉开头和结尾空格后的字符串

    String s = "  weer ewre ";
    System.out.println(s.trim());  // weer ewre
    

    找出字符串中的某个字符或者某个子串

    int indexOf(int ch) :只找第一个匹配字符位置
    int indexOf(int ch, int fromIndex) :fromIndex开始找第一个匹配字符位置
    int indexOf(String str) :只找第一个匹配字符串位置
    int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置

    public class Main
    {
        public static void main(String args[])
        {
        	String s = new String("talk is cheap, show me your code!");
        	String ss = new String("me");
        	System.out.println(s.indexOf('s'));
        	System.out.println(s.indexOf('s', 7));
        	System.out.println(s.indexOf("ch"));
        	System.out.println(s.indexOf("ch", 9));
    	}
    }
    

    运行结果:

    6
    15
    8
    -1

    int lastIndexOf(int ch)
    int lastIndexOf(int ch, int fromIndex)
    int lastIndexOf(String str)
    int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找后一个匹配的内容

    public class Main
    {
        public static void main(String args[])
        {
        	String s = new String("talk is cheap, show me your code!");
        	String ss = new String("me");
        	System.out.println(s.lastIndexOf('c'));
        	System.out.println(s.lastIndexOf("e"));
        	System.out.println(s.lastIndexOf('e', 7));
        	System.out.println(s.lastIndexOf("me", 22));
    	}
    }
    

    运行结果:

    28
    31
    -1
    20

    字符串与数组之间的转换

    char[ ] toCharArray() :将该String对象转换成char数组

    void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。

    char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!
    String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!
    System.out.println( s1 );

    运行结果:

    I love you!

    将字符和数值转换成字符串

    static String valueOf(boolean b)
    static String valueOf(char c)
    static String valueOf(char[] data)
    static String valueOf(char[] data, int offset, int count)
    static String valueOf(double d)
    static String valueOf(float f)
    static String valueOf(int i)
    static String valueOf(long l)
    static String valueOf(Object obj)
    以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。

    public class Main
    {
        public static void main(String args[])
        {
        	String s1 = String.valueOf('c');
        	char[] charArray = {'w', 'e', 'a', 'r'};
        	String s2 = String.valueOf(charArray);
        	double d = 3.1415926;
        	String s3 = String.valueOf(d);
        	float f = 2.045f;
        	String s4 = String.valueOf(f);
        	int i = 2324;
        	String s5 = String.valueOf(i);
        	long l = 2135123;
        	String s6 = String.valueOf(l);
        	boolean b = false;
        	String s7 = String.valueOf(b);
        	System.out.println(s1);
        	System.out.println(s2);
        	System.out.println(s3);
        	System.out.println(s4);
        	System.out.println(s5);
        	System.out.println(s6);
        	System.out.println(s7);
    	}
    }
    

    运行结果:

    c
    wear
    3.1415926
    2.045
    2324
    2135123
    false

      

  • 相关阅读:
    POJ 1659 Frogs' Neighborhood
    zoj 2913 Bus Pass(BFS)
    ZOJ 1008 Gnome Tetravex(DFS)
    POJ 1562 Oil Deposits (DFS)
    zoj 2165 Red and Black (DFs)poj 1979
    hdu 3954 Level up
    sgu 249 Matrix
    hdu 4417 Super Mario
    SPOJ (BNUOJ) LCM Sum
    hdu 2665 Kth number 划分树
  • 原文地址:https://www.cnblogs.com/bigjava/p/3832353.html
Copyright © 2011-2022 走看看