Java
[Java] 스레드 Thread 멀티스레드 Multi-Thread run(), start()
쓰레드 생성 방법 Thread 클래스 상속 Runnable 인터페이스 지정 후 Thread 에 넘겨주기 1. Thread 클래스 상속 후 run() 메소드 재정의 start() Thread 클래스에 있는 start() 메소드는 JVM에 쓰레드를 스케줄링 해주는 역할을 한다. run() 스케줄링 후 실행할 메소드는 run()이라는 메소드이다. run()을 아예 재정의해서 우리가 원하는 작업으로 만들어 주어야 한다. Thread.class의 run() 메소드 public void run() { if (target != null) { target.run(); } } Ex) Thread 상속 예제 public class Mythread extends Thread { String data; public Mythr..
[Java] Generic 제네릭<> 클래스, 메소드, 인터페이스
Generic(제네릭) 자료형을 선언할 때 자료형을 정하지 않는 기법(사용할 때 지정) 대문자로시작 E : Element N : Number T : Type K : Key V : value Generic class(제네릭 클래스) 클래스 내부에서 사용될 자료형을 지정한다. GClassTest obj = new GClassTest(); obj.data1 = "Hello"; GClassTest obj2 = new GClassTest(); obj2.data1 = 10; //Integer 타입의 객체 data1 에 int 타입의 10 을 대입하면 Auto-BOXING 단, 객체형 자료형이어야 한다. int char double등과 같은 기본자료형은 사용 불가능 Wrapper class 타입을 사용하여 int -..
[Java]Object class toString(), equals(), hashcode()
Object 클래스 모든 클래스들의 최상위 클래스 어떤 클래스들이든 간에 다 가지고 있음 클래스를 만들면 자동으로 Object 클래스를 상속받는다. 객체들이 가져야하는 틀//객체라면 가져야하는 모든 틀 Object 객체타입을 매개변수로 받는 메소드들은 어떠한 객체든 다 받을 수 있다. 객체를 넘기라는 뜻 toString() : 객체 출력시 나올 문자열 정의(객체를 대표하는 문자열 정의) Object 클래스의 toString() 메소드 재정의 public class ObjTest { public static void main(String[] args) { Test_A obj = new Test_A("Hello"); System.out.println(obj); System.out.println(obj.toS..
[Java] @Annotation, 어노테이션
@어노테이션 /** *어노테이션 주석 *내부에 javadocs 문서에 대한 내용을 작성 */ /** @author 개발자 @param 매소드의 매개변수 @return 메소드의 리턴값 @exception 메소드에서 발생하는 예외 @throws throws 에 대한 설명 @see 참고할만한 링크 @since 사용 가능한 JDK 버전 @version 클래스의 버전정보 */
[Java] Java API(Application Programming Interface)
API (Application Programming Interface) 응용 프로그래밍 인터페이스 -> Java API: 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들을 의미 java.lang : java 프로그래밍을 위한 가장 기본적인 패키지와 클래스 포함 String, int, etc java.util : java 프로그래밍을 제어하기 위한 클래스와 데이터를 효율적으로 저장하기 위해서 쓰이는 클래스 포함 Scanner java.io : 키보드, 모니터, 프린터, 파일 등을 제어할 수 있는 클래스들을 포함 io -> Input/Output 을 의미 //출력과 java.net : 통신을 위한 기능이 있는 클래스들을 포함 API의 종류는 굉장히 많고, 다양하기 때문에 모두 외우는 것은 불가능하기..
[Java] 예외처리 try-catch-finally / throw throws 차이점 및 예제
예외처리 에러 : 심각한 오류 예외 : 덜 심각한 오류(객체) try ~ catch ~ finally 예외처리문 try{ 예외가 발생할 수 있는 문장 } catch(예외클래스명 객체명){ 예외 발생시 수행할 문장 } ... finally{ 예외 발생 유무에 상관없이 무조건 실행할 문장 } 예외라는 틀(class)을 잡아놓은 객체가 있다 Exception class 모든 예외들의 부모클래스 모든 예외들은 Exception class의 자식클래스이기 때문에 자동으로 업캐스팅 upcasting 이 이루어짐 어떤 예외가 발생하든지 Exception 타입으로 잡을 수 있다. 어떤 예외가 발생할지 모를 떄 찾아내는 역할 try{ 예외가 발생할 수 있는 문장 } catch(Exception e){ System.out..
[Java] 내부 클래스 Inner class , 익명 클래스 Anonymous Inner class
내부 클래스(Inner class) 클래스 내부에 클래스를 선언하여 외부 클래스의 필드에 쉽게 접근하기 위해서 사용한다. 다른 곳에서 볼 때에는 그 내부에 있는 클래스는 숨겨진 것처럼 보이게 된다. 내부 클래스의 필드를 사용(객체화)하기 위해서는 외부클래스의 객체에서 내부클래스를 객체화해야한다. 외부클래스의 필드에서는 자신이랑 같이 올라와 있는 내부클래스를 바로 객체화 할 수 있다. 외부클래스명 객체명 = new 외부클래스 생성자(); 외부클래스명.내부클래스명 객체명 = 외부클래스객체.new 내부클래스 생성자(); 굉장히 복잡하므로, 객체를 직접 만들지 말라는 뜻이다.(드물게 사용) Ex) 내부클래스 사용 예 일반클래스 상속 public class InnerTest { public static void ..
[Java] 인터페이스 interface, 다중 상속, 마크 인터페이스
인터페이스(interface) 틀이 극대화 추상클래스를 고도화시킨 문법, 반드시 추상메소드와 상수만 선언해야 한다. 구현이 되어 있는 것이 없음(틀의 역할만 함) 다른 클래스에서 인터페이스를 지정받을 때 implements를 사용함 틀로 받아 올 수 있는 interface의 개수에 제한이 없다. 지정 받은 클래스는 인터페이스가 가지고 있는 추상 메소드를 반드시 재정의해야한다. 인터페이스는 상수와 추상메소드만 존재하므로 그냥 선언해도 상수와 추상메소드로 선언됨. public static final 상수 : static final 생략가능 abstract 리턴타입 함수명 : abstract 생략가능 interface에는 public 이 필수 jdk 8버전 이후부터는 인터페이스에 default 메소드를 선언할..
[Java] 추상클래스 abstract class, final
추상 클래스 클래스들의 틀 (틀 자체의 틀) 추상적인 내용만 정의하고 있는 클래스로, 구체적인 내용은 상속받아서 하위클래스에서 구현되도록 설계된 클래스이다. 추상 클래스(부모)는 클래스(자식)의 공통 요소들을 가상화시켜놓기 때문에 객체화시 구현(재정의)을 꼭 해야한다. 부모 추상 클래스의 역할은 단지 자식 클래스들을 만들 때 도와주는 역할을 수행한다. 자식 클래스에서 만들어질 메소드의 이름과 형태만 가지고 있다. 메소드에 {}바디가 없다. 이런 메소드를 추상 메소드라고 하며 abstract 키워드가 리턴타입 앞에 붙는다. 추상 메소드가 하나라도 포함되어 있다면 추상 클래스로 만들어야 한다. 추상 클래스 선언 abstract class 추상클래스명{ abstract 리턴타입 추상메소드명(); 리턴타입 일반..
[Java]접근 권한 제어자 public, private, protected, default / getter, setter
접근 권한 제어자 다른 패키지 혹은 다른 클래스에서 해당 필드에 접근할 수 있는 범위(권한)을 설정해주는 키워드 (default) : 다른 패키지에서 접근 불가 public : 모든 곳에서 접근 가능 private : 다른 클래스에서 접근 불가 데이터 전송할 때, 보안을 위해서 설정(보통 데이터는 private 사용) 직접 접근할 방법이 하나도 없기 때문에 public 메소드를 통해서 간접적으로 접근할 수 있도록 한다. 값을 사용하는 경우 : getter / 수정하는 경우 : setter protected : 다른 패키지에서 접근 불가 / 단, 자식은 자기 필드처럼 사용가능 getter setter public 메소드를 통해 private 에 접근할 수 있도록 하는 기법 public class Test{..