Java學習lesson 11

String類中的其他功能:

  替換功能:

 * public String replace(char oldChar,char newChar):將字符串中某一個字符用新的字符替換

 * public String replace(String oldStr,String newStr):將字符串中某一個子字符串用新 的字符                                     串去替代

 * public String trim():去除字符串兩端空格:

 

 * public int compareTo(String anotherString)  是Comparable接口中的方法(該接口可以實現一                                  個自然排序)

 * Comparator接口可以比較器排序

package string;

public class StringDemo1 {
	public static void main(String[] args){
		//定義字符串
		String str="helloword";
		System.out.println(str);
		
		//將原字符串中的字符“l”用“k”替換,
		String str1=str.replace("l", "k");
		System.out.println(str1);
		
		//將原字符串中的字符串“hello”用“hi——”替換
		String str2=str.replace("hello", "hi——");
		System.out.println(str2);
		System.out.println("----------------");
		
		String str3="  helloword  ";
		System.out.println(str3);
		
		//返回字符串的副本,忽略前導空白和尾部空白
		String str4=str3.trim();
		System.out.println(str4);
		System.out.println("----------------");
		
		
		String str5 ="helloword" ;
		String str6="abc";
		System.out.println("compareTo():"+str5.compareTo(str));
		System.out.println("compareTo():"+str6.compareTo(str));
		
	}

}


27f1921f89f20f251f23ddcb185610fa.png-wh_

 * int indexOf(String str):返回指定字符串在此字符串中的一次出現的索引

 * int indexOf(Stirng  str,int fromIndex):返回次字符串中第一次出現指定字符串出的索引,從                              指定索引開始

 * String substring(int start):從指定位置開始截字符串,默認到最末尾

 * String substring(int start,int end):從指定位置開始截取到指定位置結束

package string;

import java.util.Scanner;

public class StringDemo5 {
	public static void main(String[] args){
		String str="java";
		Scanner sc=new Scanner(System.in);
		System.out.println("請你輸入一個字符串:");
		String str1=sc.nextLine();
		System.out.println("你輸入的字符串是:"+str1);
		System.out.println("----------------");
		
		//從頭開始返回java第一次出現的首地址
		System.out.println("str1.indexOf(str):"+str1.indexOf(str));//ugfuyjavaojgojjavagfdug
		//從指定索引開始
		System.out.println("str1.indexOf(str,7 ):"+str1.indexOf(str,7 ));
		System.out.println("-------------------");
		
		//從指定位置截取字符串,默認到末尾結束
		System.out.println("str1.substring(3):"+str1.substring(3));
		//從指定位置截取字符串,到指定位置結束
		System.out.println("str1.substring(3,7):"+str1.substring(3,7));
		
		
		
	}

}


6314e9f6eee39f572aea1e840cb4c2a9.png-wh_


* StringBuffer類

    線程安全的可變字符序列,類似於String的字符串緩衝區

   *開發中線程不安全的話,可能會出現死鎖的現象!線程安全和執行效率是相對的

   * 面試題

     *StringBuffer與String的區別?

     *StringBuffer會構造一個字符串緩衝區,從內存角度考慮使用StringBuffer比較多

      String是一個普通的字符串類,從內存角度耗費空間!

      在單線程程序中使用StringBulider(線程不安全)代替StringBuffer

   *StringBuffer中的常用方法

      * 構造方法:

             *public StringBuffer(){ }

              構造一個不帶字符的字符串緩衝區,該字符串緩衝區的初始容量爲16個字符

             *public StringBuffer(int capacity)

              構造一個不帶字符,但具有指定初始容量的字符串緩衝區

             *public StringBuffer(String str)

             構造一個字符串緩衝區,並將其內容初始化爲指定的字符串內容。該字符串的初               始容量爲 16 加上字符串參數的長度。

 

 

             * public int length();獲取字符串長度

             * public int capacity():獲取當前字符串緩衝區的容量 

    *StringBuffer的添加方法:

             * public StringBuffer append( );向緩衝區追加數據,返回字符串緩衝區本身

             * public StringBUffer insert(int offset,String str):在指定位置添加一個               字符串,返回字符串緩衝區本身

     *StringBuffer的刪除方法:

             * public StringBuffer deleteCharAt(int start):刪除指定位置的字符,返回                                             字符串緩衝區本身

             * public StringBuffer deleteCharAt(int start,int end):刪除從指定位置開                                            始到指定位置結束的字符返回                                            字符串緩衝區本身


 

