본문 바로가기
한화시스템 Beyond SW Camp/백엔드

[Java] 변수 선언, 배열, 클래스와 객체, 패키지와 접근제어자

by taeh00n 2025. 1. 6.

 ※ 이 글에서 다룬 기반기술, 프론트엔드, 백엔드, 데브옵스 등 풀스택 개발 지식은 모두 한화시스템 Beyond SW Camp 12기에서 배운 내용을 복습한 것입니다.

 

 

 

컴파일 언어 : 코드를 컴파일러라는 프로그램을 통해 기계어로 변환한 후 이를 실행한다.

 

 

인터프리터 언어 : 코드를 인터프리터라는 프로그램이 한 줄씩 읽고, 실시간으로 실행한다.

실행 시 별도의 컴파일 과정이 필요하지 않다.

 

=> 자바 프로그램은 먼저 컴파일러를 통해 바이트코드라는 중간 코드로 변환된다. (.java -> .class)

이후 자바 가상 머신(JVM)이라는 인터프리터가 이 바이트코드를 실행 (.class -> 기계어)

 

변수 선언

변수를 사용하기 위해선 변수 선언을 해야 한다.

변수 선언은 변수에 어떤 타입의 데이터를 저장할 것인지, 이름은 무엇인지를 결정

// 변수타입 변수이름;
// int	숫자 하나
// int []	숫자 여러 개
// String	문자열
// String [] 	문자열 여러 개


int score;	// 변수 선언
score = 90;	// 값 저장

int score = 90;

값을 저장할 때는 대입 연산자(=)을 사용

변수에 값이 최초로 저장될 때 변수가 생성되는데 이것을 변수 초기화라고 한다.

 


배열 

같은 타입의 값을 여러 개 저장할 수 있는 것

// 배열 만드는 법 01
int [] arr01 = {1,2,3,4,5};
System.out.println(arr01[0]);		// 1 출력
System.out.println(arr01.length);   // 5 출력(배열의 크기)
for (int i = 0; i < arr01.length; i++) {
	System.out.print(arr01[i] + " ");		//1 2 3 4 5 출력
}

// 배열 만드는 법 02
int [] arr02 = new int[]{1,2,3,4,5};
System.out.println(arr02[4]);		// 5출력

 


클래스 선언

클래스 : 객체를 만들기 위한 설계도, 하나의 클래스로 여러 개의 객체를 생성할 수 있다.

// 클래스 만드는 법
class 클래스이름{
	변수타입 변수이름;
	반환타입 메소드이름(매개변수타입 매개변수이름) {
		return 값;
	}
}

// 예시
class Student {
    // 특징 또는 상태 = 변수로
    String name;
    int age;

    // 행동 또는 기능 = 메소드로
    void setName(String newName) {
        this.name = newName;
    }
    
     int getAge(){
     	return age;
    }
}

 


객체

객체 : 현실 세상에 있는 무언가를 컴퓨터 세상으로 옮긴 것

public class Main {
    public static void main(String[] args) {
        //변수타입 변수이름;
        Student student;
        //객체를 생성해서 변수에 저장하는 문법
        student = new Student();
        
        student.name = "cth";
        student.age = 26;
        
        student.setName("ccc");
    }
}

위에서 만든 클래스로 name과 age 필드에 값을 할당하고 student 클래스의 setName 메서드를 통해 name필드를 cth에서 ccc로 바꿔보았다.


class Student {
    String name;
    int age;
    
    // 컴퓨터
    Computer computer;
}



public class Computer {
    int cpu;   // CPU 사양
    int ram;     // 메모리 사양
    int hdd;        // HDD 사양
}


// 접근 방식
student.computer.cpu = 8;
student.computer.ram = 16;
student.computer.hdd = 256;

위와 같이 객체안의 다른 객체를 포함시킬 수도 있다.


패키지와 접근제어자

  • public : 모든 패키지, 모든 클래스
  • protected : 같은 패키지의 모든 클래스, 다른 패키지의 자식 클래스
  • default : 제어자를 사용하지 않았을 때, 같은 패키지의 모든 클래스
  • private : 같은 클래스 안에서만 접근 가능
public class User {
    //변수 앞에 접근 제어자
    private String name;
    private String email;
    private String password;

    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        if(!email.contains("@")){
            System.out.println("이메일 형식이 아닙니다.");
            return;
        }
        if(!email.contains(".")){
            System.out.println("이메일 형식이 아닙니다.");
            return;
        }
        this.email = email;
    }
    // 메소드 앞에 접근제어자
    public void setPassword(String newPassword) {
        this.password = newPassword;
    }
}

 

public class Main {
    public static void main(String[] args) {
        User user01;
        user01 = new User();

        //User 클래스의 email 변수가 private이라서 직접 접근X
        // user01.email = "asdfasdfasa";

        user01.setEmail("test@test.com");

        System.out.println(user01.getEmail());
    }
}

위와 같이 클래스의 필드는 private으로 외부에서 직접 접근 못하게 보호해줘야하고 같은 클래스 내에 선언되어있는 메서드를 통해 변수에 접근을 해야한다.

'한화시스템 Beyond SW Camp > 백엔드' 카테고리의 다른 글

[Java] MVC 패턴, Layered 패턴  (0) 2025.01.15
[IntelliJ] Tomcat Servlet, mariaDB 연동  (0) 2025.01.08
[Java] 스레드  (1) 2025.01.08
[Java] 스트림  (0) 2025.01.07
[Java] 생성자, 상속, 예외처리  (1) 2025.01.06