JAva配列定義と初期化、タイプ変換、instanceofの使用


1、1次元配列の宣言方式:type var[];またはtype[]var;
配列を宣言するときに長さ(配列内の要素の数)を指定することはできません.
Javaでキーワードnewを使用して配列オブジェクトを作成します.フォーマットは、配列名=new配列要素のタイプ[配列要素の個数]です.
例:TestNew.java:
プログラムコード:

  
  
  
  
  1. public class TestNew  
  2. {  
  3.      public static void main(String args[]) {  
  4.          int[] s ;  
  5.          int i ;  
  6.          s = new int[5] ;  
  7.          for(i = 0 ; i < 5 ; i++) {  
  8.              s[i] = i ;  
  9.          }  
  10.          for(i = 4 ; i >= 0 ; i--) {  
  11.              System.out.println("" + s[i]) ;  
  12.          }  
  13.      }   

初期化:
1.動的初期化:配列定義は配列に空間と値を割り当てる操作とは別に行う.2.静的初期化:数値を定義しながら配列要素に空間を割り当て、値を割り当てる.3.デフォルトの初期化:配列は参照タイプであり、その要素はクラスのメンバー変数に相当するため、配列が空間を割り当てた後、各要素もメンバー変数の規則に従って暗黙的に初期化される.例:
TestD.java(ダイナミック):
プログラムコード:

  
  
  
  
  1. public class TestD  
  2. {  
  3.      public static void main(String args[]) {  
  4.          int a[] ;  
  5.          a = new int[3] ;  
  6.          a[0] = 0 ;  
  7.          a[1] = 1 ;  
  8.          a[2] = 2 ;  
  9.          Date days[] ;  
  10.          days = new Date[3] ;  
  11.          days[0] = new Date(2008,4,5) ;  
  12.          days[1] = new Date(2008,2,31) ;  
  13.          days[2] = new Date(2008,4,4) ;  
  14.      }  
  15. }  
  16.  
  17. class Date  
  18. {  
  19.      int year,month,day ;  
  20.      Date(int year ,int month ,int day) {  
  21.          this.year = year ;  
  22.          this.month = month ;  
  23.          this.day = day ;  
  24.      }  
  25. }  
  26.  

TestS.java(静態):
プログラムコード:

  
  
  
  
  1. public class TestS     
  2. {     
  3.      public static void main(String args[]) {     
  4.          int a[] = {0,1,2} ;     
  5.          Time times [] = {new Time(19,42,42),new Time(1,23,54),new Time(5,3,2)} ;     
  6.      }     
  7. }     
  8.  
  9. class Time     
  10. {     
  11.      int hour,min,sec ;     
  12.      Time(int hour ,int min ,int sec) {     
  13.          this.hour = hour ;     
  14.          this.min = min ;     
  15.          this.sec = sec ;     
  16.      }     
  17. }    

TestDefault.java(デフォルト):
プログラムコード:
public class TestDefault     
{     
     public static void main(String args[]) {     
         int a [] = new int [5] ;     
         System.out.println("" + a[3]) ;     
     }     
}                                                                                                             

2、Stringとintタイプ変換
int -> String
int i=12345; String s=""; 1つ目の方法:s=i+";第2の方法:s=String.valueOf(i);この2つの方法にはどんな違いがありますか?作用は同じですか?どんな下でも交換できるのではないでしょうか.String -> int s="12345"; int i; 1つ目の方法:i=Integer.parseInt(s);第2の方法:i=Integer.valueOf(s).intValue();この2つの方法にはどんな違いがありますか?作用は同じですか?どんな下でも交換できるのではないでしょうか.以下は答えです:第1の方法:s=i+";//2つのStringオブジェクトが生成されます.s=String.valueOf(i);//Stringクラスの静的メソッドを直接使用すると、i=Integer.parseInt(s);//静的メソッドを直接使用すると、余分なオブジェクトは生成されませんが、i=Integer.valueOf(s).intValue();//Integer.valueOf(s)はnew Integer(Integer.parseInt(s))に相当し、異常も投げられますが、1つのオブジェクト1がどのように文字列Stringを整数intに変換するかが多く発生します.A.2つの方法がある:1).int i=Integer.parseInt([String]);またはi=Integer.parseInt([String],[int radix]);2). int i = Integer.valueOf(my_str).intValue();//注:文字列をDouble,Float,Longに変換する方法は大きく異なります.2整数intを文字列Stringに変換するにはどうすればいいですか.A.3つの方法がある:1.)String s=String.valueOf(i);                 2.) String s = Integer.toString(i);                          3.) String s = ""+ i;         //注意:Double,Float,Longを文字列に変換する方法は大きく異なります.3、instanceofの使い方と例
     instanceOfはJavaの二元オペレータで、=,>,<と同じものです.アルファベットで構成されているため、Javaの予約キーワードでもあります.左側のオブジェクトが右側のクラスのインスタンスであるかどうかをテストし、booleanタイプのデータを返す役割を果たします.継承中の子クラスのインスタンスが親クラスであるかどうかで使用できます.c#のisオペレータに相当します.         例:
例1、int[][]=new inta[2][3][4];System.out.println(a instanceof  int[][][]);//またはSystem.out.println(a instanceof) object);
System.out.println(a instanceof  int[][]);//aは3 D配列System.out.println(a[0]instanceof  int[][]);//a[0]は2次元配列System.out.println(a[0][0]instanceof  int[][]);//a[0][0]は1次元配列である
 
例2、
String s = "I AM an Object!";
  boolean isObject = s instanceOf Object;
Stringオブジェクト参照を宣言し、Stringオブジェクトを指し、instanceOfを使用してオブジェクトがObjectクラスのインスタンスであるかどうかをテストします.これは明らかに本当なので、true、すなわちisObjectの値がtrueに戻ります.
instanceOfにはいくつかの役に立ちます.たとえば、請求書を処理するシステムには、次の3つのクラスがあります.
public class Bill{//詳細を省略}
public class PhoneBill extends Bill{//詳細を省略}
public class GasBill extends Bill{//詳細を省略}
プロセッサにはBillタイプのオブジェクトを受け入れて金額を計算する方法があります.2つの請求書の計算方法が異なると仮定し、入力されたBillオブジェクトは2つのいずれかである可能性があるので、instanceOfで判断します.
  public double calculate(Bill bill) {
  if (bill instanceOf PhoneBill) {
//電話帳の計算
  }
  if (bill instanceOf GasBill) {
//ガス請求書の計算
  }
  ...
}これにより,2つの種子類を1つの方法で処理することができる.しかしながら,この手法は通常,オブジェクト向けの多態性をうまく利用していないと考えられる.実は上の機能は方法でリロードして完全に実現することを要求して、これはオブジェクト向けのプログラミングの当然のやり方で、構造化のプログラミングモードに戻ることを避けます.2つの名前と戻り値が同じであれば、パラメータタイプの異なるメソッドを受け入れることができます.
  public double calculate(PhoneBill bill) {
//電話帳の計算
  }
  public double calculate(GasBill bill) {
//ガス請求書の計算
  }
したがって、instanceOfを使用することは、ほとんどの場合、推奨される方法ではなく、マルチステートをよく利用する必要があります.InstanceOfは一般的にオブジェクトタイプの強制変換に用いられ、
例:
継承関係class Manager extends Employee
  public void doSomething(Employee e) {
  if ( e instanceOf Manager){
  Manager m = (Manager) e ; }
  }                                              
4、ArrayCopyの使い方int  a[]={1,2,3,4}; int b[]=new int[4]; System.arraycopy(a,0, b, 0, a.length); for(int i=0;i