JAvaのStringクラス
5396 ワード
// :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は文字列であると判断するので、// 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
}}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
}
//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);
} //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コンテナは、各リクエストに対して多くの廃棄可能なオブジェクトを生成し、パフォーマンスやゴミ回収の問題を引き起こすことはありません)