Java/Java
자바[Java] 데이터 타입의 기본 타입과 참조 타입에 대한 개념 정리
백엔드 신입사원( soft 5.10 입사)
2021. 10. 6. 15:42
반응형
데이터 타입
모든 변수에는 타입(type: 형)이 있습니다. 타입은 변수를 사용하는 도중 변경할 수 없기 때문에 어떤 타입을 사용할지 정해서 사용해야 합니다.
기본 타입(원시 : primitive) 타입
기본 타입이란? 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입을 말합니다. 아래 표와 같이 정수 타입엔 byte, char, short, int , long이 있고 실수타입엔 float와 double 그리고 논리 타입에는 boolean이 있습니다. 기본 타입에 메모리 크기와 저장되는 값의 범위를 보여줍니다.

타입이 char이면 유니코드에 해당하는 문자열을 출력해줍니다.
public class Example{
public static void main(Stirng[] args){
char a1 = 'A';
char a2 = 65;
char a3 = '\u0041';
int unicode = c1;
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(unicode);
}
}
변수의 메모리 사용
기본 타입의 변수는 실제 값을 변수 안에 저장하며 , 참조 타입의 변수는 주소를 통해 객체를 참조합니다. 메모리는 스택(stack)영역 , 힙(heap) 영역이 있다. 쉽게 말해 기본 타입의 변수는 스택영역에, 참조 타입의 변수는 힙영역에 들어가게 됩니다.
- 배열을 사용하기 위해선 배열의 변수를 선언주어야 합니다.
- 배열은 같은 타입의 데이터이며, 연속된 공간에 저장하는 구조이며 배열 타입은 for문과 잘 활용할수있고, 배열은 중복된 변수를 줄이고 반복문을 이용해 쉽고 간단하게 사용 할 수 있습니다.
- 배열은 참조 타입 변수이며 배열이 생성 되기전에 null로 초기화를 할수있고, 만일 배열의 변수가 null값을 가진 상태라면 해당 항목은 접근할수 없습니다.
참조 타입
참조 타입이란? 배열, 열거, 클래스, 인터페이스를 이용해 선언된 변수는 메모리의 번지를 값으로 갖는다. 번지를 통해 객체를 참조한다는 뜻에서 참조타입이라 부릅니다.
배열의 기본내용
package a;
public class newtype {
public static void main(String[] args) {
// int 타입의 a 는 3, 5, 9, 4라는 값을 가지고 있다.
int[] a = new int[] { 3, 5, 9, 4};
// 출력을 해보자면 a의 0번째인 3을 출력한다. 아래 내용도 동일하다.
System.out.print(" a = " + a[0] + ", ");
System.out.print(" a = " + a[1] + ", ");
System.out.print(" a = " + a[2] + ", ");
System.out.print(" a = " + a[3] + ", ");
//만일 해당 a의 합계, 평균을 구하려면 for문을 이용하면 된다.
int c = 0; // c 는 0이라는 값을 만든다.
for(int i=0; i<a.length; i++){ //for 문을 통해 반복문을 적어둔다. 이때 length(랭스)라는
//함수는 문자열의 길이를 알아보고자 할때 적는다. 결론은 i를 4번 반복한다.
c += a[i]; //c 는 a를 a의 길이만큽 합한다는 내용이다.
}
System.out.println("합 : " + c); //결과를출력한다.
double d = (double) c / a.length; // d는 c와 a의 문자열의 길이 값 만큼 나눈 수 를 출력한다.
System.out.println("평균 : " + d); // 결과를 출력한다.
}
}
실행 결과 : a의 값을 3 , 5 , 9 ,4 를 출력하고 해당 총합과 ,평균을 출력했다.
a = 3, a = 5, a = 9, a = 4, 합 : 21
평균 : 5.25
아래 코드는 배열을 뒤에 두고 그 값을 합한 식을 만들어 보는 예시 입니다.
package a;
public class newtype {
public static void main(String[] args) {
int[] a; // int 타입의 a를 생성해준다.
a = new int[] { 7, 9, 1 }; // a의 힙을 만들며 값을 저장한다.
int b = 0; // 합산하기 위에 int 타입의 b를 새로 생성해준다.
for(int i=0; i<a.length; i++){ // i를 a의 length(랭스)만큼 반복한다.
b += a[i]; //a를 i값 만큼 반복시킨값을 b와 더한다.
} System.out.println("총합 : " + b); //결과를 출력한다.
// 혹은 다른 방식의 식도 있다.
int a1 = ac( new int[] {2, 8, 5}); //a1은ac이며 ac의 값은 2, 8, 5가 있다.
System.out.println("총합 : " +a1);
System.out.println();
}
public static int ac(int[] d){ //ac의 메소드를 만든다. 이때 d가 해당 ac 메소드 안의 이름으로 대체 할수있다.
int q = 0; //q의값은0이며
for(int i=0; i<d.length; i++){ //i를 d의 길이 만큼 반복한다.
q += d[i]; //반복된d와q를더한다
}
return q; //q를 리턴시킨다
}
}
실행 결과 :
총합 : 17
총합 : 15
아래 코드는 Spring의 클래스를 사용하여 식을 만든 예시 입니다.
package a;
public class newtype {
public static void main(String[] args) {
String a = “헤”; // a의 배열에 “헤” 가들어가고
String a1 = “헤”; //a1의 배열에도 “헤” 가들어간다.
if(a == a1) { //a의 배열과 a1의 배열이 같은지 비교 한다. 같다면 if안의 내용을 실행시켜라
System.out.println(“같다”);
} else { // 만일 다를 경우 else if 안의 내용을 실행시켜라.
System.out.println(“다르다”);
}
String b = new String(“헤으”); // 위의 내용처럼 b 와 b1배열이 같은지 확인해본다
String b1 = new String(“헤으”); //
if(b == b1) { //b의 배열과 b1의 배열이 같은지 비교 한다. 같다면 if안의 내용을 실행시켜라
System.out.println(“같다”);
} else { // 만일 다를 경우 else if 안의 내용을 실행시켜라.
System.out.println(“다르다”);
}
if(b.equals(b1)){ // b와 b1의 문자열이 같은지 확인해 보자면 이렇게 equals을 사용해서 확인한다.
System.out.println(“문자열의 내용은 같다”);
}
}
}
실행 결과 :
같다
다르다
문자열의 내용은 같다
반응형