목록Programming Language/Java (12)
개발저장소
1. 동기화(Synchronized)동기화는 하나의 작업이 완전히 완료된 후 다른 작업을 수행하는 것을 말한다. 이와 반대로 비동기는 하나의 작업 명령 이후 완료 여부와 상관없이 바로 다른 작업 명령을 수행하는 것을 말한다. 동기화 방법은 메서드 동기화와 블록 동기화가 있다.메서드 동기화는 2개의 스레드가 동시에 메서드를 실행할 수 없다는 것, 블록 동기화는 2개의 스레드가 동시에 해당 블록을 실행할 수 없다는 것을 의미한다.하나의 스레드가 공유 객체를 사용할 때, 다른 스레드가 사용할 수 없도록 하는 것을 락(lock)이라고 표현한다. ※ 트랜잭션: 업무의 최소 단위 메서드 동기화동기화하고자 하는 메서드의 리턴 타입 앞에 synchronized 키워드를 넣는다.class MyData { int ..
스레드란?메모리가 CPU를 독립적으로 처리하는 하나의 최소 작업 단위를 말한다. CPU: 중앙 처리 장치라고도 하며, 연산을 수행함으로써 실제 프로그램을 실행하는 장치이다.하드디스크: 저장 매체로서 상대적으로 속도가 가장 낮다.메모리: CPU가 연산을 하기 위해 필요한 정보를 저장해두는 공간이다. 프로그램은 하드디스크에 저장된 파일들의 모임, 프로세스는 메모리에 로딩된 프로그램을 뜻한다.이때, 여러 프로그램이 메모리에 로딩되어 실행되는 것을 멀티 프로세스라고 한다. 마찬가지로 여러 스레드를 생성해 동시에 2개 이상의 스레드가 동작하는 것을 멀티 스레드라고 한다. 1. 스레드의 동시성과 병렬성동시성(Concurrency)처리해야할 작업의 수가 CPU 코어 수보다 많을 때를 말한다. CPU는 각 작업 스레..
예외란?프로그래밍 과정에서 발생한 오류 중에 개발자가 해결할 수 있는 오류를 예외(exception)이라고 한다.그리고 이를 적절하게 조치하는 것을 예외 처리라고 한다. 예외와 에러의 차이점예외(exception)와 에러(error)는 비슷하지만 다른 의미를 가진다.연산, 숫자 포맷 오류 같은 상황에 따라 개발자가 해결할 수 있는 오류는 예외라고 한다.그리고 JVM 자체에서 발생하는 오류 같은 개발자가 해결할 수 없는 오류를 에러라고 한다. 둘 다 Throwable 클래스를 상속하며 Exception은 일반 예외(checked exception)와 실행 예외(unchecked/runtime exception)로 나뉜다. 일반 예외는 컴파일 이전에 검사하며 실행 예외는 실행할 때 발생한다.일반 예외는 In..
1. 이너 클래스클래스 내부에 포함되는 클래스인스턴스 이너 클래스정적 이너 클래스지역 이너 클래스 (메서드 내부에서 정의) 인스턴스 이너 클래스는 아우터 클래스의 모든 필드와 메서드에 접근 가능하다.A 클래스 내에 B 이너 클래스가 존재한다면, A a = new A(), A.B b = a.new B()와 같이 아우터 클래스를 선언해야 사용할 수 있다. 마찬가지로 A.this.필드명 같은 방법으로 참조 가능하다. 정적 이너 클래스도 마찬가지로 static의 속성에 맞게 사용 가능하다. 정적 이너 클래스는 아우터 클래스의 정적 필드와 메서드만 사용 가능하다. 지역 이너 클래스메서드 내에서 정의된 클래스이다. 지역 변수처럼 메서드 내부에서만 사용할 수 있으므로, 지역 이너 클래스는 선언 후 바로 객체를 생성해..
abstract 제어자'추상적인' 이라는 뜻. 추상 메서드나 추상 클래스에 사용된다. 구체적이지 않은 메서드를 추상 메서드라고 하며 이를 하나라도 포함하는 클래스를 추상 클래스라고 한다.추상 메서드는 중괄호가 존재하지 않아 기능이 정의되지 않는다. 어떤 기능을 정의하지 않은 미완성 메서드라고 볼 수 있다.abstract 리턴 타입 메서드명 (); 과 같은 구조를 가진다. abstract를 사용하지 않더라고 충분히 상속과 오버라이딩을 사용할 수 있다. 하지만 추상 클래스를 상속 받은 자식 클래스는 반드시 추상 메서드를 오버라이딩 해야 한다는 특징이 있다. 자식 클래스로 하여금 확장을 유도하도록 하는 이점이 생긴다. abstract를 사용하면 자식 클래스에서 무조건 메서드를 오버라이딩해서 재정의해야하므로 오..
1. 클래스의 상속상속(Inheritance)은 부모 클래스의 필드, 메서드, 이너 클래스를 내려 받아 자식 클래스 내부에 포함시키는 자바의 문법요소이다. 대학생 클래스와 직장인 클래스가 있다고 가정하자. 대학생 클래스에는 이름, 나이, 학번이라는 필드와 먹기, 잠자기, 등교하기라는 메서드가 존재한다.직장인 클래스에는 이름, 나이, 사번과 먹기, 잠자기, 회사가기라는 메서드가 존재한다.두 클래스 모두 이름과 나이, 먹기와 잠자기가 공통으로 포함한다. 이름과 나이, 먹기와 잠자기를 가진 사람 클래스를 만들어 대학생과 직장인 클래스가 상속받도록 하면, 추가로 필드와 매서드만 구성하면 된다. 즉, 부모 클래스는 자식 클래스의 공통적인 특징을 모아 구성한 클래스라고 볼 수 있다. 상속의 장점1. 상속으로 인해 ..
1. 인스턴스 필드, 메서드와 정적 필드, 메서드필드와 메서드는 선언 방법에 따라 인스턴스와 정적(static)으로 분류할 수 있다.인스턴스로 선언되면 객체 생성 후 사용할 수 있고, static으로 선언되면 객체 생성 없이도 사용 가능하다. ※ 필드는 객체가 존재하는 힙 영역에 저장되지만, 메서드는 객체마다 저장되면 중복으로 인해 메모리 효율이 떨어진다. 그러므로 메서드는 메서드 영역에 저장되고, 객체 없이 사용하지 못하도록 제한된다. this와 super 키워드this와 this(), super와 super()는 비슷하게 생겼지만 다른 역할을 수행한다. this()는 생성자가 다른 생성자를 호출할 때 사용된다. this() 호출은 생성자의 첫 번째 문장에서 이루어진다는 특징이 있다. this는 객체..
▶ 객체와 객체 지향 프로그래밍https://develrepo.tistory.com/24 [Java] Java란?1. Java Java는 썬 마이크로시스템즈에서 개발한 객체 지향적인 프로그래밍 언어이다. 특징 JVM(Java Virtual Machine) 위에서 동작하기 때문에 운영체제와 상관없이 동작한다. 객체 지향 프로그래밍에 적develrepo.tistory.com 1. 클래스와 인스턴스클래스(Class)는 객체를 생성하기 위한 설계도이다. 객체 그 자체를 오브젝트(Object)라고 부르며, 클래스로부터 생성된 객체를 인스턴스(Instance)라고 부른다. 인스턴스는 클래스와의 관계에 중점이 있다.클래스를 선언하는 것은 객체를 생성하기 위한 설계도를 작성하는 작업이라고 할 수 있다. 클래스를 생성..
Java는 기본적으로 위에서 아래로 실행하는 흐름을 가지고 있다. 이 흐름을 제어하는 것이 바로 제어문이다. 제어문은 조건문과 반복문이 존재한다. 조건문: if문, switch문 반복문: for문, while문, do-while문 1. if문 if문은 조건식의 결과에 따라 블록 실행 여부가 결정된다. if (조건식) { 실행문; 실행문; // 조건식이 true일 때 실행된다. } else 블록과 함께 사용하면 조건식이 false가 되는 경우도 고려할 수 있다. if (조건식) { // 조건식이 true일 경우 실행 } else { // 조건식이 false일 경우 실행 } 조건식이 여러 개인 if문도 만들 수 있다. else if를 사용해 다양한 조건을 만든다. 단, if문은 단 한 개만 실행된다. 조건식..
연산자(Operator)연산자란, 하나 이상의 피연산자를 취하여 연산을 수행하는 기호이다. 연산의 결과로 새로운 값을 생성한다.Java는 다음과 같은 연산자를 제공한다.부호/증감 연산자산술 연산자비교 연산자논리 연산자비트 연산자대입 연산자삼항 연산자 1. 부호/증감 연산자부호 연산자는 변수의 부호를 유지하거나 변경한다.연산식설명+피연산자피연산자의 부호 유지-피연산자피연산자의 부호 변경 + 연산자는 잘 사용되지 않고, - 연산자는 변수값의 부호를 변경할 때 사용된다. 부호를 변경할 때, 타입에 유의해야 한다. 예를 들어, byte 타입의 변수를 - 연산한다면 int 타입 변수에 대입해야 한다. 증감 연산자는 변수의 값을 1 증가시키거나 감소시키는 연산자이다.연산식설명++피연산자피연산자의 값을 1 증가/감소..