# 5. Java 4일(복습용) (230818~230819)

brand_mins·2023년 8월 18일

Java

목록 보기
5/47
  • 해당 공부내용은 《이것이 자바다》 교재에 대한 내용입니다.
  • 공부범위: 클래스, 참조형 타입

1. 데이터 타입 분류

(1) 기본타입

  • 기본타입으로 선언된 변수는 값 자체를 저장함.
    1) 정수타입(byte, short, int, long)
    2) 실수타입(float, double)
    3) 논리타입(boolean)
    4) 문자타입(char)

(2) 참조타입

  • 객체에 생성된 메모리 번지수를 저장함.
  • int와 double로 선언된 변수는 age와 price 값 대입.
  • 참조타입인 String클래스로 선언된 변수 name과 hobby에 문자열 대입.
[기본타입변수]
int age = 25;
double price = 100.5;
[참조타입변수]
String name = "신용권";
String hobby = "독서";
  • 변수들은 모두 스택영역이라는 메모리 영역에 들어감.
  • 즉, 기본타입 변수인 age와 price는 직접 값을 저장하고 있지만 참조 타입 변수인 name과 hobby는 힙 메모리 영역의 String객체 번지를 저장하고 String객체 참조.
  • 쉽게 말해서 name이라는 데이터 번지수를 스택영역 메모리에 저장하고 실제 들어간 데이터는 힙 영역에 들어간다.

2. 메모리 사용 영역

  • 자바에서 사용하는 메모리영역.
  • 자바 명령어로 JVM을 구동하면 운영체제에서 할당받은 메모리영역을 구분한다.

(1) 메소드 영역

  • 바이트코드 파일을 읽은 내용이 저장되는 영역
  • 클래스별로 상수, 정적 필드, 메소드 코드, 생성자 코드 등 저장.

(2) 힙 영역

  • 객체가 생성되는 영역
  • 참조타입 변수에 실제로 들어간 데이터가 저장된다.
  • 객체의 번지는 메소드 영역과 스택 영역의 상수와 변수에서 참조.

(3) 스택 영역

  • 메소드를 호출할때마다 생성되는 프레임이 저장되는 영역.
  • 메소드 호출이 종료 후 스택영역에 쌓여 있는 데이터들이 후입선출식으로 제거됨.
  • 기본타입 변수의 할당된 값이 스택 영역 메모리에 저장된다.

3. 참조타입 변수의 ==, != 연산

  • ==, != 연산은 변수의 값이 같은지 아닌지 조사
  • 번지가 같다면 동일한 객체를 참조. 다르다면 다른 객체 참조
refVar1 == refVar2 // false
refVar1 != refVar2 // true
refVar2 == refVar3 // true
refVar2 != refVar3 // false
  • 배열 변수를 참조 타입 변수가 되는 예제.
package com.human.ex;
public class Practice {
	public static void main(String[] args) {
		int[] arr1;
		int[] arr2;
		int[] arr3;		
		arr1 = new int[] {1,2,3};
		arr2 = new int[] {1,2,3};
		arr3 = arr2;		
		System.out.println(arr1 == arr2);
		System.out.println(arr2 == arr3);
		}
}
profile
IT 개발자가 되기 위한 기록

0개의 댓글