자바 기초 개념
소스코드 → 사람이 작성한 코드
컴파일 → 각 기기의 JDK가 JVM(실행환경)에서 해당 소스코드를 해석할 수 있게 기계어로 변환해주는 과정
JDK → 자바로 프로그램을 개발할 수 있는 실행 환경(JVM) 과 개발도구 (컴파일러) 등을 제공
API
Application Programming Interface → API의 약자 자바에서는 라이브러리의 개념과 유사하게 생각하면 된다.
자바의 각종 데이터 타입
기본 타입
bool, ★char, byte, short, int, long, float, double
참조 타입
String(참조형이지만 기본형처럼 사용), 배열(array[]), 열거(enum), 클래스(class), 인터페이스(interface)
자세한 설명
자바에서의 참조형 데이터 타입의 가장 큰 특징은 변수가 실제 데이터를 직접 포함하지 않고, 데이터가 저장된 메모리 위치를 가리키는 주소를 가진다는 것입니다. 이러한 참조형 데이터 타입은 객체(Object)를 다룰 때 주로 사용되며, 클래스를 기반으로 생성된 인스턴스를 가리키는 데에 활용됩니다.
참조형 데이터 타입의 특징은 다음과 같습니다:
- 메모리 관리: 참조형 변수는 실제 데이터가 저장된 메모리 위치를 가리키므로, 데이터의 크기에 상관없이 항상 고정된 크기를 가집니다. 이로 인해 메모리 관리가 편리해지며, 데이터의 생성 및 소멸을 자동으로 처리하는 가비지 컬렉션(Garbage Collection) 기능을 제공할 수 있습니다.
- 동적 객체 생성: 참조형 데이터 타입을 사용하면 객체를 동적으로 생성할 수 있습니다. 이는 런타임 중에 객체의 인스턴스를 생성하고 해제할 수 있다는 의미입니다. 이는 프로그램의 유연성을 높이는 데 도움이 됩니다.
- 객체 지향 프로그래밍: 자바는 객체 지향 프로그래밍 언어로서, 클래스를 정의하고 그에 기반한 객체를 생성하여 프로그래밍을 수행합니다. 이때 참조형 데이터 타입을 사용하여 클래스의 인스턴스를 다루게 됩니다.
- Null 값 처리: 참조형 변수는 주소를 가리키기 때문에, 값이 할당되지 않았을 경우 null 값을 가질 수 있습니다. 이는 객체가 아직 생성되지 않았거나 유효하지 않은 객체를 나타내는 데 사용됩니다.
- 배열과 컬렉션: 배열 또는 컬렉션과 같은 다수의 데이터를 저장하거나 관리할 때 참조형 데이터 타입이 주로 사용됩니다. 이를 통해 유연한 데이터 구조를 만들 수 있습니다.
예를 들어, 다음과 같이 객체를 생성하고 사용하는 과정에서 참조형 데이터 타입이 사용됩니다:
javaCopy code // 클래스 정의 class Person { String name; int age; } public class Main { public static void main(String[] args) { // Person 클래스의 인스턴스 생성 Person person = new Person(); person.name = "John"; person.age = 30; // person 변수는 생성된 객체를 가리키는 참조형 변수입니다. System.out.println(person.name + " is " + person.age + " years old."); } }
기본형과 참조형의 차이점
기본 타입
변수를 선언하면 Stack 영역에 해당 변수에 대한 할당공간이 생기고 그 공간에 직접 값을 입력해줄 수 있다.

참조형 타입
참조형 타입을 선언할때 사용되는 new 라는 명령어는 Heap 영역에 내가 선언한 객체를 생성한다.
그리고 선언된 변수는 객체를 가지고 있는 주소의 값을 Stack 영역에서 저장한다.

참조형 타입의 주의할 점으론 == 연산자로 비교할 시 false가 출력된다는 점이다.
public class Main { public static void main(String[] args) { String str1 = new String("Hello"); String str2 = new String("Hello"); if (str1 == str2) { System.out.println("str1 and str2 are the same."); } else { System.out.println("str1 and str2 are different."); } } } // result // str1 and str2 are different.
각 객체가 가지고 있는 값은 같지만 해당 객체를 가리키고 있는 주소값이 달라 false가 출력된다.
이를 해결하기 위해 자바에서는 참조 값이 아닌 객체의 값을 비교하는 equals 메소드를 사용한다.
if (str1.equals(str2)) { System.out.println("str1 and str2 are equal in content."); } else { System.out.println("str1 and str2 are different in content."); } // result // str1 and str2 are equal in content.
'코딩딩 > Java' 카테고리의 다른 글
객체 지향 프로그래밍 (0) | 2023.08.14 |
---|---|
자바의 각종 데이터 타입 (0) | 2023.08.10 |
Set 컬렉션 (0) | 2023.07.15 |
List 컬렉션 (0) | 2023.07.15 |
Getter and Setter 메소드 (0) | 2023.07.14 |