어제 공부를 하던 중, 아래와 같이 Java의 기초 중에 기초가 되는 부분에서 제대로 답변하지 못했다.
- 리터럴(literal) 이란 무엇인가?
- Java에서 클래스는 두 가지 근본적으로 다른 목적을 가지고 있다. 그 목적은 무엇인가?
분명히 이전에 공부할 때 봤던 내용들이고 아는 개념이라 생각했지만, 지나고 보니 모르는 개념인 것이다. 나름 Java에 대해 어느정도 자신이 있었는데, 너무 부끄러웠고, 또 너무 실망했다. 그래서 다시 한번 기본부터 시작해보려 한다.
지금 생각해보면 취업이나 다른 것들 때문에, 기본 개념을 이해하고 코드를 작성했다기 보다, 기능만을 익히고 사용하는데 급급했던 것 같다. 어제의 마음가짐과 동일하게, 이제는 기능이 아닌 조금 더 본질을 이해하고 내가 알고 있는 개념은 확실하게 정립하는데 집중할 것이다.
어제 들었던 말 중에 가장 인상 깊었던 말이 있다. 조급해 하지마라.
말 그대로이다. 백날 Spring이니, Kafka니 기술만 익혀봤자 본질을 모르면 성장할 수 없다. 단순히 어떤어떤 기술이 아닌, 프로그래밍 개념 자체를 성장시킨다는 생각으로 천천히 정진하겠다.
앞으로 TIL에서 학습한 내용들을 정리할 땐, 새로 학습한 내용들과 까먹어서 잘 기억이 나지 않았던 부분들을 위주로 기록해놓겠다.
학습한 내용
1. 클래스의 두 가지 의미
1) 객체를 설명하고 생성하는 것
2) 클래스에 포함된 변수와 서브루틴을 그룹화
Java에서 클래스는 두 가지 의미를 가지고 있다. 첫번째는 흔히 아는 개념이다. 객체를 만들어내기 위한 설계도, 혹은 틀이라고 말한다.
두번째는 사용하면서도 정확하게 설명하지 못한 부분이다. 이제는 확실하게 설명할 수 있다.
변수와 서브루틴을 그룹화 한다. 즉, 객체를 생성하지 않더라도 클래스 자체가 관련된 변수와 서브루틴(메서드)를 하나의 단위로 묶어 관리할 수 있다는 뜻이다.
대표적인 예시로 Math 클래스가 있다.
public class Main {
public static void main(String[] args) {
double result = Math.sqrt(25); // Math 클래스의 sqrt 메서드 사용
System.out.println("제곱근: " + result);
}
}
👉 Math 클래스는 객체를 만들 필요 없이 Math.sqrt() 같은 메서드를 사용할 수 있다.
👉 이렇게 특정 기능을 수행하는 메서드들을 한 곳에 모아 놓고 필요할 때 불러쓰는 것이 클래스의 두 번째 의미(그룹화)이다.
위의 의미대로 라면, 우리가 직접 클래스를 만들어놓고 변수를 저장하거나 메서드를 그룹화 할 수도 있다.
public class StringUtil {
// 공백을 제거하는 메서드
public static String trimSpaces(String input) {
return input.trim();
}
// 문자열을 대문자로 변환하는 메서드
public static String toUpperCase(String input) {
return input.toUpperCase();
}
}
이렇게 클래스 안에 미리 메서드들을 그룹화 해놓으면 객체를 생성하지 않고도 바로 생성이 가능하다.
public class Main {
public static void main(String[] args) {
String text = " hello world ";
// StringUtil의 메서드들을 사용 (객체 생성 없이)
String trimmed = StringUtil.trimSpaces(text);
String upper = StringUtil.toUpperCase(trimmed);
System.out.println("Trimmed: " + trimmed);
System.out.println("Upper: " + upper);
}
}
'끄적이기' 카테고리의 다른 글
| [TIL - 5] Comparable vs Comparator (0) | 2025.03.04 |
|---|---|
| [TIL - 4] AI에 대한 허심탄회한 생각들 (2) | 2025.02.28 |
| [TIL - 3] 람다 표현식 + 알쓸신잡 (이제는 그만좀 까먹자) (1) | 2025.02.27 |
| [TIL - 1] 회고 및 시작 (3) | 2025.02.25 |
| 코테 회고 (3) | 2024.11.20 |