스터디 19

10주차 과제: 멀티쓰레드 프로그래밍

10주차 과제: 멀티쓰레드 프로그래밍 목표 자바의 멀티쓰레드 프로그래밍에 대해 학습하세요. 학습할 것 (필수) Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 학습 하기 전 생각 Thread 관련 공부할때 쉽지 않은 부분이였다. 멀티 쓰레드 프로그래밍과 Thread와 Runnable에 대한 동기화 등등 생각나는 것들이 많아 어떻게 포스팅을 해야할지 감이 오지 않는다.. 선장님이 말씀하신 깊은 범위는 가진 않지만 기본적인 것과 추가적으로 생각나는 것들(?)로 내용을 넣어볼까한다. 이번 주차 포스팅은 내용이 많아 보기 부담되시는 분도 계실거라 생각이 되지만 사용하는 방법이나 왜 사용하는지 어떻게 사용하는지에 대해 포스팅해보고자 한다. 기본적인 것..

스터디/LiveStudy 2021.01.18

9주차 과제: 예외 처리

9주차 과제: 예외 처리 목표 자바의 예외 처리에 대해 학습하세요. 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 Exception과 Error의 차이는? 먼저 알아보기 전에 Exception 과 Error에 대해 알아보자 예외의 종류 checked exception error runtime exception 혹은 unchecked exception Error 개념 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을 경우 발생하는 것..

스터디/LiveStudy 2021.01.11

8주차 과제: 인터페이스

목표 자바의 인터페이스에 대해 학습하세요. 학습할 것 (필수) 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 인터페이스 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개체 역할까지 담당하는 추상 클래스보다 추상적인 추상 클래스를 의미한다 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함될 수 있지만 인터페이스는 오로지 추상 메소드와 상수만을 포함할 수 있다.(JDK 1.8 이전) 인터페이스와 추상 클래스를 사용하는 이..

스터디/LiveStudy 2021.01.04

7주차 과제: 패키지

패키지 package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 classpath 옵션 접근지시자 Package 패키지 자바에서 패키지란 클래스와 인터페이스등의 집합(폴더)을 의미한다. 파일들을 묶음으로써 파일을 효율적으로 관리할 수 있게 한다. 협업 시 서로 작업한 클래스 사이에서 발생할 수 있는 이름 충돌 문제까지도 패키지를 이용하면 피할 수 있다 ex) me.thewing.livestudy._4week 패키지의 test.java me.thewing.livestudy._5week 패키지의 test.java 자바에서 패키지는 물리적으로 하나의 디렉토리를 의미한다 따라서 하나의 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지 이름의 디렉터리에 포함되어 있다 디렉터리의 계층..

스터디/LiveStudy 2020.12.30

6주차 과제: 상속

상속 상속은 무언가로 부터 물려 받다는 개념이다. 현실세계에서는 부모님으로부터 자식들이 재산을 물려받는 것과 비슷하다고 보면된다. 객체 지향에서의 상속은 inheritance(상속)가 아닌 extends (재사용과 확장)로 이해하는 것이 좋다. 상속은 코드 재사용성을 높이는 기능이지만 항상 최선은 아니다. 그러나 이펙티브 자바(서적)에서는 상속은 아래와 같은 경우를 보면 안전하다고 말한다 클래스가 상속을 위해 특별히 설계 되었거나 구조화가 잘 된 클래스를 확장의 목적으로 상속하는것이 안전하다 동일 개발자가 하위 클래스와 상위 클래스의 통제하는 경우 즉 같은 패키지내에서 상속하는 것은 안전하다 객체 지향의 상속에 대한 잘못된 예 - 계층도 / 조직도 위 그림은 현실 세계의 상속이다. 할아버지는 아버지에게 ..

스터디/LiveStudy 2020.12.21

5주차 과제: 클래스

객체 지향 프로그래밍(OOP, Object-Oriented Programming) 객체 지향 프로그래밍에서는 모든 객체(Object)로 취급을 한다, 이러한 객체가 바로 프로그램 객체(object)란 간단히 이야기하자면 실생활에서 우리가 인식할 수 있는 사물로 설명할 수 있다. 이러한 객체를 만들어 내기 위한 설계도 같은 개념을 클래스(class)라고 한다 객체지향 프로그래밍의 특징 캡상추다 캡슐화(encapsulation) 보안적인 기능을 하며 내부 코드를 노출하지 않기 위한 목적 상속(inheritance) 부모 클래스로부터 물려 받을 수 있다. 자바에서는 확장인 extends로 알아두는것이 좋다 추상화(abstraction) 생각으로 상상한 것을 실제로 옮길 수 있게, 필요한 기능을 프로그래밍 한것..

스터디/LiveStudy 2020.12.19

4주차 과제: 제어문

4주차 과제: 제어문 제어문 프로그램 코드의 실행 흐름에 따라 제어하는 구문 조건문 조건에 따라 코드의 실행 흐름을 제어하는 구문 if문 조건식이 참인 경우 실행 public class conditionalSample { public static void main(String[] args) { int score = 90; if (score >= 90) { System.out.println("A학점 입니다"); } if (score < 90) { System.out.println("A학점이 아닙니다"); } } } 결과 A학점 입니다 if-else 문 조건식의이 참인 경우 실행하고 거짓일때 else 문의 코드가 실행 public class conditionalSample { public static voi..

스터디/LiveStudy 2020.12.09

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

본 게시글은 백기선님의 자바 라이브 스터디를 진행하기 위한 정리 자료입니다 2주차 자바 데이터 타입, 변수 그리고 배열 Primitive Type 종류와 값의 범위 그리고 기본 값 Primitive Variable 8가지의 기본형 타입을 미리 정의하여 제공한다 Java 8에는 unsigned 가 지원된다. 사칙 연산이 따로 지원이 된다 divideUnsigned 나누기 remainderUnsigned 나머지 compareUnsigend 비교연산 **System.out.println("Byte min="+Byte.MIN_VALUE+" max="+Byte.MAX_VALUE); System.out.println("Short min="+Short.MIN_VALUE+" max="+Short.MAX_VALUE); ..

스터디/LiveStudy 2020.11.20

1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.

본 게시글은 백기선님의 자바 라이브 스터디를 진행하기 위한 정리 자료입니다 1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. JVM이란 무엇인가 자바 가상 머신(JVM, Java Virtual Machine) 자바 바이트 코드를 실행시키기 위한 가상 머신이라고 할 수 있다. 자바로 작성된 모든 프로그램은 JVM에서만 실행이 가능하고 자바 프로그램을 실행하기 위해서는 반드시 JVM이 있어야한다 C 프로그램은 기계어로 컴파일하고 하드웨어 기종에 맞게 각각 컴파일 되어있어야 한다. 즉 '플랫폼에 종속적'이다. Java 같은 경우 JVM만 설치 되어있으면 기기의 기종에 상관없이 사용이 가능하며 한번만 컴파일이 가능하고 플랫폼에 독립적이다. 출처 : https://www.artima.com/i..

스터디/LiveStudy 2020.11.20