Java

    Java interface 사용 이유, interface의 장단점.

    들어가기전에 interface는 객체지향의 SOLID 5원칙과도 연관성이 많다고 생각한다! 개인적으로 같이 연관지어서 생각해보면 이해가 조금은 더 잘 되었다. interface 사용 이유 인터페이스(interface) 자바에서 클래스들이 구현해야 하는 모든 기능을 추상화로 정의만 하고 구현은 하지 않은 자료형을 의미. interface Car { // 인터페이스 선언 void move(); // 추상화하고 구현은 하지않음. void start(); // 추상화하고 구현은 하지않음. } 구현한 클래스에서 특정 기능(메소드)을 구현하도록 강제 할 수 있는 기능을 제공한다. 다형성이 가능하도록 기능을 제공한다. 추상 클래스는 수직적이지만, 수평적 구조를 제공한다. 하나의 클래스가 여러 인터페이스를 상속받을 수..

    # Java 그룹화, 그룹화 하고 정렬. Stream groupby, groupingBy, sorting Lists after groupingBy

    Java Stream groupby, groupingBy, sorting Lists after groupingBy Java 8 Stream을 이용하여 특정 키값으로 벨류 값 (Value List) 들을 모으는 방법과 그 요소들을 정렬 하는 방법 Java 8 grouping, sorting Lists after groupingBy Java 8 Stream을 이용하여 특정 키값으로 벨류 값 (Value List) 들을 모으는 방법입니다. Map 특정 key 값으로 특정 key에 대응하는 요소 리스트를 Map으로 만들 수 있다. 또한, 요소 리스트를 특정 프로퍼티의 속성에 맞게 정렬 할 수 있습니다 간단한 예제로, 게시물을 예제로 들어보겠습니다. 게시물 들의 값으로, 해당하는 값의 게시물들을 뽑아와야 하는 요..

    Java 동시성 제어 - 멀티스레드, Syncronized, volatile, Atomic

    멀티스레드 환경에서의 자바 동시성 제어 기법 멀티스레드 프로세스 환경에서의 자바 동시성 기어 제법 들어가기 전에 프로세스와 쓰레드, 멀티쓰레드부터 뭔지 알아보자. 프로세스 실행중인 프로그램(program)이 메모리에 적재되어 실행되는것 프로세스 내에는 코드 영역, 데이터 영역, 스택 영역, 힙 영역이 존재한다. Code 영역 실행한 프로그램의 코드가 저장되는 메모리 영역 (프로그램 명령어, 소스 코드 자체) Data 영역 프로그램의 전역 변수와 static 변수가 저장되는 메모리 영역( 전역변수, static 변수. 정적 ) Heap 영역 프로그래머가 직접 공간을 할당(malloc)/해제(free) 하는 메모리 영역(new() 등 동적) Stack 영역 함수 호출 시 생성되는 지역 변수와 매개 변수가 저..

    5주차- 클래스

    백기선 님의 유튜브 온라인 자바 스터디를 정리한 글입니다 목표 자바의 Class에 대해 학습하세요. 학습할 것 (필수) 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 마감일시 2020년 12월 19일 토요일 오후 1시까지. 과제 (Optional) int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요. int value, Node left, right를 가지고 있어야 합니다. BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요. DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요. Class 정의하는..

    6주차 - 상속

    목표 자바의 상속에 대해 학습하세요. 학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 자바 상속의 특징 상속 : Inheritance 상속이란, 부모 클래스의 변수와 메소드를 자식 클래스가 상속 받는 것을 의미한다 상속을 사용하면, 코드를 재사용하기에 편리하고, 클래스간의 계층구조를 분리하며 관리하기 쉬워진다. 상속 키워드 : extends public class Parent {} public class Child extends Parent{} extends 키워드를 사용하여 부모 클래스를 명시하고 상속받을 수 있다. 상속 받는 클래스 (ex: child)를 ..

    4주차 - 제어문

    백기선 님의 유튜브 온라인 자바 스터디를 정리한 글입니다 4주차 - 제어문 목표 자바가 제공하는 제어문을 학습하세요. 학습할 것 (필수) 선택문 반복문 제어문 제어문이란 주어진 조건에 따라 코드 블록을 실행하거나 반복실행 할 때 사용한다. 일반적으로 코드는 위에서 아래로 순차적으로 실행된다. 제어문은 코드의 실행순서를 인위적으로 제어할 수 있다. 선택문 제어문 중 if, if ~ else, switch문 입니다. if문 문법 : if (condition) {코드 실행 블록} condition은 조건식이나 조건문. 변수나 조건식 메서드가 들어갈 수 있습니다. 조건이 참(true)이면 코드 블록을 실행, 거짓(false) 라면 코드 블록을 실행하지 않습니다. 실행 블록 내의 코드가 한 줄인 경우 중괄호를 생..

    3주차 - 자바 연산자

    백기선 님의 유튜브 온라인 자바 스터디를 정리한 글입니다 3주차 - 연산자 목표 자바가 제공하는 다양한 연산자를 학습하세요. 학습할 것 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (optional) Java 13. switch 연산자 연산 연산 (operations) : 프로그램에서 데이터를 처리하여 결과를 산출하는 것 연산자 (operator) : 연산에 사용되는 표시나 기호 피연산자 (operand) : 연산의 대상이 되는 데이터 연산식 (expressions) : 연산자와 피연산자로 연산의 과정을 기술한 것출처: https://xxxelppa.tistory.com/196?categ..

    2주차 - 자바 데이터 타입, 변수 그리고 배열

    백기선 님의 유튜브 온라인 자바 스터디를 정리한 글입니다 2주차 WEEK 02 :: 자바 데이터 타입, 변수 그리고 배열 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 프리미티브 타입 종류와 값의 범위 그리고 기본 값 Primitive Type : 원시 타입, 기본형 타입. 변수의 주소 값에 값이 그대로 저장되는 데이터 타입 값이 할당되면서 실제 값을 JVM의 Runtime Data Area 영역 중 Stack 영역에 값이 저장 기본 값이 있기 때문에 Null이 존재하지 않는다. Null을 넣고 싶다면 래퍼(Wrapp..

    1주차 - JVM은 무엇이며 어떻게 실행하는 것인가?

    백기선 님의 유튜브 온라인 자바 스터디를 정리한 글입니다 1주차 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 JVM이란 무엇인가 JVM : Java Virtual Machine의 줄임말(자바 가상 머신) 자바를 실행하기 위한 가상 머신. 자바 바이트코드(java ByteCode)를 실행할 수 있는 주체이다. 자바 바이트코드는 플랫폼(os 등)에 독립적이며 종속받지 않고 실행되는데, 대신 OS 위에서 Java를 실행시킬 것이 필요하다. 그것이 바로 JVM이다. .java파일을 Java Compiler가 .clas..

    Whiteship Java Study 목차

    WEEK 01 :: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. JVM 이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성요소 JDK 와 JRE의 차이 WEEK 02 :: 자바 데이터 타입, 변수 그리고 배열 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var WEEK 03 :: 연산자 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선..