티스토리 뷰
변수란?
- 변수는 데이터를 저장하고 관리하기 위한 컨테이너와 같은 역할
- 프로그램이 실행되는 동안 특정한 값을 저장하고 조작할 수 있게 해주는데, 이 과정에서 값들의 자료형들을 같이 선언해주는 것
변수의 종류
자바에서의 변수는 지역 변수, 인스턴스 변수, 클래스 변수로 이루어져 있다
1️⃣지역 변수(Local Variables)
- 지역 변수는 메서드의 내부에 선언되고 사용되어짐
- 메서드가 종료되면 메모리에서 사라진다
- 반드시 초기화 후 사용해야 한다
public void method() {
int x = 5; // 지역 변수
System.out.println(x);
}
2️⃣인스턴스 변수(Instance Variables)
- 클래스의 객체마다 독립적으로 존재하는 변수
- 객체가 생성될 때마다 초기화되고, 객체가 사라지면 메모리에서 해제
class Person {
String name; // 인스턴스 변수
}
3️⃣클래스 변수(Static Variables)
- static키워드를 사용해 선언
- 전역변수와 유사하게 동작
- 클래스 로드 시 생성, 모든 객체가 공유
class Person {
static int population; // 클래스 변수
}
전역 변수와의 차이점
- 전역변수는 프로그램 전체에서 접근 가능한 변수
자바에서 전역적인 접근 구현법
1️⃣ static키워드 활용
class Settings {
public static String appName = "MyApp";
}
public class Main {
public static void main(String[] args) {
System.out.println(Settings.appName); // 출력: MyApp
}
}
2️⃣ 싱글톤 패턴 활용
- 싱글톤(Singleton)은 하나의 객체를 프로그램 전체에서 공유할 수 있는 패턴
class GlobalSettings {
private static GlobalSettings instance;
public String appName;
private GlobalSettings() {
appName = "MyApp";
}
public static GlobalSettings getInstance() {
if (instance == null) {
instance = new GlobalSettings();
}
return instance;
}
}
public class Main {
public static void main(String[] args) {
GlobalSettings settings = GlobalSettings.getInstance();
System.out.println(settings.appName); // 출력: MyApp
}
}
자바에서 클래스 변수를 사용하는 이유
- 자바는 객체 지향 언어로, 전역 변수 사용을 지양하고 캡슐화를 선호하기 때문이다
자료형
- 자료형은 변수를 선언할 때 같이 선언하게 되는 변수의 타입을 말한다
- 자바의 자료형은 기본형과 참조형으로 구성되어진다
기본 자료형
- 자바의 간단한 데이터 타입
- 값을 직접 저장
- 메모리가 스택(Stack)영역에 저장됨
int a = 5;
double pi = 3.14;
boolean isTrue = true;
참조 자료형
- 데이터가 저장된 메모리 주소를 저장
- 실제 데이터는 힙(Heap) 영역에 저장되며, 참조 변수는 스택(Stack) 영역에 주소를 저장합니다.
class Main {
public static void main(String[] args) {
// 참조 자료형: 클래스
String str = "Hello, World!";
System.out.println("문자열: " + str);
// 참조 자료형: 배열
int[] numbers = {1, 2, 3, 4};
System.out.println("배열 첫 번째 값: " + numbers[0]);
// 참조 자료형: 객체
Person person = new Person("Alice", 25);
System.out.println("사람 이름: " + person.name + ", 나이: " + person.age);
}
}
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
참조형 변수 사용시 주의점
1️⃣ null 값 가능성
- 참조형 변수는 객체를 가리키지 않을 수 있고, 이 경우 null 값이 저장된다
- null 값을 사용하려고 하면 NullPointerException이 발생할 수 있다
String name = null;
System.out.println(name.length()); // 오류 발생: NullPointerException
- 오류를 방지하기 위해서는 아래와 같은 방식으로 확인후 접근해야 함
if( name != null )
2️⃣ 객체 비교
- == 연산자를 사용하면 주소값을 비교하므로, 내용 비교를 위해 equals( ) 메소드를 사용해야 한다
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2); // false (주소 비교)
System.out.println(str1.equals(str2)); // true (값 비교)
'Language > Java' 카테고리의 다른 글
[JAVA] 인터페이스와 추상 클래스 (0) | 2025.01.07 |
---|---|
[JAVA] 클래스와 객체 (0) | 2025.01.06 |
[JAVA] 문자열 처리 (1) | 2025.01.04 |
[JAVA] 배열과 다차원 배열 (1) | 2025.01.04 |
[JAVA] 연산자와 제어문 (0) | 2025.01.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 데이터베이스
- 프리코스
- restful api
- Spring Boot
- HTTP
- CPU 스케줄링
- 그리디 알고리즘
- 탐색 알고리즘
- CS
- TRIE
- 동적 프로그래밍
- 백트래킹
- 운영체제
- i/o모델
- MSA
- 우테코
- 우선순위 큐
- 자료구조
- 스프링
- db
- 해시 테이블
- Java
- Spring
- devops
- k8
- 우아한 테크코스
- 알고리즘
- B+Tree
- 분할 정복
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함