본문 바로가기

전체 글81

Java - 네스티드(Nested) 클래스 람다로 가는 길목으로서 네스티드 클래스와 이너 클래스에 대한 강의였다. 자바의 람다랑 파이썬의 람다가 비슷한 개념이면 좋겠다. 비슷하다면 이해하는데 도움이 될테니까. 어쨋든 네스티드 클래스에 대해서 정리해본다. 네스티드 클래스(Nested Class) 네스티드 클래스란 클래스 내부에 정의된 클래스이다. 2가지 종류의 네스티드 클래스가 있다. Static Nested Class Inner Class(Non-Static Nested Class) Static 네스티드 클래스 Static 키워드를 사용한 선언의 특성이 반영되는 네스티드 클래스, 외부 클래스와 상관없이 인스턴스를 생성할 수 있다. 외부 클래스의 Static 변수에 대한 직접 접근이 허가된다. private 접근 지정자로 Static 변수에 대한 .. 2020. 10. 15.
Java - 열거형과 가변인자, 어노테이션 25강의 내용은 좀 쉬어가는 느낌을 받을 수 있었다. 열거형(Enum) Java 구 버전에서 상수로 사용하던 방법을 대체하는 방법 상수처럼 보이지만 상수가 아님 enum 타입 참조변수를 사용해서 사용한다. enum Numbers_TEST { ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN } public static void main(String[] args) { Numbers_TEST num = Numbers_TEST.ONE; System.out.println(num); switch(num) { case ONE: System.out.println("일"); case TWO: System.out.println("이"); case THREE: System.out.println("삼".. 2020. 10. 14.
Java - Collection (2) 컬렉션에서 이어지는 내용으로 정렬 및 검색(찾기)에 관련된 내용이었다. 정렬 List를 구현한 컬렉션 클래스들은 저장된 인스턴스를 정렬된 상태로 유지하지 않기때문에 정렬이 필요하다면 추가적인 메소드를 사용해야 한다. public static void main(String[] args) { List list = Arrays.asList("Man", "Game", "Java", "Program"); list = new ArrayList(list); for(Iterator itr = list.iterator(); itr.hasNext();) { System.out.print(itr.next() + "\t"); } System.out.println(); Collections.sort(list); //정렬 메소드.. 2020. 10. 9.
Java - Collections (1) 최근들어서 블로깅에 너무 소홀했다. 다시 멘탈 잡고 진행하자. 이번 강의의 주제인 컬렉션 프레임워크는 자료구조를 사용하기위한 일종의 라이브러리로 이해하였다. 대략적으로 List, Set, Queue 그리고 Map로 구성되어 있고, 각 자료구조를 구현하는 각각의 방법들에 대한 내용이었다. List Interface List 인터페이스를 구현하는 컬렉션 클래스 ArrayList : 배열기반의 Array를 통해서 List 인터페이스를 구현, 배열을 사용해서 인스턴스를 저장 LinkedList : 연결리스트를 통해서 List 인터페이스를 구현, 연결리스트를 사용해서 인스턴스를 저장 List 인터페이스의 기본 특성 인스턴스의 저장 순서가 유지된다. 동일 인스턴스의 중복 저장이 허용된다. List 인터페이스의 경우.. 2020. 10. 9.
그레이들 프로젝트 기반으로 스프링 부트 프로젝트 생성 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 라는 책을 통해서 스프링 부트를 공부하고 있다. 이 책에서는 프로젝트 초기 세팅으로 스프링 이니셜라이저가 아닌 직접 설정을 입력하는 방식으로 초기 세팅을 진행하는데 까먹기 쉬운 방식인지라 초기 세팅 절차를 간단하게 정리해도 좋을 것 같다. IDE는 IntelliJ IDEA Community 2020.2.2 기준으로 진행하였다. 프로젝트 생성 책에서는 그레이들 프로젝트(Gradle) 세팅을 기준으로 진행한다. 따라서 인텔리제이에서 일단 그레이들 프로젝트를 생성한다. Next를 누르면 프로젝트 이름등을 설정하게 된다. GroupId의 경우 프로젝트 패키지의 이름, ArtifactId는 프로젝트 이름으로 설정된다. Finish를 눌러 완료하면 그레이들 프로젝트가.. 2020. 9. 28.
Java - 제네릭 (2) Java의 제네릭에 대해서 남은 개념들에 대한 22강이었다. 와일드카드라는 기능에 대한 설명이 길게 진행되었는데, 확실히 쉽게 이해하기는 힘들었다. 지금도 조금씩 헷갈리는 데, 복습을 확실히 해야겠다. 제네릭 클래스의 상속 제네릭 클래스 인스턴스와 참조변수간의 관계는 기본적인 상속 관계와 동일하게 작동한다. 단, 키워드로 감싸진 타입 매개변수가 동일해야 함 class Box { protected T ob; public void set(T o) { ob = o; } public T get() { return ob; } } class PaperBox extends Box { public PaperBox(T o) { ob = o; } } Box iBox = new PaperBox;//참조 가능 Box sBox.. 2020. 9. 27.
Java - 제네릭 (1) 스프링 예제 코드들 보면서 이게 뭐지 싶었던 문법인 제네릭에 대한 21강이었다. 다음 강의에는 제네릭을 좀 더 심화해서 다룬다는데 중요한 개념인 것 같으니 확실하게 정리하고 넘어가자. 제네릭이란? 자료형을 정하지 않고 클래스의 형태만 갖추어 놓는 것. 필요할 때에 해당 클래스의 자료형을 결정하는 방식 클래스의 경우는 인스턴스 선언시, 자료형 결정 메소드의 경우는 메소드 호출시, 자료형 결정 왜 제네릭이 등장했는가? 제네릭 이전 여러 타입의 데이터를 다루기 위해 일반적으로 Object 클래스를 사용한 클래스를 만들고, 명시적 형변환을 이용했다. 명시적 형변환을 다수 사용하면서 코드 안정성이 저하되고, 코드 에러를 컴파일 레벨에서 잡아내기 어려웠다. 무엇보다도 일일이 명시적 형변환을 지정하는 것이 굉장히 번.. 2020. 9. 22.
Ubuntu 20.04에서 IntelliJ IDEA 설치 스프링을 시작하면서 당연히 개발환경 잡기는 기본이다. 현재 사용중인 우분투 20.04버전에서 스프링 개발을 위한 인텔리제이 아이디어 커뮤니티 버전을 설치해보자. IntelliJ IDEA 다운로드 및 설치 www.jetbrains.com/ko-kr/idea/download/#section=linux 다운로드 IntelliJ IDEA: JetBrains가 만든 전문 개발자용 Java IDE 최신 버전 다운로드: IntelliJ IDEA (Windows, macOS, Linux) www.jetbrains.com 링크에서 Community 버전을 다운받는다. 다운받은 tar 파일을 /opt 디렉토리 또는 관리가 가능한 디렉토리로 옮긴다. 나는 /opt 디렉토리를 사용하지 않고, 따로 디렉토리를 생성한 곳으로 옮.. 2020. 9. 21.
Java - Java의 기본 클래스 (2) 위코드 프로젝트 기간동안 Java 강의를 못들었더니 완전 처음부터 공부하는 느낌이 든다. 스프링 공부를 하기로 했으니 Java 공부도 다시 시작이다. 하필이면 중간에 끊어진게 강의 중간이라서 더 헷갈리는 느낌이다. 20강 후반부는 수학과 관련된 여러 메소드를 가진 Math 클래스와 문자열과 관련된 Arrays 클래스에 관련된 내용이었다. 난수 생성과 문자열을 토큰으로 구분해줄 때 사용하는 클래스도 있었다. 한달 쉬었다고 못 알아듣는 개념들이 참 많았다. 복습도 해야겠다... Math 클래스 수학관련 연산에 사용되는 클래스 클래스 메소드 일부 정리 원주율 : Math.PI 제곱근 : Math.sqrt() 각도 : Math.toDegree() sin 연산 : Math.sin() cos 연산 : Math.co.. 2020. 9. 21.