자바 강국이라고 불리는 한국에서 개발자로서 취업을 하고자 한다면,,
자바를 빼놓을 수 없죠!
드디어 자바를 배우게 되었습니다.
기초적인 문법을 배웠고, 아직 기초적인 문법을 진행 중이지만 수업 포인트 위주로 정리하겠습니다.
그럼 start!
0.클래스와 객체, 인스턴스
- 클래스:
클래스는 사용자가 정의하는 자료형이자, 객체를 만들기 위한 하나의 "틀"이라고 저는 기억에 저장이 되었습니다.
- 객체:
클래스로 부터 생성된 무언가(?)
- 인스턴스:
객체가 메모리 할당이 되어 저장된 것(new 사용)
1. 메소드의 접근 제어자(Access Modifier)
자바에서는 클래스를 저장하는 묶음을 패키지(package)라고 하는데요,
이 패키지와 클래스의 저장 구조를 통해 외부에서 클래스의 접근을 보호할 수 있습니다.

2. Static
정적변수는 클래스가 선되는 순간에 Method Area라는 어떤 영역에 메모리 할당을 받습니다.
하여 정적변수가 불필요한 상황에서도 프로그램이 종료가 될 때까지 가비지 컬렉터로도 회수가 되지 않습니다.
(non-static 변수는 메모리 중 heap에 할당이 됩니다.)
그럼에도, static을 사용하는 이유는, 중복되는 변수 및 메소드의 선언을 줄일 수 있어
잘 사용한다면 가독성도 좋아지고, 전체적인 메모리 효율성도 증대되기 때문입니다.
public class Constants {
public static final double PI = 3.14159;
public static final int MAX_VALUE = 100;
public static void main(String[] args) {
System.out.println("The value of PI: " + Constants.PI);
System.out.println("Maximum allowed value: " + Constants.MAX_VALUE);
}
}
static이라는 변수 두개를 만들면, 이 정적변수는 객체가 아닌 클래스에 종속되기 때문에
[ 클래스명 + dot 연산자 + static 변수명 ] 으로 바로 접근이 가능하며,
해당 값이 바뀐다면 바뀐 값을 전체적으로 공유할 수 있습니다.
3. final
static은 전역적으로 공용하는 변수 느낌이라면, 이번엔 변수의 값 변경을 금지하는 필드가 있습니다.
final은 값 변경을 막고 오로지 읽기만 허용합니다.
그래서 static + final 을 같이 선언하게 된다면,
메모리 할당을 하여 공용적으로 쓸 수 있으나 값을 변경할 순 없습니다.
최초의 한 번 초기화된 값 이후로 값을 바꿀 수 없죠!
4. 메소드 오버라이딩와 메소드 오버로딩
이 개념은 저도,,,, 둘의 개념은 알겠는데, 이름이 너무 헷갈렸던 개념입니다.
*메소드 오버라이딩
: 상위 클래스에서 이미 정의된 메소드를 하위 클래스에서 동일한 시그니처로 다시 정의하는 것
class Animal {
void makeSound() {
System.out.println("동물 소리");
}
}
class Dog extends Animal {
// 메소드 오버라이딩
@Override
void makeSound() {
System.out.println("왈왈!");
}
}
class Cat extends Animal {
// 메소드 오버라이딩
@Override
void makeSound() {
System.out.println("야옹~");
}
}
public class AnimalTest {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
dog.makeSound(); // 왈왈! 출력
cat.makeSound(); // 야옹~ 출력
}
}
* 메소드 오버로딩
동일한 메소드 이름을 가진 여러 메소드를 정의하는 것
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public String concatenate(String str1, String str2) {
return str1 + str2;
}
public static void main(String[] args) {
Calculator calculator = new Calculator();
int sumInt = calculator.add(3, 4);
System.out.println("Sum of integers: " + sumInt);
double sumDouble = calculator.add(2.5, 3.7);
System.out.println("Sum of doubles: " + sumDouble);
String result = calculator.concatenate("Hello, ", "World!");
System.out.println("Concatenated String: " + result);
}
}'개발 공부한 것들 > SeSSAC 웹 풀스텍 과정 회고록' 카테고리의 다른 글
| [코딩온] 웹 풀스택 영등포 5기 과정_next.js(1) (1) | 2023.12.17 |
|---|---|
| [SeSSAC] 웹 풀스택 영등포 5기 과정_SpringBoot_dto,vo,axios, API (2) | 2023.12.07 |
| [SeSSAC] 웹 풀스택 영등포 5기 과정_socket (1) | 2023.11.17 |
| SeSSAC 웹 풀스텍 과정 회고록[SeSSAC] 웹 풀스택 영등포 5기 과정_2차 프로젝트 회고록 (0) | 2023.11.14 |
| [SeSSAC] 웹 풀스택 영등포 5기 과정_REACT(7)_Redux (0) | 2023.10.22 |