본문 바로가기
공부기록/Java

4월 11일 (2) Java - 변수 용어, 저장 위치

by project100 2023. 4. 11.

변수 용어 정리

1. 지역변수 : 메소드 내부에 작성된 변수, 메소드 호출 시 생성되었다가 메소드 종료 시 제거된다. 

다시 호출되면 새롭게 다시 생성

 

2. 매개변수 : 메소드에서 파라미터를 받기 위한 지역 변수.

지역변수와 같음.

 

3. 참조변수 : 인스턴스의 주소를 저장하는 변수. 예) String, Class에 만들어진 변수

 

4. 멤버변수 : 클래스 내부, 메소드 외부에 작성하는 변수, 한 클래스의 모든 메소드에서 사용이 가능(전역)

 

객체 = 멤버변수 + 메소드

 

5. 인스턴스 (멤버)변수 :  멤버변수면서, static이 붙지 않는 변수. (인스턴스 생성 후부터 존재하는 변수) 

필드와 같은 말

6. 필드 : 인스턴스 변수를 지칭하는 다른 말

 

7. 스태틱 (멤버)변수 : 멤버변수이면, static이 붙는 변수(인스턴스를 생성하지 않아도 존재하는 변수)

8. 클래스 변수 : 스태틱 변수를 지칭하는 다른 말

 

9. 전역 변수 : 프로그램의 모든 영역에서 사용할 수 있는 변수(자바에서는 전역 개념이 없다.)

 

변수 저장 영역구분

Method 영역에 생성되는 변수(설계도) : static(class) 변수, 참조변수, 프로그램이 종료될 때까지 유지

Call Stack 영역에 생성되는 변수(메소드가 실행되는 공간) : 지역(매개) 변수, 참조변수, 메소드 호출 시 생성, 삭제

Heap 영역에 생성되는 변수 : 인스턴스 변수(필드), 참조변수, 인스턴스 생성 시 생성, 삭제

 

public class VariableKindClass {
// 멤버 변수 작성

    int instMember; // 인스턴스 멤버 변수, 필드
    static int statMember; //static 멤버 변수, 클래스 변수
    String strMember = "ABC"; // 인스턴스 멤버 참조 변수
    static String statStrMember = "XYZ"; // static 멤버 참조 변수

    public static void main(String[] args) {
        String str = "abcd"; // 지역 참조 변수
        // static은 지역변수에는 사용하지 않는다.
        // 메소드 내부에서는 사용하지 않는다.

        // 다른 클래스 사용 - 인스턴스 생성 사용
        // 많이 사용하면 좋지 않다. 가급적 인스턴스를 만들어서 사용하기!
        SomeClass.vf = 100.0F;

        //SomeClass.vi = 10; 사용불가
        // static이 없기 때문에 인스턴스를 만들어서 사용해야 한다.
        SomeClass sc = new SomeClass(); // 인스턴스 생성
        sc.vi = 10; // 생성된 인스턴스의 필드를 사용

    } // main end

    // 매개변수(지역변수)
    int method1(int a){
        int b = 10; //지역변수
        String str = "wxyz"; //지역 참조 변수 = 참조 변수
        return a + b;
    } // method1 end
} // class end
// 한 클래스 파일 내부에 다른 클래스를 작성할 수 있다.

class SomeClass {
    static float vf; // static 변수
    int vi;
}

 

다른 클래스를 사용한다. 

-> 그 클래스로 인스턴스를 생성하여 사용한다. 

class는 설계도이기 때문에 실질적으로 인스턴스를 만들어서 사용한다.

같은 인스턴스의 변수명이 있을 경우 클래스 명으로 구분한다.

 

한 파일에 여러 개의 class를 작성하는 경우 주의사항

주클래스(파일명과 이름이 같은 class)에만 public을 붙인다.

 

접근제어자 - 객체를 보호하기 위한 제어자

public - '제한 없는'이라는 의미

 

 

클래스의 종류 

1. 정보 저장용 클래스 : 정보(데이터)를 저장하는 용도의 인스턴스 생성용 클래스, 

2. 부품(기능) 클래스 : 단독으로 사용은 어렵지만 객체의 일부로 사용하는 인스턴스 생성용 클래스

3. 제어 클래스 : 정보와 부품을 사용하여 문제를 해결하기 위한 프로그램 골격 인스턴스 생성용 클래스

 

 

자바(객체 지향 프로그래밍)는 전체 프로그램을 위와 같은 여러 클래스로 분할하여 작성하는 언어

Why? 역할 분담을 통한 병렬 개발과 유지보수를 수월하게 하기 위해서

 

웹 프로그래밍에서 사용하는 디자인 패턴(설계유형)

MVC 패턴

Model - 데이터 처리를 위한 기능을 제공하는 부분

View - 화면 관련 처리 부분

Controller -  전체 프로그램 제어 부분

 

-> View, Controller, Service, Dto, Dao 패키지로 구분하여 Class를 분배하여 프로그래밍

 

패키지(Package)

클래스의 묶음 단위

프로그램에 필요한 클래스를 구분하여 작성 및 관리하는 단위

클래스를 분류하여 저장함

 

 

라이브러리는 패키지 단위로 구성되어 있음

예) import java.util.Scanner;

import : 패키지를 활용한다는 명령어, (패키지를 포함시킨다.)

java.util. : 클래스가 위치한 경로(폴더), '대분류폴더'. '소분류폴더'

                중간 패키지명(폴더명)은 소문자로 작성한다!

Scanner : 사용할 클래스

 

일반적으로 모든 클래스는 패키지에 포함되어 작성된다.

패키지를 작성하지 않을 경우 default 패키지에 포함된다.

 


readme.txt 

프로그램 설치 방법, 사용방법, 주의사항 등을 작성하는 곳

폴더에서 오른쪽 마우스 클릭 - new 파일 

Refactor - Rename을 사용하면 한 번에 변경이 가능하다.

dto - DB 테이블 하나당 하나 생성

 

정보클래스의 구성

필드, 필드에 저장하는 메소드, 필드 값을 가지고 오는 메소드

 

변수와 메소드를 묶는 것 : 캡슐화

private 사적인, 숨겨져 있음. 미공개, 저장 메소드를 통해서만 저장 가능

method와 설계도 class는 공개해야 하기 때문에 public을 사용 

 

package가 제일 윗쪽 - import 코드 분류기능, 라이브러리처럼 사용가능 - public class 순

 

지역변수의 경우 초기화 

Strung = null;

int = 0;

float = 0.0F;

boolean = false;