[JAVA] JAVA 기초 | 클래스, 함수, 전역변수 vs 인스턴스 변수

2025. 8. 1. 16:29·✏️공부/💡JAVA
728x90
반응형
더보기

배운 내용을 복습하며 적은 것입니다.

노션에서 정리하였으므로 노션이 더 보기 편할 수 있습니다.

https://www.notion.so/25-08-01-TIL-24574fb5c2e8801da519e5cb4a67b98b?source=copy_link

 

 

[Day] 08.01
[Chapter] ~35강

 


 

🔽 클래스 사용

여러 데이터를 묶어, Person 객체 생성
public class Main {
    public static void main(String[] args) {
        Person hong = new Person();

        hong.age = 20;
        hong.name = "홍길동";
        hong.home = "서울";

        Person lee = new Person();

        lee.age = 22;
        lee.name = "이순신";
        lee.home = "대전";

        System.out.println(hong.age);
        System.out.println(hong.name);
        System.out.println(hong.home);

        System.out.println(lee.age);
        System.out.println(lee.name);
        System.out.println(lee.home);

    }
}

class Person {
    int age;
    String name;
    String home;
}

 

 

🔽 함수 사용

변수가 값을 저장하고 재사용한다면 함수는 코드를 저장하고 재사용한다.
  1. 메인 함수 (메서드)
  2. 함수는 클래스 안에 있어야 ⭕️
  3. 함수는 함수 안에 만들 수 ❌
  4. 함수 사용 ➡️ 코드 중복 없앨 수 ⭕️

  • 매개변수 이용해 함수에 원하는 값 전달
  • 리턴을 이용해 함수는 값을 외부로 전달 (즉, 함수가 리턴값으로 변신)
    • 리턴을 사용하는 이유 : 함수의 결과물을 2차 작업하기 위해
public class Main {

    public static void main(String[] args) {

        double rst1 = circleArea(10);
        double rst2 = circleArea(20);

        System.out.println(rst1);
        System.out.println(rst2);

        // 반지름 10인 원의 넓이의 절반
        System.out.println(rst1 / 2); // 157.0
        // 반지름 20인 원의 넓이의 2배
        System.out.println(rst2 * 2); // 1256.0

        // 함수의 결과물을 2차 작업하기 위해 함수는 자신의 결과값을 건네줘야(리턴해야) 한다.
    }

    public static double circleArea(int radius) {
        return radius * radius * 3.14;
    }
}

 

 

 

🔽  지역변수

함수에서 만드는 모든 변수 (함수가 끝나면 사라짐)

 

✅ 인스턴스 변수 VS 지역 변수

1️⃣ 인스턴스 변수 (Instance Variable)

  • 클래스 안, 메서드 밖에서 선언
  • 객체(인스턴스)에 소속됨
  • 객체가 존재하는 동안 유지됨
  • 접근 시 this.변수명으로 참조 가능
public class Person {
    // 인스턴스 변수
    String name;  
    
    // 생성자
    public Person(String name) {
        this.name = name;
    }
    
    public void introduce() {
        System.out.println("안녕하세요, 제 이름은 " + name + "입니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person p1 = new Person("예지");
        Person p2 = new Person("민수");
        
        p1.introduce(); // 안녕하세요, 제 이름은 예지입니다.
        p2.introduce(); // 안녕하세요, 제 이름은 민수입니다.
    }
}

 

 

2️⃣ 지역 변수 (Local Variable)

  • 메서드(또는 블록) 안에서 선언
  • 메서드 실행 시 생성 → 실행 종료 시 소멸
  • 반드시 초기화해야 사용 가능 (Java는 지역 변수 기본값 제공 안 함)
public class Calculator {
    public int add(int x, int y) {
        int result = x + y;  // 지역 변수
        return result;
    }
    
    public void showExample() {
        int temp = 100;  // 지역 변수
        System.out.println("temp 값은 " + temp);
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        System.out.println(calc.add(3, 4)); // 7
        
        // System.out.println(result); // 컴파일 에러 (지역 변수 접근 불가)
    }
}

 

 

📌 차이점 정리표

구분 인스턴스 변수 지역 변수
선언 위치 클래스 내부, 메서드 외부 메서드 또는 블록 내부
소속 객체(인스턴스)에 소속됨 메서드에 소속됨
생명 주기 객체가 생성 → GC로 제거될 때까지 유지 메서드 실행 시 생성 → 종료 시 소멸
기본값 자동으로 기본값 할당됨 (int=0 등) 반드시 초기화 필요
접근 범위 클래스 전체(인스턴스 기준)에서 접근 가능 선언된 블록 안에서만 접근 가능

 

 

 

 

728x90
반응형

'✏️공부 > 💡JAVA' 카테고리의 다른 글

[JAVA] JAVA 기초 | static, 상속 (extends) | 예제 문제 ⭕️  (4) 2025.08.05
[JAVA] JAVA 기초 | 배열, 리스트(ArrayList<>) , 맵(Map<>), 제네릭  (3) 2025.08.04
[JAVA] JAVA 기초 | 원시타입 vs 참조타입, 반복문, 조건문 등  (4) 2025.08.01
[JAVA] 백트래킹(Backtracking) | 개념, 동작 흐름, 예시 ⭕️  (3) 2025.07.10
[JAVA] Set | 개념, 활용, 예제 ⭕️  (0) 2025.06.18
'✏️공부/💡JAVA' 카테고리의 다른 글
  • [JAVA] JAVA 기초 | static, 상속 (extends) | 예제 문제 ⭕️
  • [JAVA] JAVA 기초 | 배열, 리스트(ArrayList<>) , 맵(Map<>), 제네릭
  • [JAVA] JAVA 기초 | 원시타입 vs 참조타입, 반복문, 조건문 등
  • [JAVA] 백트래킹(Backtracking) | 개념, 동작 흐름, 예시 ⭕️
망꼬누나
망꼬누나
공부한 내용을 정리하는 공간입니다.
  • 망꼬누나
    망꼬누나의 개발 공부
    망꼬누나
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • ℹ️ 정보 및 실습 (19)
        • ☑️ Git & GitHub (8)
        • ☑️ 프로젝트 (6)
        • ☑️ 회고 및 후기 (5)
      • 🛠 CS (1)
      • 💻코딩 (88)
        • 💡Baekjoon (17)
        • 💡Programmers (71)
      • ✏️공부 (48)
        • 💡OS (1)
        • 💡Network (6)
        • 💡SpringBoot (9)
        • 💡JAVA (21)
        • 💡SQL (1)
        • 💡DB (2)
        • ☁️ Cloud (4)
        • 💡알고리즘 (4)
      • 📌 자격증 (6)
        • 📝정보처리기사 (3)
        • 📝SQLD (3)
  • 블로그 메뉴

    • 홈
    • github
  • 나의 GitHub Contribution 그래프
    Loading data ...
  • 인기 글

  • 태그

    자료구조
    자바
    네트워크
    Stream
    AWS
    동시성제어
    트랜잭션
    github
    데브코스
    Set
    알고리즘
    S3
    Java
    GIT
    프로그래머스
    프로그래머스 #JAVA
    baekjoon
    map
    코딩테스트
    백엔드
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.5
망꼬누나
[JAVA] JAVA 기초 | 클래스, 함수, 전역변수 vs 인스턴스 변수
상단으로

티스토리툴바