※ 이 글에서 다룬 기반기술, 프론트엔드, 백엔드, 데브옵스 등 풀스택 개발 지식은 모두 한화시스템 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 |