전체 글 67

[Java] Lambda

Lambda가 무엇인가?익명 클래스를 더 간결하게 표현하는 문법익명의 함수를 정의하고 직접 전달하고 실행할 수 있는 방식더보기익명 클래스이름이 없는 클래스별도의 클래스 파일을 만들지 않고 코드 내에서 일회성으로 정의해 사용하기 때문인터페이스나 클래스의 구현, 상속을 활용해서 구현할 수 있다// 익명 클래스란?public interface Calculator { int sum(int a, int b);}/* ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ */public class Main { public static void main(String[] args) { // 익명 클래스 활용 Calculator calculator1 = new Calculator() { @..

Dev/Java 2025.04.25

[Java] System.out.print의 진실 (feat. toString() Override)

변수에 저장된 데이터(값)을 출력할 때 아래와 같은 print 메서드를 자주 사용한다.int a = 10;System.out.println(x); // 10 출력String str1 = "Syuare"System.out.println(name); // Syuare 출력더보기 그런데 클래스를 정의하여 인스턴스화한 뒤 해당 객체의 데이터를 출력해보면 대충 이상한 값이 출력되는데..BurgerJoint burgerJoint = new BurgerJoint("Hamburger");System.out.println("burgerJoint = " + burgerJoint); 확인해보니 해당 값은 '패키지명.클래스명@해시코드' 이다. 이걸 좀 더 깊게 파보려면 System.out.println()에 대해 알아볼 필요..

Dev/Java 2025.04.24

[Java] Generic

Generic 은 모든 타입을 매개변수로 사용할 수 있는, 뭔가 만능형인 이미지를 가지고 있었다. 그러나 실제 코드로 작성해보니 매개변수 자체만 봤을 때는 만능형이 맞지만,이 만능형을 활용을 하려니까 까다로운 부분이 있었다. 그래서 Generic에 대해 조금 더 알아보기로 했다.더보기Getter, Setter를 만들때는 편한 것 같은데,단순 설명을 들은 것만으로는 속성으로 선언한 변수를 메서드에 활용을 하려니까 여간 쉽지 않았다. Generic / 제네릭코드 작성 시점에 다룰 타입을 미리 고정하지 않고,나중에 객체나 메서드를 호출하여 사용할 때 타입을 결정할 수 있도록 하는 문법데이터 타입을 '일반화' 한다.데이터 타입이 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정된다.Generic은..

Dev/Java 2025.04.23

[Java] Enum

enum (열거형, eunmerated type)열거형: 서로 연관된 상수들의 집합enum은 자바 1.5부터 문법적으로 지원 시작했다.더보기enum은 어쩌다 등장 / 탄생하게 되었을까 (enum 탄생 배경) enum이 없을 때는 class 내 상수들을 주석으로 정의하였다.*상수: 변하지 않는 값/* * 1. 사과 * 2. 복숭아 * 3. 바나나*/int type = 1; // 사과를 의미 그런데 설명이 적힌 주석이 코드랑 멀어지거나 실수로 삭제할 경우 문제가 될 수 있다.이걸 개선하기 위해 아래와 같이 변수 = 값으로 정의할 수 있다.- 상수는 변하지 않는 값이기 때문에 final을 사용하여 상수화를 하였고,- static을 통해 메모리를 한 번만 할당되도록 하였다. private final static..

Dev/Java 2025.04.22

[Java] double 형 값의 소수점 처리