package stringbuffer;

public class StringBufferDemo {
	public static void main(String[] args ){
		//StringBuffer不可以像String一樣直接賦值,可以創建對象利用構造方法賦值
		//也可以通過無參構造,調用append();方法進行添加
		StringBuffer sb=new StringBuffer();
		sb.append("hello");
		sb.append("world");
		sb.append("-----javase");
		System.out.println("添加初始的字符串:"+sb);
		sb.insert(5, "-----");
		System.out.println("用insert()添加:"+sb);
		System.out.println("----------------");
		
		sb.deleteCharAt(3);
		System.out.println("刪除一個字符後的字符串:"+sb);
		System.out.println("----------------");
		
		//當前索引所對應的字符一發生了改變
		sb.delete(1, 3);
		System.out.println("刪除一個小字符串後:"+sb);
		System.out.println("----------------");
	}

}


9672ad13b84d5b0fa0cbcff2f789b9ec.png-wh_ 


     *StringBuffer和String之間的轉換

     *StringBuffer的反轉功能:

      public StringBuffer reserve();將字符串順序直接翻轉 

        

package stringbuffer;

public class StringBufferDemo1 {
	public static void main(String[] args) {
	    String str="hello";
	    //String----->StringBuffer的轉換
	    System.out.println("String----->StringBuffer的轉換");
	    //創建StringBuffer的對象指向這個字符串
	    StringBuffer sb=new StringBuffer(str);
	    System.out.println("創建StringBuffer的對象指向這個字符串:"+sb);
	    
	    //使用無參構造,調用append()方法
	    StringBuffer sb1=new StringBuffer();
	    sb1.append(str);
	    System.out.println("使用無參構造,調用append()方法:"+sb1);
	    System.out.println("----------------");
	    
	    //StringBuffer----->String的轉換
	    System.out.println("StringBuffer----->String的轉換");
	    //創建緩衝區對象
	    StringBuffer sb2=new StringBuffer("world");
	    //String有一種構造方法String(StringBuffer str)
	    String sb3=new String(sb2);
	    System.out.println("構造方法String(StringBuffer str):"+sb3);
	    //toString()方法
	    String sb4=sb2.toString();
	    System.out.println("toString()方法:"+sb4);
	    System.out.println("----------------");
	    
	    //使用StringBuffer的翻轉功能將字符串反轉“reverse()”
	    System.out.println("String類型“hello”使用reverse()翻轉後:"+sb2.reverse().toString());
	    
	    
	}

}

 

bedb92d12cf1648edb42887697b54fbd.png-wh_ 

     *StringBufferd的替換功能:

      *public StringBuffer replace(int start,int end,String str):從指定位置開始到指定位                                              置用str替換

     *StringBuffer的截取功能:

      *public StringBuffer substring(int start):從指定位置開始到末尾結束,返回一個新的字                                   符串

     *public StringBuffer substring(int start,int end):從指定位置開始到指定位置結束,返                                       回一個新的字符串


 

package stringbuffer;

public class StringBufferDemo2 {
	public static void main(String[] args){
		StringBuffer sb=new StringBuffer();
		sb.append("helloworld");
		System.out.println("初始字符串:"+sb);
		System.out.println("替換後:"+sb.replace(0, 5, "hi-"));
		System.out.println("------------------");
		
		//StringBuffer的截取功能
		//從指定位置開始截取,默認到結尾結束
		System.out.println("從的指定位置往後截取:"+sb.substring(5));
	    System.out.println("從指定位置開始到指定位置結束:"+sb.substring(3, 6));
	}

}


