参照タイプ

17218 ワード

📌 参照タイプ
📌 参照タイプと参照変数
  • Javaのタイプは、基本タイプと参照タイプに分けられます.
  • 参照タイプとは、参照対象番号のタイプ
  • を指す.
  • クラスには、配列、列挙、インタフェース、クラス
  • がある.
    int age = 25;
    double price = 100.5;
    String name = "홍길동";
    String hobby = "독서";
    前述のように、デフォルトタイプ(int、double)、参照タイプ(String)変数に値を割り当てると、
    デフォルトのタイプ変数は、値をスタックに直接格納します.
    しかし、参照タイプではhip領域のデータは番号とともに存在し、スタックのデータは番号のみを参照する形で存在する!
    📌 参照変数の===、=!えんざん
  • 参照変数では、==、!=意味は同じアドレスを参照しますか?はい.
  • 最終的には同じナンバープレートでしか同じとは言えません!
  • 例を見てみましょう
    public class StringExample {
    	public static void main(String[] args) {
    		String name1 = new String("홍길동");
    		String name2 = new String("홍길동");
    		
    		
    		if(name1==name2) {
    			System.out.println("같음");
    		}
    		else {System.out.println("다름");}
    	}

    どうして違うの?>>私たちはnewを利用して単独で発表したからです!hipとスタックにも異なるアドレスがあるので、それぞれ参照し、アドレスが異なる場合は異なる値として認識されることを忘れないでください.
    では、どのように解決すればいいのでしょうか.
    public class StringExample {
    	public static void main(String[] args) {
    //		String name1 = new String("홍길동");
    //		String name2 = new String("홍길동");
    		
    		String name1 = "홍길동";
    		String name2 = "홍길동";
    		
    		if(name1==name2) {
    			System.out.println("같음");
    		}
    		else {System.out.println("다름");}
    	}

    newを使用せずに宣言!参照タイプはnew宣言を使用し、Stringはjdk 1を使用する必要があります.5以上から、同じ字面の同じアドレスを参考にさせます.△元の住所は元の2倍で、効率が悪い!
    同じStringオブジェクトでも他のオブジェクトでも、内部文字列を比較する場合は、Stringオブジェクトのequals()メソッドを使用する必要があります.
    📌 nullとNullPointException
  • 参照タイプ変数は、オブジェクトを参照しないことを示す空の値を有することができる.
  • NullPointExceptionは最も一般的なエラーです.
  • int[] array = null;
    array[0] = 10;
    arrayは配列であるため、参照変数であり、参照変数はnullに初期化することができる.異常状態で10を[0]位置に保存しようとすると、NullPointExceptionが発生します.
    つまり、配列変数が参照する配列オブジェクトは存在しません!
    もう1つの例は
    String str = null;
    System.out.println("총 문자수: "+str.length());
    Stringは参照タイプでnullに初期化できます.Stringオブジェクトのlength()メソッドを呼び出すと、NullPointExceptionが発生します.str変数が参照するオブジェクトがないからです!
    📌 整列
    配列の宣言
  • などのタイプのデータが連続空間にリストするインデックスを作成するデータ構造
  • .
    score[인덱스]
  • 配列は同じタイプのデータしか記憶できず、一旦生成すると長さ
  • を変換できない.
  • アレイ、例えば、
    int intrArray[];
    int[] intArray;
  • 配列は、hip領域で生成され、配列変数がその形式を参照する参照変数である.
  • 🚨 **Nullpoint Exception**
    上記で参照する配列オブジェクトがない場合はnullに初期化すればよい
    타입[]변수 = null;
    ただし、null初期化変数を変数[インデックス]として値を読み出したり保存したりすると、
    Nullpoint Exceptionが表示されます
    →では、どのようにして配列に値を格納しますか?
    アレイの作成
  • 最初から括弧入力値
  • を使用する.
    변수 = new 타입[] {값01,2, ...};
    配列変数
  • が宣言されている場合、別の実行文は
  • を含んではいけません.
    타입[] 변수;
    변수 = {0,1,2,3 ...}; //error!
    では、どうやって値段をつけますか.→new演算子を使用!
    String[] names = null;
    names = new String[] {"신용권", "홍길동", "감자바"}
    NEW演算子を使用したアレイの作成
    値のリストがありませんが、将来の値を格納する配列を事前に作成したい場合は、次の操作を行います.
    타입[] 변수 = new 타입[길이];
    int[] intArray = new int[5]; << 5개 인덱스 생김!
    모두 null값으로 초기화 된다.
    アレイのコピー
  • Javaアレイは、
  • を使用して、サイズを変更できないようにコピーします.
    public class ArrayCreateExample {
    	public static void main(String[] args) {
    		int[] scores = {95,71,84,93,87};
    		int sum =0;
    		//향상된 for문
    		for(int score : scores){
    			sum+=score;
    		}
    		System.out.println("sum= " +sum);
    	}}
    インデックスが必要なときには使えない次のようなものです.
    public class ArrayCreateExample {
    	public static void main(String[] args) {
    		int[] scores = {95,71,84,93,87};
    		int sum =0;
    		
    		for(int i = 0; i<scores.lenght;i++) {
    			System.out.println("scores["+i+"]:"+scores[i]);
    			
    			if(i%2==0) {System.out.println("점");}
    			else {System.out.println();}
    		for (int score : scores) {System.out.println(score);}
    		}}
    	}