Java 107

함수의 특징

자바 언어와 플랫폼 API의 관계 – 함수는 '접점'이다우리는 자바(Java) 언어로 프로그램을 작성할 때 많은 함수(function) 들을 사용합니다.예를 들어 System.out.println("Hello")라는 코드에서 println()은 우리가 만든 함수가 아니라 누군가 미리 만들어 놓은 함수입니다.그런데도 우리는 당당히 사용합니다. 왜일까요?바로 이것이 프로그래밍에서 '함수'가 하는 역할, 즉 플랫폼과 어플리케이션의 접점이라는 개념과 연결되기 때문입니다. 수학에서 시작하는 함수의 개념먼저 수학에서 익숙한 복잡한 수식을 생각해 봅시다.((x + 3)^2 + x/3 × (x - 2) + 5 + 3) × ((x + 3)^2 + x/3 × (x - 2) + 5) - ((x + 3)^2 + x/3 × (..

Java 2025.07.18

자바 언어와 플랫폼 API

자바 프로그램에서 기능(입출력 등)을 쓰려면, 기계나 운영체제(OS)의 복잡한 장치 코드를 직접 다룰 필요 없이 함수를 통해 사용할 수 있습니다.이때 자바 언어의 함수(메서드)는 접점(인터페이스) 역할을 하며, 이 접점을 우리는 API (Application Programming Interface)라고 부릅니다.즉, 개발자는 하드웨어나 OS의 복잡한 내부 동작을 몰라도, API만 알면 간단히 기능을 호출해서 사용할 수 있게 됩니다. 함수는 "접점"이다: 개발자 vs 장치함수를 다음과 같이 생각해보세요:📞 함수 = 전화기처럼 접속할 수 있는 창구개발자는 System.out.println() 같은 함수를 호출합니다.그런데 이 코드가 실제로 화면에 글자를 띄우려면 OS → 드라이버 → 모니터 → 전자회로 등..

Java 2025.07.18

콘솔, UI, 쉘

사용자 인터페이스(User Interface, UI)란?UI (User Interface)는 사용자가 애플리케이션(APP)과 상호작용할 수 있는 접점입니다.사용자는 앱의 내부 로직이나 구조를 모릅니다.대신 UI라는 창구를 통해 입력하고, 결과를 확인하게 됩니다.즉, UI는 사용자가 앱을 사용할 수 있도록 돕는 중간 다리 역할을 합니다.쉽게 말해 UI는 ‘앱을 만지는 방법’입니다.예: 버튼을 클릭하거나, 메뉴를 선택하거나, 텍스트를 입력하는 것 등. 콘솔(Console)이란?콘솔은 UI를 구현하는 실제 물리 장치를 뜻합니다.전통적인 의미의 콘솔은 키보드와 모니터(또는 터미널 장치)를 말합니다.콘솔은 사람이 컴퓨터에 입력할 수 있도록 해주는 도구입니다.최근에는 물리 장치가 아닌 소프트웨어 기반 터미널도 콘..

Java 2025.07.17

자바 프로그램 컴파일과 실행

자바 프로그램의 필수 구조자바 프로그램이 동작하기 위해 필요한 계층적 구조를 아래처럼 설명할 수 있습니다:[사용자] ⇅ (입력/출력)[Application] ← 사용자가 만든 자바 프로그램 └ 자바 언어(Java Language)로 작성된 코드 └ Java Platform API 호출 (예: System.out.println())[Java Platform API] ← 자바에서 제공하는 기능 집합 (표준 라이브러리) └ 파일 입출력, 키보드 입력, 화면 출력 등[Java Runtime] ← 자바 가상 머신(JVM)이 포함됨 └ 위에서 작성한 바이트코드(class 파일)를 실행함 └ 실제 컴퓨터의 하드웨어에 명령을 전달함[하드웨어] └ CPU, 메모리,..

Java 2025.07.17

환경변수 설정

자바 컴파일러(javac.exe)와 실행기(java.exe)의 역할javac.exe→ 자바 컴파일러입니다. .java로 작성된 자바 소스 파일을 .class라는 바이트코드 파일로 변환해줍니다.예: javac Hello.java → Hello.class 생성됨java.exe→ 자바 실행기입니다. .class 바이트코드 파일을 JVM(Java Virtual Machine)이 읽어 실행하게 도와주는 역할입니다.예: java Hello → Hello.class 파일을 실행이 둘은 JDK 설치 폴더 안의 bin 디렉토리에 있습니다.예: C:\Program Files\Java\jdk-21\bin\javac.exe 명령 프롬프트의 현재 위치: 소스 파일 디렉토리자바 파일을 작성한 후 명령 프롬프트를 열면 보통은 자바..

Java 2025.07.17

컴파일 언어의 레벨과 세대구분

"3 + 4" 연산: 고급 언어 (컴파일 언어)3 + 4는 우리가 자바(Java) 같은 고급 언어에서 작성하는 코드입니다.고급언어(High-Level Language)는 사람이 읽기 쉽게 설계된 언어로, 자바, C, 파이썬 등이 해당합니다.이런 코드는 CPU가 바로 이해하지 못합니다. 기계어로 번역(compilation)되어야 CPU가 실행할 수 있습니다.번역은 "컴파일러(Compiler)"라는 소프트웨어가 담당합니다.⚠️ 여기서 중요한 점은: 자바 → 컴파일 → 바이트코드 → 실행 중 JVM이 다시 기계어로 해석(자바는 약간 다른 구조지만 기본 개념은 동일) 번역기의 역할: 컴파일러 또는 인터프리터“번역기”는 우리가 작성한 고급 언어 코드를 기계어로 바꾸는 도구입니다.고급언어는 논리적으로 "장치에 독..

Java 2025.07.17

자바 프로그래밍

자바 프로그래밍이란?‘자바를 이용한 컴퓨터 프로그래밍’이라는 의미입니다.여기서 "자바"는 프로그래밍 언어이며,"컴퓨터 프로그래밍"은 컴퓨터에게 일을 시키기 위한 코드 작성 행위입니다.즉, 자바라는 언어로 컴퓨터에게 명령을 내리는 일, 그것이 자바 프로그래밍입니다. Program 어원의 의미어원 설명:그리스어 prographein: ‘공개적으로 쓰다(write publicly)’에서 왔습니다.pro = before (앞에)graphein = write (쓰다)이 단어는 라틴어 programma, 17세기 영어 program으로 발전합니다.결국 ‘미리 쓰인 것(written notice)’, 즉 컴퓨터에게 미리 써서 알려주는 명령 목록이라는 의미가 됩니다.결론:프로그램(program) = 명령 목록프로그래밍..

Java 2025.07.17

함수형 인터페이스

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.함수형 인터페이스 기본 구조핵심 개념함수형 인터페이스란?단 하나의 추상 메서드만 가진 인터페이스이 인터페이스는 람다식으로 구현할 수 있음코드 설명1) 일반적인 익명 객체 방식MyFunction f = new MyFunction() { public int max(int a, int b) { return a > b ? a : b; }};new MyFunction()으로 익명 클래스를 생성하고,max() 메서드를 오버라이딩하여 객체를 만듬호출: f.max(3,5); → OK✔️ 여기서 MyFunction 인터페이스는 이렇게 생겼음:@FunctionalInterfaceinterface MyFunction { int max(int..

Java 2025.06.28

람다식이란?

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.람다식이란 무엇인가?람다식(Lambda Expression)은 함수(또는 메서드)를 간단한 식(expression) 형태로 표현하는 방법입니다.원래 메서드 형태:int max(int a, int b) { return a > b ? a : b;}🔸 람다식 형태:(a, b) -> a > b ? a : bint max → 이름과 반환형 제거return 키워드 → 식만 쓰면 생략 가능중괄호 { } → 식이 하나이면 생략 가능 메서드 → 람다식으로 변환 규칙1단계: 이름과 반환타입 제거(int a, int b) -> { return a > b ? a : b;}2단계: return문 생략 (식만 있으면 가능)(int a, int b) -> a > ..

Java 2025.06.28

wait(), notify()

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.핵심 요약wait()와 notify()는 동기화된 블록(synchronized) 안에서만 사용할 수 있고, Object 클래스에 정의되어 있습니다.wait()는 현재 쓰레드가 객체의 락(lock)을 풀고, waiting pool에 들어가 기다립니다.notify()는 waiting pool에서 하나의 쓰레드를 깨웁니다.notifyAll()은 모든 대기 중인 쓰레드를 깨웁니다.synchronized void withdraw(int money) { while(balance 대기 } balance -= money; // 출금}출금하려 했으나 잔액 부족하면 기다립니다 (wait()로 lock 풀고 waiting pool 대기)다른 쓰레드가..

Java 2025.06.28