eca29d24d9bad03094077e21203f77a6.png-wh_


    問題:

    *String、StringBuffer、StringBuleder的區別

    String: 一個不可變的字符序列

    StringBuffer和StringBuleder是可變字符序列,在單線程時優先採用StirngBuleder

   *從線程角度考慮:StringBuleder線程不安全,不同步,執行效率高,比StringBuffer快

    *String和StringBuffer作爲形式參數和基本類型是一樣的 


 *Integer類

     jdk5.0之後的新特性:自動拆裝箱,可變參數……

     每個基本數據類型都會被封裝成一個引用類型

     基本類型              引用類型

     int                 Integer

     char                Character

     byte                Byte

     long                Long

     double               Double

     short                Short

     float                Float

     boolean              Blooean


Integer類的構造方式:

   public Integer(int value):將一個int類型的數據封裝成一個引用類型

   public Integer(String s):將一個字符數類型封裝成一個Integer類型

     該字符串必須是數字字符串否則運行出錯:java.lang.NumberFormatException

   

package integer;

public class IntegerDemo {
	
	public static void main(String[] args) {
		//public static String toBinaryString(int i)
		//以二進制無符號數形式返回一個整數參數的字符串表示形式
		System.out.println(Integer.toBinaryString(100)) ;
		
		//public static String toOctalString(int i)
		//以八進制無符號數形式返回一個整數參數的字符串表示形式
		System.out.println(Integer.toOctalString(100));
		
		//public static String toHexString(int i)
		//以十六進制無符號數形式返回一個整數參數的字符串表示形式
		System.out.println(Integer.toHexString(100));
		
		//public static final int MAX_VALUE
		//int類型能夠表示的最大值
		//public static final int MIN_VALUE
		//int類型所能表示的最小值
		System.out.println(Integer.MAX_VALUE);//2147483647
		System.out.println(Integer.MIN_VALUE);//-2147483647
	}
}


2e67c909b5b362e214f27c524e6b547f.png-wh_

  

   *int類型和String類型的轉換

     *public int intValue();//以int類型返回該Integer的值

     *public static int parseInt(String str);//將字符串參數作爲有符號數的十進制整數進行                                 解析


  *Character類

     *在對象中包裝一個基本類型char的值,Character類型的對象包含類型爲char的字段

     *構造方法:

           public Character(char value)://構造一個新分配的Character對象,來表示制定的                                char的值

     *Character的判斷功能和轉換功能

         

public static boolean isLowerCase(char ch)確定指定字符是否爲小寫字母。

     *public static boolenn isUpperCase(char ch)確定指定字符是否爲大寫字母

     *public static boolean isDigit(char ch)確定指定字符是否爲數字。

     *public static char toUpperCase(char ch):將指定字符轉換成大寫

     *public static char toLowerCase(char ch):將指定字符轉換成小寫

 

 

package character;

public class CharacterDemo {
    public static void main(String[] args) {
		
		//public static boolean isLowerCase(char ch)確定指定字符是否爲小寫字母
		System.out.println("isLowerCase:"+Character.isLowerCase('a'));
		System.out.println("isLowerCase:"+Character.isLowerCase('A'));
		System.out.println("isLowerCase:"+Character.isLowerCase('0'));
		System.out.println("---------------------------------------");
		//public static boolenn isUpperCase(char ch)確定指定字符是否爲大寫字母
		System.out.println("isUpperCase:"+Character.isUpperCase('a'));
		System.out.println("isUpperCase:"+Character.isUpperCase('A'));
		System.out.println("isUpperCase:"+Character.isUpperCase('0'));
		System.out.println("---------------------------------------");
		//public static boolean isDigit(char ch)確定指定字符是否爲數字。
		System.out.println("isDigit:"+Character.isDigit('a'));
		System.out.println("isDigit:"+Character.isDigit('A'));
		System.out.println("isDigit:"+Character.isDigit('0'));	
	}

}

 


fbfacc6218a3c0f745455934b95007e7.png-wh_ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章