double형은 실수형 자료형 타입을 말하며, 소수점이 있는 실수는 대체로 double형을 통해 값을 저장한다. 이 double 형 값을 출력할 경우 소수점이 출력되는데, 소수점 끝이 0인데, 0이 그대로 출력되는 경우가 있다.더보기public class Main { public static void main(String[] args) { double result; int a = 50000; int b = 2; result = (double)a/b; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("default:..

Dev/Java 2025.04.21

[Java] 배열

배열비슷한 주제의 데이터를 하나의 그룹으로 묶어서 표현하는 방법같은 종류의 데이터를 여러 개 저장할 수 있는 상자.배열 왜 쓸까?변수를 관리해야할 때, 관리해야할 데이터의 수가 엄청 많을 경우 유지 보수가 복잡해진다.(특정 몇 번째 데이터를 확인하기가 쉽지 않다.) 이러한 데이터를 편하게 관리하기 위해 배열을 사용한다.데이터를 편리하게 관리하기 위해 사용모든 자료형의 종류로 배열 생성 가능배열의 특징한 배열에는 한가지 타입(int, String, 객체 등)만 사용된다.배열을 한 번 선언하면 배열 길이가 정해진다. (이후 변경 불가능하다)인덱스로 요소 접근: 배열의 요소를 확인하려면 인덱스를 사용해야한다. 인덱스는 0번 부터 시작한다.배열 선언자료형[] 변수이름 = new 자료형[배열의길이]; // 배열선..

Dev/Java 2025.04.18

[Project] 계산기를 만들자

개발 기획서 프로젝트 목표- 두 정수를 입력 받아 사칙연산(+,-,*,/)이 가능한 계산기를 만들자- LV1: 클래스 없이 계산기를 만들기- LV2: 클래스를 생성하여 계산기를 만들기- LV3: 심화된 기술을 계산기 코드에 적용해보기 개발환경- Intelli J, Java, JDK 17버전, Github Lv1. 클래스 없이 계산기 만들기더보기요구사항✅ 1. 양의 정수(0포함)만 입력 받도록 하기 ✅ 2. 사칙연산 기호(+,-,*,/) 를 입력 받기 ✅ 3. 입력받은 양의 정수 2개 + 사칙연산 기호 사용 > 연산 결과 출력 ✅ 4. 반복문 사용 > 반복 종료 키워드를 "exit" 문자열 입력해야 종료되도록, 해당 문자열이 아니면 무한 반복 계산 예외 처리 필요✅ 입력해야하는 정수 값을 음의 정수 ..

Sparta/Projects 2025.04.18

[Java] next() vs nextLine()

Scanner를 사용할 때 문자열을 입력받고 싶을 때는 next()와 nextLine()을 사용한다 이 둘은 어떤 점이 다르고, 어떻게 사용해야할까? 결론부터 얘기하면 읽어드리는 단위와 동작 방식의 차이가 있어, 이를 알고 사용해야한다. next()읽는 단위공백(스페이스, 탭, 줄바꿈 등)을 기준으로 나뉜 토큰(단어) 하나동작내부 버퍼에 저장한 후 다음 토큰(공백으로 구분된 한 덩어리)을 읽어들인다.토큰 앞뒤의 공백은 자동으로 건너뛴다.토큰만 반환하고 그 뒤에 오는 공백(혹은 줄바꿈)은 버퍼에 그대로 남긴다.특징공백으로 구분된 단어 하나를 읽고 싶을때 유용하게 사용할 수 있다.문자열에 띄어쓰기가 있을 경우 띄어쓰기 앞부분까지만 읽는다.더보기// next() 사용 예시Scanner sc = new Scan..

Dev/Java 2025.04.17

[Java] 제어문(조건문)

컴퓨터/시스템은 어떤 조건이나 상태를 마주했을 때 스스로 판단할 수 없다! 그렇기에 해당 조건이나 상태를 마주했을 때 어떤 판단을 내려야할 지 선택지를 제공할 수 있는데, 이 선택지를 제공하는 것이 제어문(조건문)이다. 제어문/조건문 (if, if-else, else if, switch)크게는 if문과 switch문으로 나뉜다.if 문조건1이 참이면 if문 내의 코드를 실행해라if (조건1) { // 조건 1이 참일 때 실행할 코드} if 문의 경우 조건의 갯수에 따라 if / if-else / else if 를 선택할 수 있다. if-else 문조건1이 참이면 if 문 내의 코드를 실행하고,거짓이면 else 문 내 코드를 실행해라if (조건1) { // 조건 1이 참일 때 실행할 코드} else { /..

Dev/Java 2025.04.16

[Java] 연산자

연산자데이터를 처리하여 결과를 산출하는 것이러한 연산에 사용되는 표시나 기호 > 연산자연산은 왜 하는걸까?더보기연산은 프로그래밍할 때 매우 중요한 역할을 한다고 하는데, 이유가 무엇인지 갑자기 궁금해졌다. 코드를 작성하다 보면 의외로 연산을 굉장히 많이 하는 것을 볼 수 있다. 데이터 처리와 계산 작업이 필요할 때산술 연산을 통해 수학 계산을 수행하거나, 데이터를 조작할 수 있다. 조건을 판단하거나 흐름에 대한 제어가 필요할 때비교 연산자나 논리 연산자를 통해어떤 데이터 값들의 관계를 판단하고, if문이나 반복문 등을 사용할 때 올바른 조건을 설정할 수 있다.(예시) 입력값이 A보다 큰가? 그렇다면 ~~~~, 아니라면 !!!!! 값을 저장 혹은 갱신이 필요할 때대입 연산자나 증감 연산자를 통해변수의 값을..

Dev/Java 2025.04.15