Programming/Java(15)
-
[Java] Lambda Expression
1. 익명 내부 클래스자바는 객체 지향 언어이기에 코드 작성 도중 인터페이스(IF)를 즉석에서 구현해서 쓰고 싶어도 억지로 클래스 껍데기를 만들어서 써야 했음. 이게 바로 익명 내부 클래스임.자바는 함수 단독으로 존재할 수 없는 언어이기에, 모든 함수는 반드시 클래스 안에 있는 메서드여야만 했음// Runnable: "실행할 수 있는 기능"을 가진 인터페이스Thread t = new Thread(new Runnable() { @Override public void run() { System.out.println("이 코드 한 줄 실행하려고..."); } });시스템에서 System.out.println(”..”)을 실행하기 위해 인터페이스를 구현한 이름 없는 클..
2025.12.13 -
자바 심화 및 자료구조
자바 문법을 배울 때 우리는 단순히 "이렇게 쓰면 된다"라고 넘어가곤 한다. 하지만 실제 운영 환경에서 HashMap의 데이터가 조회되지 않거나, 문자열 연산 때문에 성능이 저하되는 경험을 하고 나면 "도대체 내부에서 무슨 일이 일어나는가?"에 대한 의문이 생긴다.이번 글에서는 자바의 Object 클래스부터 컬렉션 프레임워크까지, 코드 이면에 숨겨진 메모리 동작과 원리를 파헤쳐 보려고 한다.1. Object 클래스: equals와 hashCode의 불편한 진실모든 자바 클래스의 조상은 java.lang.Object이다. 즉 모든 객체는 Object가 가진 기능을 사용할 수 있다.equals()기본 동작 : == 연산자와 동일하게 주소값을 비교한다오버라이딩 이유 : 객체의 주소가 달라도 내용물(필드값)이 ..
2025.12.11 -
자바 메모리 구조와 OOP: 설계도에서 실체까지
자바를 이용해 공부를 하면서 기존에는 단순히 문법(Syntax) 위주로 코드를 작성했다면, 이제는 클래스와 객체가 메모리상에서 실제로 어떻게 움직이는지 연결해 보려고 한다. 자바 프로그램이 실행될 때의 메모리 영역(Method Area, Heap, Stack)을 비교하고 학습해 보았다.1. 클래스와 객체: 설계도와 제품의 관계우리가 자바 코드를 짤 때 가장 먼저 마주하는 것은 Class와 new 키워드다. 이 둘의 관계를 build.gradle의 의존성 추가하듯 살펴보자. 코드상의 정의 (설계도)// 1. 설계도 (Method Area에 저장됨)public class Car { String color; void drive() { ... }} 실행 시점의 정의 (실제품)public void ..
2025.12.10 -
[Java] 자바 기초 다시 세우기: JVM 구동 원리와 메모리 구조 (Stack vs Heap)
[Java] 자바 기초 다시 세우기: JVM 구동 원리와 메모리 구조 (Stack vs Heap)면접을 보면서 자바 기초를 다시 공부하고 있다. 이때 가장 중요하게 느끼는 부분은 '데이터가 메모리의 어디에, 어떻게 저장되는가?'이다. C언어와 다르게 Java는 포인터를 숨겨놓았다. 하지만 숨겨놓았다는 말은 존재하지 않는다는 것이 아니라, 내부적으로는 분명히 존재한다는 의미이다.Java는 내부적으로 주소값을 주고받으며 동작하기 때문에, 이 원리를 모르면 나중에 개발을 하다가 NullPointerException의 늪에 빠지게 된다. 그래서 이번에는 자바의 구동 원리와 메모리 구조를 확실히 짚고 넘어가려고 한다.1. JVM 구동 원리와 프로그램의 시작우선 코드가 어떻게 실행되는지 그 흐름부터 보려고 한다. ..
2025.12.03 -
[Java] 정규표현식
[Java] 정규표현식 프로젝트를 진행하면서 입력해서 들어오는 값이 규격에 맞는 값인지 확인하기 위해 사용, 프로젝트 진행 시에는 급하게 검색해서 나오는 자료를 바탕으로 진행했다. 또한 문자열을 다루는 몇몇 알고리즘의 경우 해당 정규표현식을 사용하여 접근을 하기도 한다. 다시 익히려고 하는데 생각보다 해당 문법방식이 익숙하지 않아 머리에 잘 들어오지 않았다. 미루고 미루다가 공부하고 정리할겸 포스팅 시작 정의 정규 표현식 - regular expression - regexp / regex / rational expression 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 사용 프로그래밍 언어에서 대부분의 언어가 라이브러리를 통해 해당 기능을 제공 형식 언어 - 특정한 규칙을 가진 문자..
2022.12.27 -
[Java] Thread / Thread 클래스, Runnable 인터페이스 이용
[Java] Thread [Operate System] Thread (tistory.com) [Operate System] Thread Thread 스레드 - 프로세스 내에서 프로세스의 자원을 이용하는 여러 실행 흐름의 단위이다. 스레드는 프로세스 내의 Code, Data, Heap 영역은 다른 스레드와 공유하고 stack의 영역은 따로 할당 받음 프 skyriv312079.tistory.com 이전에 스레드를 정리한 것을 이용해서 Java로 다시 학습해보았다. Thread 자바에서 스레드를 작성하는 방법은 2가지가 존재한다. Thread 클래스 상속으로 이용 Runnable 인터페이스 이용 이 두가지를 하나 씩 해보려고 한다. Thread - Thread 클래스 이용 Thread 클래스를 상속받아 사용..
2022.12.03