기록해! 정리해!

자바 - 참조타입 (배열) 본문

JAVA

자바 - 참조타입 (배열)

zsuling 2022. 7. 8. 10:44

07/08

 

º 참조타입

: 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 가 있다

  (힙메모리에 있는 값들을 참조)

: 참조타입으로 선언된 변수의 메모리의 번지를 값으로 갖는다

  ( <---> 기본타입으로 선언된 변수는 실제 값을 변수 안에 저장한다) 

public static void main(String[] args) {
            //기본타입
		int age = 25;
		double price = 100.5;
		
		//참조타입
		String name1 = "크라피카";
		String name2 = "크라피카";
		
		String name3 = new String("크라피카");
		String name4 = new String("크라피카");

		Integer k=100;

 

1.주소 비교  //같다

자바에서 메모리를 절약하기 위해서 같은 값이 면 같은 주소를 참조한다

문자열 리터럴(대입)이 같으면 같은 주소를 사용한다

(new 해서 객체를 생성하는 건 다른 주소다.)

if(name1 == name2) {
			System.out.println("같다");
		}else {
			System.out.println("다르다");
            }

2.값 비교  //같다

if(name1.equals(name2)) {
			System.out.println("같다");
		}else {
			System.out.println("다르다");
            }

3. 주소 비교  // 다르다 (new를 사용하면 새로운 힙영역을 생성한다)

    값 비교  //같다

String name3 = new String("크라피카");
String name4 = new String("크라피카");
        
        if(name3==name4) {
			System.out.println("같다");
		}else {
			System.out.println("다르다");
		
		if(name3.equals(name4)) {
			System.out.println("같다");
		}else {
			System.out.println("다르다");
		}

4. 참조변수와 객체생성 비교

다르다 / 같다

if(name1==name3) {
			System.out.println("같다");
		}else {
			System.out.println("다르다");
		}
		
			if(name1.equals(name3)) {
				System.out.println("같다");
			}else {
				System.out.println("다르다");
			}

1) 배열

: 타입이 무조건 같아야한다

: 변수는 한 개의 데이터만 저장할 수 있기때문에 30개 저장하려면 변수30개 만들어야함

-> 같은 타입의 데이터를 연속적으로 나열시키는 것

int[]score = {83,84,73,90,100};

                     0    1  2   3    4

값이 삭제되면 공간을 비워두는 것이 아니고 땡겨서 채워진다

 

-- 73을 93으로 변경하기

 

int[]scoreA = {83,84,73,90,100};
scoreA[2]=93;

 

-- 첫번째 배열값을 출력하기 ( = 배열 0번 주소의 값을 출력하시오)

 

int[]scoreA = {83,84,73,90,100};

System.out.println("scoreA[0] :" + scoreA[0]);

-- 배열의 갯수와 순서대로 출력하기 length

		System.out.println("배열의 갯수: " +scoreA.length + "\n");
		
		for (int i = 0; i < scoreA.length ; i++) {
			System.out.print(scoreA[i] + " ");
		}

-- 순서 반대로 출력하기 length

	for (int i = scoreA.length -1; i >= 0 ; i-- ) {
			System.out.print(scoreA[i] + " ");
		}

-- 문자열로 나타내기

String[]scoreA = {"83","84","90","크라피카","클로로"};
scoreA[1]="히소카";

-- 실수로 나타내기

        double [] scoreC = {100, 200.5};
		float [] scoreD = {100, 200.5f};

float은 F나 f 붙혀준다

 

* int는 무조건 숫자 !!

Int : null 에러발생

Integer : 숫자형이라 공백문자나 문자는 받을 수 없다.

-- 숫자(기본타입)의 기본값: 0

int scores [] = new int[5]; 
        System.out.println("scores[3]:"+scores[3]);

int scores [] = new int[5]; 
		scores [1] = 50;
        System.out.println("scores[3]:"+scores[3]);
        System.out.println();
        
        for(int i = 0; i < scores.length ; i++) {
        	System.out.println("scores["+i+"] ="+scores[i]);
        }

-- 문자(참조타입)의 기본값:  null

package chapter05;

public class Test149 {

	public static void main(String[] args) {
		
		String scores [] = new String[5]; 
		scores [1] = "크라피카";
        System.out.println("scores[3]:"+scores[3]);
        System.out.println();
        
        for(int i = 0; i < scores.length ; i++) {
        	System.out.println("scores["+i+"] ="+scores[i]);
        }
	}

}

-- 문자에 공백넣기

scores [1] = "";

--boolean의 기본값 :false

 

-- 값 호출하기

--문자열 더하기

package chapter05;

public class Test149 {

	public static void main(String[] args) {
		
	System.out.println("args[0]:"+args[0]);
	System.out.println("args[1]:"+args[1]);
	System.out.println("args[2]:"+args[2]);
	
	System.out.println("arg[0]+args[1]:" +args[0]+args[1] );
	}

}

--문자를 숫자로 바꿔서 더하기 Integer.parseInt

public static void main(String[] args) {
	int i0 = Integer.parseInt(args[0]);
	int i1 = Integer.parseInt(args[1]);
	int ii = i0 + i1;
    
System.out.println("arg[0]+args[1]:" +ii);

-- 다차원 배열

package chapter05;

public class Test149 {

	public static void main(String[] args) {
	int [][] scores = new int [2][3]; //2행 3열
	System.out.println("scores의 길이:" + scores.length);
	System.out.println("scores[0]의 길이:" + scores[0].length);
	
	scores[0][0] = 100;
	scores[1][1] = 200;
	

	 for(int i=0; i<scores.length; i++) {
         System.out.println();
         for(int j=0; j<scores[i].length; j++) {
            System.out.print(scores[i][j]+" ");
         }
      }
	}

}

- 2행2열

-2행3열

-

- 다,라,마 만 출력해보기

 

-- 향상된 for문

package chapter05;

public class Test149 {

	public static void main(String[] args) {
	int [] K = {1,11,22,33};
	
	for(int k:K) {
		System.out.print(k + " ");
	}
	}

}

    String [] KK = {"가","나","다","라"};
	
	for(String kk:KK) {
		System.out.print(kk + " ");
	
	}

 

'JAVA' 카테고리의 다른 글

자바 - 객체  (0) 2022.07.12
자바 -열거  (0) 2022.07.11
자바 - board 인터페이스  (0) 2022.07.07
자바 - TV 인터페이스  (0) 2022.07.07
자바 - 난수 , switch, break, for문, while문, 확인문제 (3장,4장)  (0) 2022.07.06
Comments