Deperecated/JAVA 16

JAVA - 멀티 쓰레드

1. 프로세스 운영체제에서 실행중인 하나의 애플리케이션. 사용자가 앱을 실행하면 운영체제로 부터 실행에 필요한 메모리를 할당 받아 앱의 코드를 실행하는데, 이를 프로세스라 한다. 2. 쓰레드 한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어놓았다는 뜻. 3. 멀티쓰레드 한 프로세스 내에 스레드가 두 개 이상인 것. 하나의 프로세스 내부에 생성되기 때문에 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수 있다. 예외처리에 신경써야 한다. 4. 멀티쓰레드의 사용처 대용량 데이터의 처리 시간을 줄이기 위해 데이터를 분할해 병렬로 처리하는 곳 UI를 갖고있는 애플리케이션에서 네트워크 통신을 하기위해 다수의 클라이언트의 요청을 기다리는 서버 개발 5. 작업 쓰레드 생성과 실행 메인 작..

Deperecated/JAVA 2020.01.17

JAVA - 주요 API 정리

책에 나온 JAVA에서 주로 쓰이는 API들 정리. *API(=라이브러리) : 프로그램 개발에 사용되는 클래스 및 인터페이스의 모음. 1. java.lang 패키지 - 자바 프로그램의 기본적인 클래스를 담고 있는 패키지. 2. java.util 패키지 - 대부분 컬렉션 클래스들로 이루어짐. 클래스 용도 Arrays Calendar Date Objects 객체 비교, null 검사 StringTokenizer 특정 문자로 구분된 문자열을 뽑아낼 때 Random 난수 생성 3. java.lang 패키지의 Object 클래스의 메소드 - Object 클래스는 자바의 최상위 부모 클래스 이다. 메소드 설명 객체 비교(equals()) - 논리적으로 동등한지의 여부를 검사. public boolean equals..

Deperecated/JAVA 2020.01.16

JAVA - 중첩 클래스&중첩 인터페이스

C++에도 있는 개념이지만 난 한번도 써보지 않았다..흠냐뤼; 1. 정의 - 클래스 내부에 선언되는 클래스&인터페이스. - 특정 클래스와 관계를 맺을 경우에는 관계 클래스 안에 선언하는것이 은닉할수도있고, 필드에 쉽게 접근할 수 있기 때문에 도입된 개념. 1. 중첩 클래스 선언 위치에 따른 분류 선언 위치 설명 멤버 클래스 인스턴스 멤버 클래스 Class A{ Class B {...} } A 객체를 생성해야만 사용할 수 있는 B 중첩 클래스 정적 멤버 클래스 Class A{ static class B {..} } A 클래스로 바로 접근할 수 있는 B 중첩 클래스 로컬 클래스 class A { void method(){ class B {...} } } method()가 실행될 때만 사용할 수 있는 B 중첩..

Deperecated/JAVA 2020.01.11

JAVA - 예외 처리

음.. 나름 C++ 꽤나 쓴다는 곳에서 근무했었는데.. 예외 처리는 많이 접해보지 않았다. 런타임에서 크래쉬가 나면 Null처리를 하지않은 경우가 굉장히 많아서 맨날 If문으로 Flag처리만 했었는데 C++, JAVA 둘 다 있는 개념이니 빠른 정리가 필요하다..! 오늘도 깨닫는 경험 부족으로 인한 지식 부족 흑흑.. JAVA에서는 예외를 클래스로 관리하기 때문에, 모든 예외 클래스는 java.lang.Exception 클래스를 상속한다. 1. 일반 예외(Exception) - 컴파일러가 처리하는 예외 2. 실행 예외(Runtime Exception) - 컴파일러가 처리하지 않기 때문에 개발자의 역량으로 처리 코드를 삽입해야 한다. 3. 예외 처리 코드 (try - catch - finally) try ..

Deperecated/JAVA 2020.01.10

JAVA - 익명 구현 객체, 람다식

1. 익명 구현 객체 - 보통 인터페이스, 구현 클래스, Main에서 구현 클래스의 객체를 써서 메소드를 호출하지만, 일회성의 구현 객체를 위해 소스 파일을 만들고 클래스를 선언하는것은 비효율적이다. - 따라서 소스 파일을 만들지 않고도 구현 객체를 만들 수 있는 방법을 제공하는데, 이것이 익명 구현 객체이다. 2. 익명 구현 객체 용도 - UI프로그래밍 이벤트 처리 - 임시 작업 스레드 간편 생성 3. 람다식 사용 - 람다식은 인터페이스의 익명 구현 객체를 만든다. 4. 람다식 - 메소드를 하나의 "식"으로 표현한 것. - 함수를 따로 정의하지않고 한 줄에 함수를 써서 그것을 호출하는 방식. - 메소드를 람다식으로 표현하면 메소드의 이름과 반환값이 없어지므로 람다식을 "익명함수"라고도 한다. - 모든 ..

