【javaベース】-Stringクラスと基本データ型パッケージクラス


一、String類
1、Stringクラスの概要
①Stringクラスは文字列タイプオブジェクトです.Javaプログラムのすべての文字列、例えばabcは、このようなインスタンスとして実装されます.②Stringクラスの特徴文字列定数は、作成後は変更できません.String str=「abc」はchar data[]={'a','b','c'}に等しい.  String str = new String(data);
2、String類のよくある機能
①取得
  • length():この文字列の長さを返します.
  • charAt(int index):指定したインデックスのchar値を返します.
  • hashCode():この文字列のハッシュコードを返します.
  • indexOf(int ch):指定された文字列の最初の出現箇所のインデックスを返します.
  • indexOf(int ch, int fromIndex):この文字列に指定された文字が初めて現れたインデックスを返し、指定されたインデックスから検索を開始します.
  • indexOf(String str):指定されたサブ文字列がこの文字列の最初に表示されたインデックスを返します.
  • indexOf(String str, int fromIndex):指定されたサブ文字列がこの文字列の最初に表示されたインデックスを返し、指定されたインデックスから開始します.
  • lastIndexOf(int ch): 。

  • Stringクラス取得機能コードのデモ:
    package cn.itcast_04;
    
    /*
     * String      
     * int length():        。
     * char charAt(int index):           
     * int indexOf(int ch):                     。
     * 		      int  ,   char  ?
     * 		   :'a' 97       'a'
     * int indexOf(String str):                      。
     * int indexOf(int ch,int fromIndex):                           。
     * int indexOf(String str,int fromIndex):                            。
     * String substring(int start):            ,     。
     * String substring(int start,int end):                   。
     */
    public class StringDemo {
    	public static void main(String[] args) {
    		//          
    		String s = "helloworld";
    
    		// int length():        。
    		System.out.println("s.length:" + s.length());
    		System.out.println("----------------------");
    
    		// char charAt(int index):           
    		System.out.println("charAt:" + s.charAt(7));
    		System.out.println("----------------------");
    
    		// int indexOf(int ch):                     。
    		System.out.println("indexOf:" + s.indexOf('l'));
    		System.out.println("----------------------");
    
    		// int indexOf(String str):                      。
    		System.out.println("indexOf:" + s.indexOf("owo"));
    		System.out.println("----------------------");
    
    		// int indexOf(int ch,int fromIndex):                           。
    		System.out.println("indexOf:" + s.indexOf('l', 4));
    		System.out.println("indexOf:" + s.indexOf('k', 4)); // -1
    		System.out.println("indexOf:" + s.indexOf('l', 40)); // -1
    		System.out.println("----------------------");
    
    		//     :int indexOf(String str,int
    		// fromIndex):                            。
    
    		// String substring(int start):            ,     。  start    
    		System.out.println("substring:" + s.substring(5));
    		System.out.println("substring:" + s.substring(0));
    		System.out.println("----------------------");
    
    		// String substring(int start,int
    		// end):                   。  start      end  
    		System.out.println("substring:" + s.substring(3, 8));
    		System.out.println("substring:" + s.substring(0, s.length()));
    	}
    }

    ②切り替え
  • toCharArray():この文字列を新しい文字配列に変換します.
  • getBytes():文字列をバイト配列に変換します.
  • toUpperCase():文字列の文字を大文字に変換します.
  • concat(String str):文字列を
  • に接続する
    Stringクラス変換機能コードのデモ:
    package cn.itcast_05;
    
    /*
     * String     :
     * byte[] getBytes():           。
     * char[] toCharArray():           。
     * static String valueOf(char[] chs):          。
     * static String valueOf(int i): int          。
     * 		  :String  valueOf                 。
     * String toLowerCase():        。
     * String toUpperCase():        。
     * String concat(String str):      。
     */
    public class StringDemo {
    	public static void main(String[] args) {
    		//          
    		String s = "JavaSE";
    
    		// byte[] getBytes():           。
    		byte[] bys = s.getBytes();
    		for (int x = 0; x < bys.length; x++) {
    			System.out.println(bys[x]);
    		}
    		System.out.println("----------------");
    
    		// char[] toCharArray():           。
    		char[] chs = s.toCharArray();
    		for (int x = 0; x < chs.length; x++) {
    			System.out.println(chs[x]);
    		}
    		System.out.println("----------------");
    
    		// static String valueOf(char[] chs):          。
    		String ss = String.valueOf(chs);
    		System.out.println(ss);
    		System.out.println("----------------");
    
    		// static String valueOf(int i): int          。
    		int i = 100;
    		String sss = String.valueOf(i);
    		System.out.println(sss);
    		System.out.println("----------------");
    
    		// String toLowerCase():        。
    		System.out.println("toLowerCase:" + s.toLowerCase());
    		System.out.println("s:" + s);
    		// System.out.println("----------------");
    		// String toUpperCase():        。
    		System.out.println("toUpperCase:" + s.toUpperCase());
    		System.out.println("----------------");
    
    		// String concat(String str):      。
    		String s1 = "hello";
    		String s2 = "world";
    		String s3 = s1 + s2;
    		String s4 = s1.concat(s2);
    		System.out.println("s3:"+s3);
    		System.out.println("s4:"+s4);
    	}
    }

    ③判断
  • equals(Object anObject):2つの文字列の内容が同じかどうかを比較します.注:StringクラスのequalsはObjectのequalsを複写し、Stringクラス独自の判断字を作成しました:内容を比較します.
  • equalsIgnoreCase(String anotherString):このStringを別のStringと比較し、大文字と小文字を考慮しない.
  • contains(CharSequence s):文字列に指定された文字列が含まれているかどうか.

  • String判定機能コードのデモ:
    package cn.itcast_03;
    
    /*
     * String      :
     * boolean equals(Object obj):            ,     
     * boolean equalsIgnoreCase(String str):            ,     
     * boolean contains(String str):               
     * boolean startsWith(String str):                  
     * boolean endsWith(String str):                  
     * boolean isEmpty():         。
     * 
     *   :
     * 		               。
     * 		String s = "";
     * 		String s = null;
     */
    public class StringDemo {
    	public static void main(String[] args) {
    		//        
    		String s1 = "helloworld";
    		String s2 = "helloworld";
    		String s3 = "HelloWorld";
    
    		// boolean equals(Object obj):            ,     
    		System.out.println("equals:" + s1.equals(s2));
    		System.out.println("equals:" + s1.equals(s3));
    		System.out.println("-----------------------");
    
    		// boolean equalsIgnoreCase(String str):            ,     
    		System.out.println("equals:" + s1.equalsIgnoreCase(s2));
    		System.out.println("equals:" + s1.equalsIgnoreCase(s3));
    		System.out.println("-----------------------");
    
    		// boolean contains(String str):               
    		System.out.println("contains:" + s1.contains("hello"));
    		System.out.println("contains:" + s1.contains("hw"));
    		System.out.println("-----------------------");
    
    		// boolean startsWith(String str):                  
    		System.out.println("startsWith:" + s1.startsWith("h"));
    		System.out.println("startsWith:" + s1.startsWith("hello"));
    		System.out.println("startsWith:" + s1.startsWith("world"));
    		System.out.println("-----------------------");
    
    		//   :boolean endsWith(String str):                       
    
    		// boolean isEmpty():         。
    		System.out.println("isEmpty:" + s1.isEmpty());
    
    		String s4 = "";
    		String s5 = null;
    		System.out.println("isEmpty:" + s4.isEmpty());
    		// NullPointerException
    		// s5      ,        ,     
    		System.out.println("isEmpty:" + s5.isEmpty());
    	}
    }

    ④置換
  • replace(char oldChar, char newChar):文字列の内容を
  • に置き換える.
    ⑤カット
  • split(String regex):指定された正規表現の一致に基づいてこの文字列を分割します.
  • split(String regex, int limit):指定された正規表現に一致するように文字列を分割します.

  • ⑥サブストリング、サブストリングの一部を取得
  • substring(int beginIndex):この文字列のサブ文字列である新しい文字列を返します.
  • substring(int beginIndex, int endIndex):この文字列のサブ文字列である新しい文字列を返します.注意:ヘッダは含まれ、テールは含まれません.

  • ⑦スペースを除いて比較
  • trim():文字列の両端のスペースを削除します.
  • compareTo(String anotherString):2つの文字列を自然な順序で比較します.
  • compareToIgnoreCase(String str):大文字と小文字を無視し、2つの文字列を自然な順序で比較します.

  • 機能コードのデモ:
    package cn.itcast_06;
    
    /*
     * String      :
     * 
     *     :
     * String replace(char old,char new)
     * String replace(String old,String new)
     *
     *         	
     * String trim()
     * 
     *               
     * int compareTo(String str)
     * int compareToIgnoreCase(String str)
     */
    public class StringDemo {
    	public static void main(String[] args) {
    		//     
    		String s1 = "helloworld";
    		String s2 = s1.replace('l', 'k');
    		String s3 = s1.replace("owo", "ak47");
    		System.out.println("s1:" + s1);
    		System.out.println("s2:" + s2);
    		System.out.println("s3:" + s3);
    		System.out.println("---------------");
    
    		//         
    		String s4 = " hello world  ";
    		String s5 = s4.trim();
    		System.out.println("s4:" + s4 + "---");
    		System.out.println("s5:" + s5 + "---");
    
    		//             
    		String s6 = "hello";
    		String s7 = "hello";
    		String s8 = "abc";
    		String s9 = "xyz";
    		System.out.println(s6.compareTo(s7));// 0
    		System.out.println(s6.compareTo(s8));// 7
    		System.out.println(s6.compareTo(s9));// -16
    	}
    }

    String小練習:文字列のサブストリングの出現回数を統計する:
    package cn.itcast_07;
    
    /*
     *             
     *   :
     * 		    "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"
     *   :
     * 		java   5 
     * 
     *   :
     * 		  :           。
     * 
     * 		A:        ,     0
     * 		B:                   
     * 			a:   -1,      ,       
     * 			b:    -1,    ,    ++
     * 		C:      +                   ,         ,               
     * 		D:  B
     */
    public class StringTest4 {
    	public static void main(String[] args) {
    		//     
    		String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
    		//     
    		String minString = "java";
    
    		//      
    		int count = getCount(maxString, minString);
    		System.out.println("Java       :" + count + " ");
    	}
    
    	/*
    	 *     :      :int     :     
    	 */
    	public static int getCount(String maxString, String minString) {
    		//         ,     0
    		int count = 0;
    
    		//                    
    		int index = maxString.indexOf(minString);
    
    		//     -1,    ,    ++
    		while (index != -1) {
    			count++;
    			//       +                   ,         ,               
    			int startIndex = index + minString.length();
    			maxString = maxString.substring(startIndex);
    			//    
    			index = maxString.indexOf(minString);
    		}
    
    		return count;
    	}
    }

    3、StringbufferとStringBuilder
    ①StringBufferの概要:コンテナであり、文字列の構成原理はこのクラスによって実現される.StringBufferは文字列の内容を削除して調べることができ、多くの方法はStringと同じです.は、スレッドが安全な可変文字シーケンスです.
    ②StringBufferの特徴:
  • の長さは可変です.
  • は、異なるデータ型を格納することができる.
  • は最終的に文字列に変換して使用される.
  • は、文字列を変更することができる.

  • ③構築方法の概要
  • StringBuffer():文字なしの文字列バッファを構築し、初期容量は16文字です.
  • StringBuffer(CharSequence seq):指定されたCharSequenceと同じ文字を含む文字列バッファを構築します.
  • StringBuffer(int capacity):文字なしで初期容量を指定した文字列バッファを構築します.
  • StringBuffer(String str):文字列バッファを構築し、その内容を指定した文字列コンテンツに初期化します.

  • ④StringBuffer共通操作a、記憶機能
  • StringBuffer append():指定したデータをパラメータとして既存のデータの末尾に追加します.
  • StringBuffer insert(intoffset,データ):指定したoffset位置にデータを挿入できます.

  • b、削除機能
  • StringBufferedelete(start,end):startを含むバッファ内のデータを削除し、endを含まない.
  • StringBuffer deleteCharAt(index):指定した位置の文字を削除します.
  • バッファをクリアする:オブジェクト.delete(0,オブジェクト.length()

  • c、取得
  • はStringと同じです.

  • d、反転
  • StringBuffer reverse();

  • e、バッファ内の指定データを指定文字配列に格納する
  • voidgetChars(int srcBegin, int srcEnd,char[] dst,int dstBegin)

  • ⑤StringBuilder:可変文字列.StringBufferと互換性がありますが、同期は保証されません.Stringbufferよりも効率が高い.一般的には、クラスを優先的に使用することをお勧めします.このクラスはJDK 1である.5以降に現れた.その機能はStringBufferと一致しています.ここではもう余計なことは言わない.
    二、基本データ型包装類
    1、概要
    基本データ型パッケージクラスは、基本データ型値の操作を容易にするためにオブジェクトにカプセル化され、オブジェクトに属性と動作を定義してデータの操作を豊富にするとともに、オブジェクトを記述したクラスを基本データ型オブジェクトと呼ぶパッケージクラスである.
    2、基本データ型オブジェクト包装類
    byte
    Byte
    short
    Short
    int
    Integer
    long
    Long
    boolean
    Boolean
    float
    Float
    double
    Double
    char
    Character
    3、文字列——>基本タイプ
    ①包装類における静的方法:xxxを用いる.parsexxx(String)
    eg:int parseInt(「intString」)は、8種類のうちcharacter以外にparseメソッドがなく、他の7種類があります.
    ②文字列がIntergerによってオブジェクトのカプセル化されている場合は、別の非静的な方法を用いることができる.intValue()は、Integerオブジェクトを基本データ型に変換します.
    4、基本タイプ——>文字列
    ①基本タイプ数値+";
    ②Stringクラスでの静的メソッドvalueOf(基本タイプ数値)
    ③Integerの静的方法valueOf()を用いる.
    5、JDK1.5新機能:自動梱包
    JDK 1.5の後、自動梱包があって箱を取り外します.
    eg:Integer i = new Interger(4);//JDK1.5前の書き方.
           Integer i = 4;//自動梱包、1.5バージョン以降の書き方.
           i = i + 5;//iオブジェクトは直接5に加算することはできませんが、実際には下位層はiをintタイプに変換してから5に加算し、intタイプに変換する操作は暗黙的で、これが自動解体であり、原理はi.intvalue()です.
    小知識点:Integer i 1=100;   Integer i2 = 100;  i1 == i2 ?結果はtrueです.
                      Integer i1 = 200;   Integer i2 = 200;  i1 == i2 ?結果はfalseです.
    どうしてこんな結果になったのでしょうか.
    内部のコードを見ると、Integerクラスには-128~127の間の整数がキャッシュされ、valueを呼び出すと新しいオブジェクトは生成されず、キャッシュから直接オブジェクトを取り出すキャッシュがあり、パフォーマンスが向上します.構造を使うと必ず新しいオブジェクトが生まれます.