JAvaのStringクラス

5396 ワード

  • 概要は、二重引用符で囲まれた文字列Stringクラスのパッケージjavaと呼ぶ.lang.Stringではjava.langのパッケージは、プログラムを書くときにimportが文字列に入る必要はありません.いったん作成すると、変更できません.定数は文字列が変更できないからこそ、文字列は共有して使用することができます.もし共有するものはみんなが勝手に修正することができて、一度使って1回残して、誰がまた共有したいと思って、考えても気持ちが悪くて、共有自転車はみんな使うことができて、使う時に勝手にそれを台無しにして、分解することができますか??文字列効果はchar[]文字配列に相当するが、下位原理はbyte[]配列
  • である.
  • Stringクラスの作成(3+1方式)2.1 3つの構築方法public String()コンテンツpublic String(char[]array)を含まない空白の文字列を作成します.文字列配列の内容に基づいて、対応する文字列public String(byte[]array)を作成します.バイト配列の内容に基づいて、対応する文字列を作成する3つの構造方法public class ConstructString{public static void main(String[]args){//最初の構造方法:public String();コンテンツString str 1=new String();System.out.println("最初の文字列:"+str 1)を含まない空白の文字列を作成する;//1番目の文字列:
    //       :public String(char[] array);           ,         
    char[] charArray = {'A', 'B', 'C'};
    String str2 = new String(charArray);
    System.out.println("      :" + str2);  //      :ABC
    
    //       :public String(byte[] array);          ,         
    byte[] byteArray = {97, 98, 99};  //  ,byte     , ASCII        
    String str3 = new String(byteArray);
    System.out.println("      :" + str3);  //      :abc
    }}2.2 String str 4=「HelloWorld!」を直接作成する1 newがあるかどうかにかかわらず、二重引用符内のものであれば、JVMは文字列であると判断するので、
  • を直接作成することができます.
  • 定数プール3.1文字列の比較に関する小さな知識javaではif(String 1==String 2)で2つの文字列を比較し、この2つの文字列のアドレスが同じかどうかを比較し、それらの値が同じかどうかを知りたい場合はXMがwww.fx 61を返す.com/brokerlist/xm.htmlは、Stringのequalsメソッド、例えばpublic static void main(String[]args){String str 1=new String("hello");String str 2=new String("hello");
    //  str1       str2     
    System.out.println( str1 == str2 );   //false    
    
    //  str1   str2       
    System.out.println( str1.equals(str2) ); //true   ,  hello
    }3.2スタック(heap)における定数プールstr 1とstr 2の比較結果がtrueであり、それらが同じ文字列であることを証明し、2つの名前にすぎず、メモリの中で同じアドレスを指している.それらがいる場所を定数プールと呼ぶので、定数プールのhello文字列は共有して使用することができ、変更できません.str 1はstr 3とは異なり、それらのアドレスが異なることを証明し、newによって作成された文字列は、いずれも定数プールではないが、定数public class ConstantPool{public static void main(String[]args){String str 1="hello";String str 2="hello";String str 3=new String("hello");
    System.out.println(str1 == str2);  //true
    System.out.println(str1 == str3);  //false
    System.out.println(str2 == str3);  //false
    }}
  • 文字列の比較方法4.1 Stringのequals方法は3.定数プールの小さな知識では、2つの文字列の値が同じかどうかを比較するには、equalsメソッドを使用し、戻り値はブール値であり、trueであり、falseではないことを知っています.

  • public boolean equals(Object obj)補足:任意のオブジェクトはObjectで受信でき、Stringクラスはもちろん可能です.
    equals法は対称性、すなわちstr 1を有する.equals(str 2)とstr 2.equals(str 1)の結果は同じ注意である:比較双方が定数1変数である場合、文字列定数を前に書くことを推奨する「abc」を推奨する.equals(str)は推奨しません:str.equals("abc")文字列strがnullである場合、"abc".equals(str)の結果はfalseに違いないが、str.equals(「abc」)と書くと空のポインタが異常になるNull PointerExceptionで、勝手に異常を起こしてはいけない.4.1 StringのequalsIgnoreCaseメソッドequalsメソッドとの違いは、大文字小文字、Ignore無視、Case大文字小文字public static void main(String[]args){String str 1="hello";String str 2="Hello";
        //  str1   str2       ,       
        System.out.println( str1.equals(str2) );   //false 
    
        //  str1   str2       ,     
        System.out.println( str1.equalsIgnoreCase(str2));  //true
    }
  • Stringにおける取得に関する方法の概要public int length()文字列に含まれる文字数を取得し、文字列長public String concat(String str)を取得する.現在の文字列とパラメータ文字列を新しい文字列public char charAt(int index)として返す値につなぎます.指定したインデックス位置の1文字を取得します.(インデックスは0から)public int indexOf(String str);パラメータ文字列がこの文字列で初めて現れるインデックスの位置を検索します.-1値5.1 length()とconcat(String str)public static void main(String[]args){//length()メソッドがない場合は、文字列の長さint length=「abcdefghijk」.length();System.out.println(「文字列の長さは:」+length);
    //concat(String str),     
    String str1 = "Hello";
    String str2 = "World";
    String str3 = str1.concat(str2); //str1               , str1    
    
    //         
    System.out.println(str1); 
    System.out.println(str2); 
    System.out.println(str3); 
    }
  • /出力結果:文字列の長さは:11 HelloWorld HelloWorld/5.2 charAt(int index)とindexOf(String str)public static void main(String[]args){//charAt(int index)で、指定したインデックス位置の単一文字char ch="hello".charAt(1);System.out.println("1番インデックス位置の文字は:"+ch);
        //indexOf(String str),                         
        //    ,   -1 
        String original = "helloworld!";
        int index = original.indexOf("ll0");
        System.out.println("       :" + index); //2
    }

    6、Struts 1とStruts 2の違い(1)actionクラスからの分析:Struts 1は、Actionクラスに抽象ベースクラスを継承するように要求する.Struts 1の一般的な問題は、インタフェースではなく抽象クラスを使用してプログラミングすることである.Struts 2 Actionクラスは、1つのActionインタフェースを実現することも、他のインタフェースを実現することもでき、オプションおよびカスタマイズされたサービスを可能にする.Struts 2は、一般的なインタフェースを実現するためにActionSupportベースクラスを提供する.Actionインタフェースは、必要です.executeで識別されたPOJOオブジェクトは、Struts 2のActionオブジェクトとして使用できます.(2)サーブレット依存解析から:Struts 1 ActionはサーブレットAPIに依存する.なぜなら、1つのActionが呼び出されるとHttpサーブレットRequestとHttpサーブレットResponseがexecuteメソッドに渡されるからである.Struts 2 Actionはコンテナに依存せず、Actionがコンテナから離脱して単独でテストされることを可能にする.必要であれば、Struts 2 Actionは元のrequestとresponseにアクセスできる.ただし、他のメタセルは、HttpServeretRequestおよびHttpServeretResponseへの直接アクセスの必要性を低減または排除する.(3)actionスレッドパターン解析から:Struts 1 Actionは、すべての要求を処理するためにActionの1つのインスタンスのみがあるため、単一のパターンであり、スレッドが安全でなければならない.単一のポリシーは、Struts 1 Actionができることを制限し、開発時に特に注意しなければならない.Actionソースは、スレッドが安全であるか同期している必要がある.Struts 2 Actionオブジェクトは、各要求に対して1つの実体を生成する例のため、スレッドセキュリティの問題はありません.(実際、servletコンテナは、各リクエストに対して多くの廃棄可能なオブジェクトを生成し、パフォーマンスやゴミ回収の問題を引き起こすことはありません)