Deperecated/JAVA 2020.01.09

JAVA - 인터페이스

1. C++에서의 인터페이스 - C++에서는 클래스의 메소드 하나를 virtual로 붙여서 선언하고 {} 를 하면 순수 가상함수로 그 메소드가 속한 클래스는 추상 클래스가 된다. - JAVA의 인터페이스는 C++에서 배운 추상 클래스의 상위개념이라고 볼 수 있다. 2. 인터페이스의 역할 - 객체 사용 설명서 - 인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 ----메소드 호출----> 인터 ---메소드 호출---> 객 코드

Deperecated/JAVA 2020.01.09

JAVA - 어노테이션

머리털 나고 처음 보는 개념이라 잘 읽히지도 않고.. 그냥 쓰면서 공부해야 조금이라도 머리 속에 들어올듯. 1. 메타데이터(metadata) - 응용 프로그램이 처리해야 할 데이터가 아니라, 컴파일&실행 과정에서 코드를 어떻게 컴파일하고 처리할 것 인지를 알려주는 정보. - 그 코드 자신에 대한 설명을 담은 데이터라고 이해할 수 있다. - 어노테이션을 메타데이터의 일종이라고 볼 수 있다. 2. 용도 - 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공 - 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공 - 실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공 3. 용도의 예 - @Override 어노테이션의 경우 : 메소드가 오버라이드 된 것을 컴파일러에게 알려..

Deperecated/JAVA 2020.01.09

JAVA 기본서 공부 5 - 클래스

1. n개의 클래스가 선언된 소스 파일을 컴파일하면 바이트 코드 파일은(.class) 클래스 선언한 개수만큼 생긴다. 7. 파일 이름과 동일한 이름의 클래스 선언에만 public 접근 제한자를 붙일 수 있다. 8. .연산자의 이름은 객체 접근 연산자. 9. this는 객체 자신의 참조자. 10. 생성자 오버로딩이 많아질 경우 생성자 간의 중복코드가 많아질 수 있는데, 이를 방지하고자 생성자 안에서 다른 생성자를 호출 할 수 있다. 사용방법은 this() 코드 이며, this()는 자신의 다른 생성자를 호출하는 코드로 "반드시 생성자의 첫줄"에서만 허용된다. 11. 메소드에서 매개 변수의 수를 모를 경우 - 여러 개의 수를 모두 합산하는 메소드를 선언해야 한다면, 몇 개의 매개 변수가 필요할지 미지수다. ..

Deperecated/JAVA 2020.01.05

JAVA - 열거 타입

C와는 열거타입 취급이 조금 다른듯 하다. 열거 타입 선언을 위해서는 열거 타입 이름으로 소스 파일(.java)를 생성한다. 열거 상수는 객체기 때문에 참조 타입 변수에 해당한다. Week today = Week.SUNDAY; 열거 타입의 Week의 경우 MONDAY ~ SUNDAY로 구성된 7개의 Week 객체로 Heap 영역에 생성된다/ SUNDAY 등의 열거 상수 들은 메소드 영역에 생성되어 Week 객체를 참조한다. 열거 타입 변수 today는 스택 영역에 생성된다. 열거 객체는 열거 상수의 문자열을 내부 데이터로 갖고 있다. (Week에는 MONDAY ~ SUNDAY 문자열 존재) 열거 타입에 관한 메소드들이 존재 한다. 리턴타입 메소드(매개 변수) 설명 String name() 열거 객체의 문..

Deperecated/JAVA 2020.01.04

JAVA - 향상된 for문

자바 5 부터 지원하는, 카운터 변수와 증감식을 사용하지 않는 for문. public class Hyunndy { public static void main(String[] args) { int[] oldarray = {1, 11, 12}; int total = 0; // 괄호( 배열에서 꺼낸 항목을 저장할 변수, 배열) // 실행 // 1. 배열에서 가져올 첫 번째 값이 존재하는지 평가 // 2. 존재하면 변수에 저장 // 3. 실행문 실행 for(int num : oldarray) { total += num; System.out.println(total); } } }

Deperecated/JAVA 2020.01.04