[JAVA] 변수와 제어자

2025. 8. 2. 12:35·Java
728x90

📌 변수의 기본형 & 참조형

✅ 기본형 (Primitive Type)

  • 논리형, 문자형, 정수형, 실수형 총 8가지:
    boolean, char, byte, short, int, long, float, double
  • 값 자체가 스택(Stack) 영역에 저장됨

✅ 참조형 (Reference Type)

  • 실제 값은 힙(Heap) 영역에 저장되고, 참조값(주소)은 스택에 저장
  • 종류
    • 클래스 타입: String, Integer, ArrayList, HashMap 등
    • 배열 타입: int[], String[], User[]
    • 인터페이스 타입: List, Map, Runnable
    • 열거형 타입: enum

📌 형변환

✅ 자동(묵시적) 형변환

  • 낮은 자료형 → 높은 자료형 (데이터 손실 없음)
  • 예: int → long, float ← long
    • float가 4바이트지만 지수/가수 구조로 long보다 넓은 범위 표현 가능
    • 단, float는 정밀도가 낮아 큰 수 표현엔 double 추천

✅ 강제(명시적) 형변환

  • (타입) 키워드를 사용해 강제 변환
  • 예: (int)3.14, (double)10
  • 데이터 손실 가능성 있음

📌 배열

  • Java 배열은 고정 길이, 선언 시 크기 지정 필요
  • 직접 출력 시 주소값 출력됨
  • 배열 유틸
    • Arrays.toString(arr) : 배열 값 출력
    • Arrays.copyOf(arr, n) : 복사 (얕은 복사)
    • Arrays.sort(arr) : 정렬
    • Arrays.sort(arr, Collections.reverseOrder()) : 역순 정렬
  • 객체 배열은 참조 복사되므로, 수정 시 내용 공유됨
  • Comparable<T> 구현 → compareTo() 오버라이딩으로 정렬 가능

📌 객체지향 클래스 문법 (OOP)

public class Circle { 
	public int radius; 
    public String name; 
    public double getArea() {
    	return 3.14 * radius * radius; 
    }
}

✅ 객체 vs 인스턴스

Animal cat = new Animal();
  • 클래스: Animal
  • 객체: cat
  • 인스턴스: cat은 Animal의 인스턴스

✅ 필드(멤버 변수)

구분저장 영역특징
클래스 변수 (static) 메소드 영역 모든 인스턴스에서 공유
인스턴스 변수 힙 영역 인스턴스마다 별도 존재
지역 변수 스택 영역 메서드 블록 내에서만 존재
 

✅ 메소드

구분설명
클래스 메서드 (static) 인스턴스 생성 없이 호출 가능, 인스턴스 변수 접근 불가
인스턴스 메서드 인스턴스 생성 후 호출
생성자 (constructor) 객체 생성 시 한 번 호출, 초기화 용도
 

✅ this 키워드

  • 해당 클래스 자신의 인스턴스를 가리킴
  • 인스턴스 메서드나 생성자 내에서 사용됨

📌 클래스 상속 (extends)

  • Java는 단일 상속만 지원
    • 다중 상속 시 동일 메서드 중복 문제 발생 가능성 때문
  • 생성자 호출 순서: 부모 → 자식
  • super 키워드
    • super.name: 부모 클래스의 변수
    • super() : 부모 클래스 생성자 호출

📌 제어자 (modifier)

✅ 접근 제어자

제어자접근 가능 범위
public 전체 (어디서든 접근 가능)
protected 같은 패키지 + 다른 패키지의 자식 클래스
(default) 같은 패키지 내부
private 같은 클래스 내부
 

✅ 기타 제어자

키워드설명
static 클래스 레벨, 공유 변수/메서드
final 상수, 메서드/클래스 오버라이딩 금지
abstract 추상 클래스/메서드 정의용
 
728x90
저작자표시 (새창열림)

'Java' 카테고리의 다른 글

[JAVA] String vs StringBuffer & equals() vs hashCode()  (1) 2025.08.02
[JAVA] interface vs abstract class  (0) 2025.08.02
[JAVA] Generics Type  (0) 2025.08.01
Java  (0) 2021.11.15
'Java' 카테고리의 다른 글
  • [JAVA] String vs StringBuffer & equals() vs hashCode()
  • [JAVA] interface vs abstract class
  • [JAVA] Generics Type
  • Java
gudwnsgur
gudwnsgur
IT
    250x250
  • gudwnsgur
    gudwnsgur
    gudwnsgur
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 개발이야기
      • Spring
        • 이슈 해결
      • JPA
        • spring data jpa
      • Java
        • Java의 정석
      • Kotlin
        • Kotlin In Action
        • Kotlin 정리
      • 대규모 시스템 설계 기초
      • 주니어 백엔드 개발자가 반드시 알아야 할 실무 지..
      • JavaScript
        • JS ES6+
      • 면접
        • CS
        • BE
      • SQLD
      • BE 개발
        • spring webflux
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    HTTP
    대규모 시스템 설계 기초
    cookie
    session
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gudwnsgur
[JAVA] 변수와 제어자
상단으로

티스토리툴바