제네릭 프로그래밍 자바 스프링을 하다가 제네릭 타입을 마주쳤는데 기억이 가물가물하여 다시 정리해 보았다.. 1. 클래스 제네릭 타입 자바에서는 Object가 모든 객체의 최상위 클래스이다. 즉, Object객체는 모든 인스턴스 객체를 받을 수 있다. 1) 쓰임 제네릭 클래스가 쓰이는 곳을 알아보자. public class ThreeDPrinter{ } 다음과 같이 3D프린터가 있다고 가정해보자. 3D프린터는 플라스틱과 파우더를 재료로 쓸 수 있다. 두개의 재료를 사용하는 프린터는 다음과 같이 만들어야 할까? public class ThreeDPrinter{ private Powder powder; private Plastic plastic; } 하지만 만약 플라스틱만을 사용하는 제품을 만들때는 파우더라는..
[JAVA] 기본 문법
자바 스트림 자바 스트림은 자바 8에서 기능이 추가 되었다. 람다를 활용한 기술이며, 배열 혹은 컬렉션에 대한 루프를 돌면서 여러개를 조합하여 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있다. 루프문을 쓰지 않아도 되어서 코드의 양이 매우 줄었고, 매우 자주 사용하는 기술 중 하나이다. 스트림 스트림은 3가지의 순서로 나타낼수 있다. 생성하기 가공하기 결과얻기 1) 생성하기 배열인 경우 배열인 경우에는 다음과 같이 스트림을 생성해야 한다. String[] arr = new String[]{"a", "b", "c"}; Stream stream1 = Arrays.stream(arr); Stream stream2 = Arrays.stream(arr, 1, 3); //1~2요소 컬렉션인 경우 컬렉션인 경우..
8월 5일 모각소 공부내용이다. 자바 스프링 부트에서 @표시를 어노테이션이라고 한다. 다음 코드를 보도록 하자. package com.jerry.blog.model; import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import org.hibernate.annotati..
7월 30일 모각소 공부내용이다. 1. Enum Enum을 사용하는이유는 잘못된 값을 사용함으로써 발생하는 에러 및 위험을 방지하기 위해서이다. 예를 들어 메뉴에 아메리카노, 아이스 아메리카노, 카페라떼, 가 있다고 가정하자. 하지만 손님이 초코라떼를 주문하면 에러가 발생할 수 있다. Enum을 이용하면 이러한 주문을 사전에 차단할 수 있다. 즉 주문메뉴의 범위를 제한할 수 있다. 다음 코드를 살펴보자. public class Sample { enum CoffeeType { AMERICANO, ICE_AMERICANO, CAFE_LATTE }; public static void main(String[] args) { System.out.println(CoffeeType.AMERICANO); // AMER..
1. 생성자(Constructor) 다음코드를 살펴보자 class Dog { String name; void setName(String name) { this.name = name; } } public class Sample { public static void main(String[] args) { Dog dog = new Dog(); System.out.println(dog.name); // null 출력 } } 이러한 코드의 결과는 null이다. 그 이유는 Dog 이라는 객체에 아무런 name도 설정해 주지 않아서 이다. 생성자를 이용하면 name이라는 객체변수에 값이 설정되었을때만 객체가 생성될 수 있도록 강제 할 수 있다. Dog 객체에 다음과 같은 메서드를 추가해보자. class Dog { S..
1. static class Counter { int count = 0; Counter() { this.count++; System.out.println(this.count); } } public class HelloSpringApplication { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); } } 다음과 같은 코드가 있다고 가정할때 위 코드는 다음과 같은 결과값이 나온다. 1 1 서로다른 객체를 생성하여 다른 객체를 가르키고 있기 때문에 발생하는 결과이다. 다음 예제를 살펴보자 class Counter { static int count = 0; Counter() { cou..
7월 23일 모각소 공부내용이다. 자바에서 접근제어자는 변수나 메소드 앞에 사용하여 권한을 설정한다. 접근제어자 1.private 2.default 3.protected 4.public 1. private 접근제어자가 private이라면 해당 변수, 메소드는 해당 클래스에서만 접근할 수 있다. public class Sample { private String a; return this.a; } 예제에서 a변수는 해당 Sample 클래스에서만 접근이 가능하다. 2. default 접근제어자를 입력하지 않으면 자동으로 default 접근제어자로 설정되어 해당 패키지 내에서만 접근할 수 있다. 3. protected 접근제어자가 protected라면 해당 패키지의 클래스 또는 해당 클래스를 상속받는 다른 패키..
자바 문법은 점프투 자바에 기초하여 작성한다. 1. 문자열 자바에서 문자열을 나타내는 자료형은 String이다. 다음과 같이 사용된다. String a = "hello world"; String b = "a"; 다음의 표현도 살펴보자. String a = new String("hello world"); String b = new String("a"); new는 객체를 의미한다. 객체는 나중에 다시 알아보자. 2. 원시(primitive) 자료형 int, long, double, float, boolean, char등을 원시 자료형이라고 부른다. 이러한 자료형은 new로 객체를 생성할 수 없다. 원시자료형은 다음처럼 각각 대응하는 wrapper class가 존재한다. 원시자료형 Wrapper class i..
7월 9일 모각소 공부는 https://blog.naver.com/jerry3269에 올려놓았다. 7월 16일 모각소 공부 내용이다. 1. 정수 자바에서 정수를 표현하는 자료형은 int, long이 있다. int 는 -2147483648 ~ 2147483647 까지 long 은 -9223372036854775808 ~ 9223372036854775807 까지 표현할 수 있다. 다음과 같이 사용한다. int a = 0; long b = 21474836478L; long 변수에 값을 대입할때 숫자 값이 int 자료형의 최대값인 2147483647보다 큰 경우 숫자 마지막에 L(또는 소문자l)을 붙여준다. 만약 이를 빼먹으면 컴파일 에러가 발생한다. 2. 실수 자바에서 실수를 표현하는 자료형은 float, d..