Java 6

[Java8] Functional Interface 알아보기 (+ 기본형 특화 인터페이스)

함수형 인터페이스(Functional Interface) API 공식문서에 따르면 아래와 같이 정의할 수 있습니다. 오직 하나의 추상 메소드만 가져야 한다. ㄴ 추상메소드 2개인 경우, Functional Interface X -> 컴파일 에러 발생 ㄴ 추상메소드 1 + 디폴트 메소드 1 인 경우에는, Functional Interface O -> 디폴트 메소드는 직접 구현을 하기 때문에 추상 메소드에 포함되지 않음 `@FunctinalInterface` 애노테이션 사용하여 함수형 인터페이스 조건에 맞는지 검사함 ㄴ애노테이션을 따로 붙이지 않아도 컴파일러가 알아서 식별함 ㄴ 가독성을 위해서 애노테이션을 붙이는 것을 권장함 예제 size라는 추상 메소드 하나와 출력을 위한 디폴트 메소드 하나를 가진 함수형..

Java 2024.04.21

Java String format 함수를 활용해보자

개요 String 클래스에는 문자열에 사용할 수 있는 내장 메서드가 있는데, 이를 활용해보자. String.format() 불필요한 문자열 결합없이 `가독성`을 높여 원하는 형태로 formatting된 `하나의 문자열`로 출력이 가능하다. `%`를 붙여 지정된 서식에 따라 작성하면 된다. flag(0/-/+) 조건을 설정하여 공백을 채울 수 있다. 아래 사진은 format에 지정할 수 있는 주요 서식입니다. (하단 관련 링크 참고해서 필요하실때마다 사용하시기 바랍니다) 실습 String itemName = "바나나"; int price = 4000; int quantity = 1; System.out.println("구입 상품 : " + itemName + ", 가격 : " + price + ", 수량 ..

Java 2024.03.05

[기초문법] Java8 Stream 적용/미적용 실습해보기

자바 문법을 활용하면 코드의 가독성을 높이는 효과도 있습니다. Java8부터 추가된 기능Stream()에 대해 알아보겠습니다. Tip) 자바 api문서는 여기를 참고해주세요 구글링하시면 다른 블로그에서도 충분한 설명이 되어 있으니 참고해주세요. 1. 결론 'Stream' 도입 전 : 반복문(for)을 통해서 데이터를 하나씩 가공 처리 도입 후 : 람다형식으로 쉽게 처리 장점 코드가 간결해짐 성능 측면에서도 유리 2. 코드비교 여기 코드 참고해주세요. 깃허브에 코드는 올려뒀습니다. 상황 Custom 클래스 : 손님 이름과 복지 포인트 변수를 담고 있음 복지 포인트가 100점 이상인 손님 정보가 필요함 @Getter public class Customer { private String name; privat..

Java 2024.01.16

Builder패턴을 사용하는 이유

결론입니다. Builer패턴을 사용하는 이유 1. 객체의 불변성 2. 어떤 값을 채워줘야하는지 명확합니다. 1. 생성자의 매개변수가 많을때는 Builer패턴을 사용하는 편이 좋습니다 코드를 통해 확인해보겠습니다. (디테일한 내용은 여기를 참고해주세요) Area를 구하는 객체 클래스를 생성했고, 조건은 아래와 같습니다. 필수 필드 : width, height 옵션 필드 : margin, padding package com.chandler.webservice.area; public class Area { private int width; private int height; private int margin; private String padding; public Area(int width, int heigh..

Java 2024.01.10

scanner 사용시 입력 버퍼 비우기

안녕하세요. 오늘은 scanner 사용시에 알아두면 좋은 팁(?)을 전달해드리려고 합니다. 결론부터 말씀 드리면 입력버퍼 비우기입니다. scanner부터 알아보겠습니다. 1. scanner 사용자로부터 입력값을 받아서 출력하는 프로그램을 만들때 사용하는 라이브러리입니다. API 공식문서를 통해 예제 따라해보시면서 익히시길 바랍니다. https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html scanner의 핵심은 System.in 과 System.out 입니다. System.in 키보드나 마우스와 같은 입력 장치를 통해 들어오는 표준 입력 값 System.out 모니터와 같이 출력 장치에서 내보내는 값 2. 입력 버퍼 비우지 않았을때 문제점 아래 ..

Java 2023.12.05

자바 메모리 구조

들어가기에 앞서.. 1. 왜 메모리(구조)를 배워야 할까요 (자바말고도) 개발자는 어떤 상황에서든 문제를 해결할 수 있어야 합니다. 예를 들어 주력 서비스를 개발해서 런칭해 웹사이트 오픈을 했어요. 근데 회사 서버컴퓨터 성능이 뒷받침 해주질 않아서 실제로 서비스를 이용하는 고객들이 불편함을 느낀다면? 고객 이탈이 발생할 겁니다. 결국 서비스 최적화를 위해 SW 로직 구현 뿐만 아니라 컴퓨터 HW(CS)의 전반적인 구조를 알고 있어야 해요. 그리고 무엇보다도 대부분의 회사 경영진이 좋아할 겁니다^^;; 저비용 고효율..모든 비즈니스 씬에서 먹히는 논리죠. 암튼. CPU, 메모리는 용량/성능/비용문제로 연결돼요.(클라우드 환경도 다르지 않다고 봐요) 그러니 기본 지식 정도는 알고 있어야 해요. 2. 자바 메..

Java 2023.12.02