본문 바로가기

프로그래밍/Java21

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.
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.
Java - Java의 기본 클래스 (2) 위코드 프로젝트 기간동안 Java 강의를 못들었더니 완전 처음부터 공부하는 느낌이 든다. 스프링 공부를 하기로 했으니 Java 공부도 다시 시작이다. 하필이면 중간에 끊어진게 강의 중간이라서 더 헷갈리는 느낌이다. 20강 후반부는 수학과 관련된 여러 메소드를 가진 Math 클래스와 문자열과 관련된 Arrays 클래스에 관련된 내용이었다. 난수 생성과 문자열을 토큰으로 구분해줄 때 사용하는 클래스도 있었다. 한달 쉬었다고 못 알아듣는 개념들이 참 많았다. 복습도 해야겠다... Math 클래스 수학관련 연산에 사용되는 클래스 클래스 메소드 일부 정리 원주율 : Math.PI 제곱근 : Math.sqrt() 각도 : Math.toDegree() sin 연산 : Math.sin() cos 연산 : Math.co.. 2020. 9. 21.
Ubuntu에서 Java 개발환경 세팅 언젠가는 해야 할 일이었고, 이제 위코드에서의 마지막 한 달이 시작되었다. 스프링 부트를 해야하니 일단 Java 개발 세팅을 해야해서 일단 VS Code에 Java 환경을 잡기로 했다. Visual Studio Code 설치 예전부터 써와서 익숙한 IDE이기도 하고 여러 언어에 대응할 수 있는 툴이다. 이전 두달동안 계속 Vim만 쓰다보니 VS Code도 쓰고 싶어졌다. code.visualstudio.com/ Visual Studio Code - Code Editing. Redefined Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications... 2020. 9. 14.
Java - Java의 기본 클래스 (1) 20번째 강의는 자바의 기본 클래스에 대한 강의였는데, 길이가 길고 내용이 다양해서 두번으로 나눠서 정리해야겠다. 래퍼 클래스(Wrapper Class) 이름 그대로 무언가를 감싸는 역할을 하는 클래스이다. 래퍼 클래스는 기본 자료형 값을 인스턴스로 감싸서 인스턴스를 필요로하는 작업에 값을 사용 가능하도록 한다. 기본 자료형의 종류대로 각각의 래퍼 클래스가 존재한다. ex> Integer int1 = new Integer(1) 래퍼 클래스를 통해서 만들어지는 인스턴스는 "Immutabe"하다. immutable하다의 의미는 내부의 값을 변경할 수 없다라는 뜻 그렇다면 값의 수정 소요가 생긴다면? 값을 꺼내서 연산 또는 수정한 값을 이용해 새로운 인스턴스를 만들어야 한다! 래퍼 클래스의 박싱(Boxing).. 2020. 7. 25.