🌷 Java
🚧
아무것도 없어요😢
-
[Java] 쓰레드📁 프로세스와 쓰레드 프로세스 Process 실행 중인 프로그램 프로그램을 실행하면 OS로부터 자원을 할당받아 프로세스가 된다. 프로그램을 수행하는 데에 필요한 데이터/메모리 등 자원과 쓰레드로 구성되어 있다. 쓰레드 Thread 프로세스의 자원을 이용하여 실제 작업을 수행한다. 프로세스가 공장이라면 쓰레드는 일꾼이라고 볼 수 있다. 모든 프로세스는 쓰레드를 최소 1개 이상 가지고 있다. 멀티쓰레드 하나의 프로세스 내에서 두개 이상의 쓰레드가 동시에 작업을 수행하는 것. 동시에 처리될 수 있는 쓰레드의 수는 CPU의 코어 갯수와 일치한다. 멀티쓰레드의 장점 CPU 사용률 향상 자원의 효율적 사용 응답성 향상 간결한 코드 멀티쓰레드의 단점 동기화 교착상태 기아현상 📁 쓰레드의 구현 Thread, Runna..🌷 Java2023.05.19
-
[Java] Scanner 클래스 버퍼 비우기📁 Scanner Scanner는 사용자로부터 편리하게 입력을 받기 위한 목적으로 JDK1.5부터 추가된 클래스이다. 자바 학습 초기에 특히 유용하게 사용했던 클래스인데, 사용 시 주의해야 할 부분이 있다. import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String name = sc.nextLine(); int age = sc.nextInt(); String job = sc.nextLine(); System.out.printf("%s(%d, %s)", name, age, job); } } nextLine(), nextInt() 메서드를 사용해..🌷 Java2023.05.19
-
[Java] 지네릭스📁 지네릭스 Generics 다양한 타입의 객체를 다루는 클래스, 메서드에 대해 컴파일시 타입체크를 해주는 기능 여러 타입의 객체를 저장할 수 있는 컬렉션을 사용할 때 특히 자주 쓰인다. 지네릭스의 장점 컴파일시 타입체크가 가능해 타입 안정성을 제공한다. 객체의 타입을 미리 명시하므로 타입체크와 형변환을 생략해 간결한 코드 작성이 가능하다. 📁 지네릭스의 제한 지네릭 타입은 클래스와 메서드에 선언할 수 있고 멤버변수나 지역변수에도 사용 가능하다. 그러나 static 멤버와 배열에는 사용할 수 없다. ⭐️ static 멤버 static 멤버는 컴파일 후 클래스가 로드될 때 메모리에 올라가므로, 객체를 생성해 타입을 지정하기 이전에 이미 타입 지정이 되어있어야 한다. static 멤버는 모든 객체에 대해 동..🌷 Java2022.08.14
-
[Java] 컬렉션 프레임워크📁 컬렉션 프레임워크 다수의 데이터을 다루기 위한 표준화된 프로그래밍 방식 컬렉션을 다루는 데에 필요한 다양한 클래스들을 제공한다. 컬렉션의 장점 배열과 달리 저장하는 크기의 제약이 없다. 배열과 달리 객체의 추가, 삽입, 정렬 등 기능 처리가 메서드로 구현되어 있어 간단하게 해결된다. 여러 타입의 데이터를 저장할 수 있다. 📁 핵심 인터페이스 📂 Collection List와 Set의 조상 인터페이스 Collection의 메서드 컬렉션에 저장된 데이터를 읽고 추가/삭제하는 등 기본적인 메서드를 정의하고 있다. 메서드 설명 boolean add(E element) 객체를 추가 boolean addAll(Collection c) 지정된 컬렉션에 포함된 객체를 모두 추가 boolean remove(Objec..🌷 Java2022.08.11
-
[Java] 입출력(I/O)📁 입출력 I/O 입력과 출력 Input과 Output 컴퓨터 내부 또는 외부 장치와 프로그램 간에 데이터를 주고받는 것 입력과 출력의 기준은 프로그램 자신이다. 입력 Input 장치에서 프로그램으로 데이터가 전달되는 것 출력 Output 프로그램에서 장치로 데이터가 이동되는 📁 스트림 데이터를 한쪽에서 다른쪽으로 전달하기 위해서는 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 스트림이라고 한다. 각각의 장치마다 연결 가능한 스트림이 존재한다. 스트림은 물이 한쪽 방향으로만 흐르는 것과 같이 단방향 통신만 가능하다. 입력은 장치에서 프로그램으로, 출력은 프로그램에서 장치로 데이터가 이동하는 것이기 때문에 방향이 다르다. 따라서 입력과 출력을 동시에 수행하려면 2개의 스트림이 필요하..🌷 Java2022.08.10
-
[Java] 날짜와 시간, 형식화📁 날짜와 시간 Date 클래스 날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK1.0). 대부분 deprecated되어있음. Calendar 클래스 Date 클래스를 개선한 새로운 클래스(JDK1.1) time 패키지 Date와 Calendar의 단점을 개선한 새로운 클래스를 제공하는 패키지(JDK1.8) 📁 Calendar 클래스 날짜와 시간을 다루기 위한 클래스. getInstance() 추상클래스이므로 메서드를 통해 객체를 얻어야 함. 기본적으로 현재 날짜와 시간으로 설정된다. Calendar cal = Calendar.getInstance(); Calendar의 필드 필드를 사용할 때에는 Calendar.필드명으로 사용한다. YEAR : 년 MONTH : 월(0부터 시작) DATE : 일 WE..🌷 Java2022.08.08
-
[Java] 메서드의 바인딩📁 바인딩 Binding 프로그램에 사용된 구성 요소의 실제 값 또는 프로퍼티를 결정짓는 행위를 의미한다. 메서드에서 바인딩이란 메서드를 사용할 때 호출된 메서드와 실제 메서드가 위치한 메모리를 연결하는 행위이다. 오버라이딩을 예시로 들자면 조상 메서드와 자손에서 오버라이딩된 메서드 중 어떤 것을 사용할지 결정하는 과정이다. 바인딩은 그것이 수행되는 시점에 따라 정적바인딩과 동적바인딩으로 구분된다. 바인딩이 컴파일타임에 수행되면 정적바인딩, 런타임에 수행되면 동적바인딩이다. 📁 정적바인딩 Static binding 자바 컴파일러는 실제 인스턴스의 타입 정보를 정확히 알지 못하는 채로 컴파일을 진행한다. 인스턴스는 런타임이 되어서야 new 연산자에 의해 메모리에 로드되기 때문이다. 따라서 컴파일타임에 바인..🌷 Java2022.08.08
-
[Java] java.lang 패키지와 유용한 클래스📁 java.lang 패키지 자바 프로그래밍에 기본이 되는 클래스드를 모아둔 패키지 import문 없이 바로 사용 가능하다. 📁 Object 클래스 모든 클래스의 최고 조상 멤버로 11개의 메서드를 가지고 있다. 📂 equals() 객체 자신과 다른 객체를 비교하여 결과를 boolean값으로 반환하는 메서드 Object에서는 주소값을 비교하도록 구현되어 있으므로 적절한 멤버로 비교할 수 있도록 오버라이딩해야 한다. public boolean equals(Object obj) 📂 hashcode() 객체의 해시코드를 반환하는 메서드 equals()와 함께 객체 비교에 사용된다. 규약상 equals()의 결과와 hashcode()의 비교 결과가 같도록 오버라이딩해주는 것이 좋다. public int hash..🌷 Java2022.08.08
-
[Java] 예외처리📁 프로그램 오류 프로그램이 실행중 오작동하거나 비정상적으로 종료되게 만드는 원인 발생시점에 따라 컴파일에러, 런타임에러, 논리적에러가 있다. 컴파일에러 프로그램을 컴파일할 떄 발생하는 오류 런타임에러 프로그램 실행도중 발생하는 오류 논리적에러 프로그램이 작성 의도와 다르게 동작하는 오류 런타임에러 컴파일러는 컴파일시 오타나 잘못된 구문, 타입 체크 등을 통해 에러 여부를 알려준다. 그러나 표면적인 소스코드만을 체크할 뿐 실행 중 발생할 수 있는 잠재적인 오류까지 검사할 수는 없다. 따라서 문제없이 컴파일이 되더라도 런타임에 오류가 발생할 수 있다. 에러 프로그램 코드에 의해 수습될 수 없는 심각한 오류 예외 프로그램 코드에 의해 수습될 수 있는 다소 미약한 오류 📁 예외클래스의 계층구조 자바에서는 실행..🌷 Java2022.08.08
-
[Java] 객체지향 프로그래밍Ⅱ📁 상속 클래스를 재사용해 새로운 클래스를 만드는 것 두개의 클래스에 조상-자손 관계를 맺어주는 것 클래스에서 다른 클래스를 상속할 때에는 확장한다는 뜻의 extends를 사용 class Child extends Parent {} 특징 자손은 부모의 멤버를 모두 물려받지만 생성자와 초기화블럭은 상속되지 않는다. 자손의 멤버 수는 조상과 같거나 많다. 자손 멤버의 변경은 조상 멤버에 영향을 미치지 않는다. 장점 코드의 재사용성 향상 코드를 공통적으로 관리해 코드의 추가 및 변경 용이 코드의 중복을 방지해 프로그램의 생산성과 유지보수에 기여 📁 클래스 사이의 관계 자바는 단일상속만을 지원한다. 다중상속이 필요한 경우 가장 비중이 높은 클래스를 상속하고 나머지는 포함관계로 만들어야 한다. 상속관계 한 클래스를..🌷 Java2022.08.08