Programming/자바(Java) 54

자바에서 가장 많이 호출되는것은 무엇일까

자바에서 가장 많이 호출되는 클래스는 사용자의 코드와 환경에 따라 다를 수 있지만, 일반적으로 핵심 Java API 클래스들이 가장 많이 호출됨. 그중에서도 아래 클래스들이 자주 호출됨: 1. java.lang 패키지이 패키지의 클래스는 기본적으로 import 없이 사용되므로 매우 자주 호출됨. • String:• 문자열 처리와 관련된 작업에 사용. • 예: System.out.println("Hello");에서 문자열 리터럴 "Hello"가 포함됨. • Object: • 모든 클래스의 최상위 부모 클래스. • 객체 생성, 비교, 해시코드 계산 등에서 자주 호출됨. • 예: equals, hashCode, toString 메서드. • Math: • 수학적 계산(예: Math.sqrt, Math.pow)에..

13-3 쓰레드의 구현과 실행

1. Thread클래스를 상속class MyThread extends Thread { public void run() { // Thread클래스의 run()을 오버라이딩 /* 작업내용 */ }} 2. Runnable인터페이스를 구현 - 더 유연함class MyThread2 implements Runnable { public void run() { // Runnable인터페이스의 추상메서드 run()을 구현 /* 작업내용 */ }} 쓰레드의 실행- 쓰레드를 생성한 후에 start()를 호출해야 쓰레드가 작업을 시작한다.*start()는 실행가능한 상태가 되는것이지 반드시 실행하는것은 아니다. 언제 실행될지는 OS의 스케줄러가 결정한다. (start 했다고 즉시 실행되..

13-1 프로세스와 쓰레드

프로세스: 실행 중인 프로그램, 자원(resources - 메모리, CPU)과 쓰레드로 구성쓰레드: 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다.프로세스: 쓰레드  = 공장 : 일꾼싱글 쓰레드 프로세스 = 자원 + 쓰레드멀티 쓰레드 프로세스 = 자원  + 쓰레드 + 쓰레드 + 쓰레드.... + 쓰레드 프로세스와 쓰레드(process & thread)하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 든다.  프로세스는 독립적인 실행 단위로, 각자의 메모리 공간을 가진다. 프로세스 간 통신은 복잡하며, 생성 및 관리 비용이 크다.쓰레드는 프로세스 내의 경량 실행 단위로, 메모리 공간을 공유하며, 생성과 관리 비용이 적다...

12-23 애너테이션이란?

- 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공한다.  애너테이션의 사용 예Junit이라는 단위테스트 프로그램을 위한 애너테이션 @Test 표준 애너테이션- 자바에서 제공하는 애너테이션*노란색 부분은 메타에너테이션 - 애너테이션을 만들때 사용하는 애너테이션 @Override- 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다.- 오버라이딩할 때 메서드 이름을 잘못 적는 실수를 하는 경우가 많다.  @Deprecated- 앞으로 사용하지 않을 것을 권장하는 필드나 메서드에 붙인다. - @Deprecated의 사용 예, Date 클래의 getDate() @FunctionalInterface- 함수형 인터페이스에 붙이면, 컴파일러가 올바르게 작성했는지 체크  함수형 인터페이스에는 ..

12-17 열거형

- 관련된 상수들을 같이 묶어 놓은 것. Java는 타입에 안전한 열거형을 제공 열거형의 정의와 사용- 열거형을 정의하는 방법 enum 열거형이름 { 상수명1, 상수명2, ... }  - 열거형 타입의 변수를 선언하고 사용하는 방법enum Direction { EAST, SOUTH, WEST, NORTH }    class Unit {            int x, y;             // 유닛의 위치            Direction dir     // 열거형 인스턴스             void init() {                  dir = Direction.EAST;  // 유닛의 방향을 EAST로 초기화              }        } - 열거형 상수의 비교에 ..

12-12 와일드 카드 / 제네릭 메서드

와일드 카드-하나의 참조 변수로 대입된 타입이 다른 객체를 참조 가능 와일드 카드의 상한 제한. T와 그 자손들만 가능 와일드 카드의 하한 제한. T와 그 조상들만 가능 제한 없음. 모든 타입이 가능와 동일 -메서드의 매개변수에 와일드 카드를 사용 +++와일드카드는 읽기 전용이다와일드카드를 사용하면, 해당 변수가 다양한 타입을 참조할 수 있지만, 새로운 객체를 추가하는 것은 허용되지 않는다.이게 중요한 차이점인데, 와일드카드는 타입을 유연하게 참조할 수 있게 해주는 반면, 그 안에 무언가를 추가하거나 변경하는 작업에 대해서는 불확실성을 발생시킬 수 있기 때문에 금지된다.(* 타입 안정성을 보장하기 위해서 쓰기를 제한함.    자바 컴파일러는 FruitBox2에 어떤 구체적인 타입이 들어갈지 확실하게 알지..

12-9 제한된 제네릭 클래스 / 제네릭스의 제약

제한된 제네릭 클래스- extends로 대입할 수 있는 타입을 제한- 인터페이스인 경우에도 extends를 사용class FruitBox extends Box { //Eatable은 interface} 제네릭스의 제약- 타입 변수에 대입은 인스턴스 별로 다르게 가능- static 멤버에 타입변수 사용 불가* static은 모든 인스턴스에 공통이기때문- 배열 생성할 때 타입 변수 사용 불가. 타입 변수로 배열 선언은 가능* 쉽게말해 new연산자 다음에 T를 쓸 수 없음. // 제네릭 배열 생성 불가

12-1 제네릭스 Generics

- 컴파일시 타입을 체크해 주는 기능(compile-time type check) - JDK1.5- 객체 타입의 안정성을 높이고 형변환의 번거로움을 줄여줌 1. 지네릭스의 장점: 타입 안정성을 제공한다.2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다 제네릭스를 쓰면 Runtime에 발생할 수 있는 에러를 Compile시점으로 끌고 올 수 있다  타입 변수- 클래스를 작성할 때, Object타입 대신 타입 변수(E)를 선언해서 사용. (일반클래스 -> 제네릭 클래스) 타입 변수에 대입하기- 객체를 생성시, 타입 변수(E) 대신 실제 타입(Tv)을 지정(대입)- 타입 변수 대신 실제 타입이 지정되면, 형변환 생략가능 제네릭스 용어Box   제네릭 클래스. 'T의 Box' 또는 'T Box'라고..