본문 바로가기

JAVA

[35일차] chap5. 데이터 타입 분류 (p138 ~ )

메모리 사용 영역

 

 

package chapter05;

public class Test139 {
	public static void main(String[] args) {
		//기본타입 (빨간색, 소문자로시작)
		//기본타입: 변수에 실제값을 저장한다 
		int age= 25;
		double price=100.5;
		
		//참조타입(검정색, 대문자로시작)
		//참조타입: 객체의 번지를 참조하는 타입으로 배열,열거,클래스,인터페이스 타입을 말한다
		//        참조타입으로 선언된 변수는 메모리의 번지(주소)를 값으로 갖는다 
		String name1="신용권";
		String name2="신용권";
		Integer k=100;
		
		if(name1 == name2) {
			System.out.println("같다"); //같은값이면 같은 번지를 참조하게끔 설계되어있음
			 		 // but 객체를 생성하는건 다른 것. new라고 해서 객체 생성하면 
			                           // 값이 똑같아도 주소가 다르게 생성된다
			 		 //따라서 객체를 생성해서 값을 비교하고 싶을때 equals를 쓴다
		}else {
			System.out.println("다르다");
		}
		
		
		
		if(name1.equals(name2)) {   //equals를 쓰면 값을 비교하게 된다 
			System.out.println("같다"); 
		}else {
			System.out.println("다르다");
		}
		
		
		
		String name3= new String("신용권");
		String name4= new String("신용권");
		
		
		if(name3 == name4) {
			System.out.println("같다"); 
		}else {
			System.out.println("다르다"); // new로 객체생성시 주소비교하면 다르다라고 나옴 
		}
		
		
		
		if(name3.equals(name4)) {   
			System.out.println("같다"); //값을 비교하면 같다고 나온다 
		}else {
			System.out.println("다르다");
		}
	}
}
문자열 리터럴(변수에다 값을 대입한 것) 이 같으면 같은 주소( 같은 heap 영역) 를 사용한다 . 
new를 사용하면 새로운 heap영역을 생성한다.  (다른 주소를 사용한다) 

 

배열 타입

 

package chapter05;

public class Test149 {
	public static void main(String[] args) {
		/*배열 사용하기 
		 배열: 같은 타입의 데이터를 연속된 공간에 나열시킨 구조
		배열은 동일한 형태의 변수의 수를 줄여준다.(메모리절약)
		따라서 배열은 타입이 같아야한다
		*/
		
		int score1=83;
		int score2=84;
		int score3=85;
		int score4=86;
		int score5=87;
		
		int[] scoreA = {83,84,85,86,87}; 
		int scoreB[] = {83,84,85,86,87}; 
		// []의 위치는 변수의 앞, 뒤 모두 가능하다 
	}
}
int[] scoreA = {83,84,85,86,87}; 
		// 83을 93으로 변경하기 
		scoreA[2]=93;
		
		System.out.println("배열의 갯수:"+scoreA.length+"\n");
		for(int i=0; i<scoreA.length; i++) {
			System.out.print(scoreA[i]+" ");
		}
		
	
		
		//배열 0번 주소의 값을 출력하시오 
		System.out.println("scoreA[0]:"+scoreA[0]);
		
		
		//배열 값을 거꾸로 출력하기 
		System.out.println("배열의 갯수:"+scoreA.length+"\n");
		for(int i=scoreA.length-1; i>=0; i--) {
			System.out.print(scoreA[i]+" ");
		}

93으로 변경

 

배열0번 출력

 

배열순서 반대로출력

 


		//문자열 배열 
		String[] scoreA = {"83","84","우리","하니"}; 
		scoreA[1]="하늘";
		
		//실수형 배열 
		double[] scoreB = {100, 200.5}; //정수도 들어감 
		float[] scoreC= {100,200.5f}; //float은 실수를 나타낼때 f를 써준다


new 연산자로 배열 생성 

 

package chapter05;

public class Test155 {
	public static void main(String[] args) {
	
		int scores[] =new int[5];
		
		System.out.println("scores[3]: "+scores[3]); 
		//scores[3]: 0
		
		
		scores[1]= 50;
		System.out.println();
		for(int i =0; i< scores.length; i++) {
			System.out.print(" scores[" +i+"]=" +scores[i]);
		}
		//scores[0]=0 scores[1]=50 scores[2]=0 scores[3]=0 scores[4]=0
	
		
		
		String scores2[]= new String[5];
		scores2[1]="우리나라";
		scores2[0]="";
		
		System.out.println();
		for(int i =0; i< scores2.length; i++) {
			System.out.print(" scores[" +i+"]=" +scores2[i]);
		}
		//scores[0]= scores[1]=우리나라 scores[2]=null scores[3]=null scores[4]=null
		
		
	}
}

타입별 배열의 초기값

char 는 \u0000 , long은 0L , float는 0.0F

 

package chapter05;

public class Test159 {
	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]);
		//배열의 인덱스 값 범위가 벗어났다는 오류가 발생 
		
		
	}
}

Arguments에서 값을 입력해주면 

값이 뜨게 된다 

ㄴ문자열배열이지만 정수나, 실수를 넣어도 자동 형변환 되어서 들어간다 

더하게 되면 문자열 더하기가 된다 

 

숫자연산이 되도록 형변환 시키기 

" " 문자열이랑 숫자랑 더하면 문자열로 형변환이 되기 때문에 
괄호로 전체 한번 더 감싸줘야 한다 


 

다차원 배열 

2X3 행렬의 구조 

  열 0 열 1 열 2
행 0 (0,0) (0,1) (0,2)
행 1 (1,0) (1,1) (1,2)

 

 

배열속의 배열 (164페이지)

문자열

 


향상된 for 문 

 

'JAVA' 카테고리의 다른 글

[36일차] 시험대비  (0) 2022.07.11
[35일차] JSP 사용하기  (0) 2022.07.08
[34일차] 서비스 사용하기  (0) 2022.07.07
[34일차] 자바 패키지 하나 더 만들기  (0) 2022.07.07
[33일차]  (0) 2022.07.06