자바 50

[java] Wrapper(래퍼) 클래스

java.lang 패키지에 속함 기본자료형을 객체로 포장해주는 클래스들을 래퍼클래스라고 함 -언제쓰냐? 1. 기본자료형을 객체로 취급해야 하는 경우 2. 메소드 호출 시, 메소드의 매개변수로 기본자료형이 아닌 객체타입만 요구 될 때 3. 다형성을 적용시키고 싶을 때 - Boxing(박싱) : 기본 타입의 값을 포장 객체로 만드는 과정 1. 생성자를 이용해여 박싱 ex) Byte obj = new Byte(10); ※deprecated; 가급적이면 사용하지말아라, 앞으로의 버전에 삭제될지도 모를 코딩법. Byte obj = new Byte("10"); ※deprecated; 2. 래퍼클래스마다 가진 static메소드인 valueOf()메소드 활용. 위의 생성자를 이용한 박싱보다 이렇게 박싱하길 추천 ex)..

*JAVA* 2021.11.20

[java] IO 스트림

java.io. 패키지에 존재 프로그램 상의 데이터를 외부매체(모니터, 스피커, "파일")로 출력하거나 입력장치(키보드, 마우스, 마이크, "파일")로 입력받는 과정 => IO(Input & OutPut, 입출력) IO를 진행하고 싶다면 우선적으로 "반드시" 프로그램과 외부매체와의 "통로"를 만들어야한다. => "스트림" (Stream) 스트림의 특징 - 단방향 : 입력이면 입력, 출력이면 출력 입력용 스트림 따로, 출력용 스트림이 따로 존재 동시에 입출력을 하고자 한다면? -> 하나의 스트림으로는 불가능!!! -> 입력, 출력 스트림 둘다 갖고있어야함 - 선입선출(FIFO) : 먼저 전달한값이 먼저 나오게됨 (먼저들어간놈이 먼저 나온다.) => 큐(Queue) (순서대로 들어가서 나온다.) 시간지연 문..

*JAVA* 2021.11.18

[java] API - java.lang 패키지

java.lang 패키지는 자바 프로그램의 기본적인 클래스를 담은 패키지이다. java.lang 패키지는 클래스와 인터페이스는 import없이 사용할 수 있다. API(Application Progaramming Interface) : 프로그램 개발에 자주 사용되는 자바에서 제공하는 클래스 및 인터페이스 모음 자바 라이브러리라고도 함 => 한마디로 내가 생각하는 API는 자바언어를 사용하면서 개발자들이 코딩을 쉽게 할 수 있도록 만들어 놓은 모음집. *java.lang 패키지 안에 있는 중요 클래스들* 모든 클래스의 최상위 부모 클래스 Object의 메소드는 모든 자바 객체에서 사용 가능 1. equals(Object obj) : 객체를 비교할때 사용. '=='과 같이 객체주소를 비교해서 boolean으..

*JAVA* 2021.11.16

[java] 예외(Exception)

에러(오류)의 종류 - 시스템 에러 : 컴퓨터의 오작동으로 인해 발생하는 에러 => 소스코드로 해결이 안됨(심각한) - 컴파일 에러 : 프로그램 실행 전 소스코드상의 문법적인 문제로 발생하는 에러 => 소스코드 수정으로 해결(빨간줄로 오류 알려줌) - 런타임 에러 : 프로그램 실행 중 발생하는 에러 소스코드상 문법적인 문제가 없는데 발생!!!! => 개발자가 예측 가능한 경우 제대로 처리를 안해놓았을 경우 => 사용자의 잘못일 경우도 있음 - 논리 에러 : 소스코드상 문법적인 문제도 없고, 실행했을 때도 굳이 문제가 발생하진 않지만 프로그램 의도상 맞지 않는 것(기획가 설계가 잘못되었을 경우 발생) 예외 : 시스템에러를 제외한 나머지 컴파일, 런타임, 논리에러와 같은 비교적 덜 심각한 에러들 특히 런타임..

*JAVA* 2021.10.30

[java] 인터페이스(Interface)

추상메소드의 집합 구현된 것이 전혀 없는 설계도, 껍데기(모든 멤버가 public) 객체생성은 불가하나 참조변수 타입으로는 OK. *추상클래스(abstract)와 인터페이스의 차이점* 추상클래스는 일반 클래스인데 추상메소드를 갖고 있는 것일 뿐이다. (변수, 생성자, 일반 메소드도 다 갖고 있다.) 인터페이스는 추상메소드, 상수필드 이외엔 갖고 있는 것이 없다. 따라서 선언부인 'public static final' 과 'public abstract' 가 생략 가능하다! 인터페이스의 상속 인터페이스이 조상은 인터페이스만 가능(Object가 최고 조상X) 다중상속 가능(추상메소드는 충돌해도 문제 없다; {몸통}이 없기 때문에 무얼 상속받아도 OK) implements 키워드로 인터페이스를 구현하다. 다중상..

*JAVA* 2021.10.29

[java] 추상클래스(abstract)

- 미완성 설계도. 미완성 메소드란 추상메소드(즉, {몸통}이 없는 미완성 메소드)를 갖고 있는 클래스. - abstract 라는 예약어를 사용해서 정의해야함 - 다른 클래스 작성에 도움을 주기 위한것. - 인스턴스는 생성 불가 => 미완성 설계도 이므로 제품생성불가이다! -'상속을 통해 메소드를 완성해야 객체 생성이 가능하다. 부모클래스 구실 가능 => 상속받는 클래스가 추상 메소드의 {코드블럭}을 구현해주면 그때서야 객체 생성이 가능하다. - 추상화된 코드는 구체화된 코드보다 유연. 변경에 유리 (불명확하고 애매,,, 말바꾸기 쉽,,,) - 언제쓰냐? 개발자의 역량 개념적으로 개발자가 판단했을 때 해당 클래스가 아직 구체적으로 덜 구현된 상태인것 같다. 기술적으로 개발자가 판단했을 때 이 클래스는 객..

*JAVA* 2021.10.29

[java] instanceof

참조변수 형변환 가능여부 확인에 사용. 가능하면 true 를 반환. (자기자신 이거나 조상에 대해) 조상 ↔ 자식 1 2 3 4 5 6 7 void dowork(Car c){ if (c instanceof (FireEngine)) { FireEngeine fe = (FireEngine)c; fe.water(); } } Colored by Color Scripter Car 클래스가 조상, FireEngeine이 자식 상속받은 객체라 가정한다. 메소드 dowork의 매개변수로는 Car타입 자기자신이나, Car타입의 자손들이 들어올 수 있다. if문에서 instanceof연산자는 'c가 가리키는 객체가 FireEngeine이냐?' 라고 묻는것이다. 참이면 (FireEngeine)으로 형변환해서 fe는 wate..

*JAVA* 2021.10.29

[java] 다형성

- 상속을 이용한 기술 - 여러가지 형태를 가질 수 있는 능력 - ★부모타입 참조변수로 자식타입 객체를 다루는 것★ Tv 클래스가 조상, SmartTv클래스가 Tv클래스를 상속받았을때 1 2 3 SmartTv s = new SmartTv(); // 참조변수와 객체의 타입 일치 Tv t = new SamrtTv((); // 조상 타입 변수로 자손타입 객체 참조 cs - 자식타입의 참조변수로 부모타입의 객체를 가리킬 수 없다. => 실제 사용할 수 있는(그 안의 변수, 메소드)외에 자식타입에만 있는 변수나 메소드는 부모타입으로 호출이 불가능 하기 때문 1 2 3 Tv t = new SamrtTv((); // OK SmartTv s = new SmartTv(); // Error cs Q. 참조변수 타입은 인스..

*JAVA* 2021.10.27

[java] 오버라이딩(overriding)

- 상속받고 있는 부모클래스의 메소드를 자식클래스에서 재정의(재작성) 하는 것 - 부모클래스가 제공하고 있는 메소드를 자식이 일부 고쳐서 사용하겠다는 의미 - 자식클래스의 오버라이드 된 메소드가 우선권을 가져서 호출된다. 오버라이딩의 성립조건 부모메소드의 메소드명과 동일 매개변수의 자료형, 갯수, 순서가 동일(매개변수명과는 무관) 반환형이 동일 부모메소드의 접근제한자와 같거나 공유범위가 더 넓어야 한다. (좁은 범위로 변경불가) Object 클래스의 toString()을 오버라이딩했다. 원래 toString() 메소드는 해당 객체의 풀클래스명 + @ + 해당객체의 주소값(16진수의 형태) 형태로 반환 해준다. 그러나 위에서처럼 자식객체가 다시 재정의 해주면 저위에 작성한대로 출력 결과물이 나오게된다. ※..

*JAVA* 2021.10.27

[java] 상속(inheritance)

매 클래스마다 중복된 필드, 메소드들을 단 한번 또 하나의 클래스(부모클래스)로 정의해둔 후 해당 클래스의 내용을 가져다 쓰는 개념 ★기존의 클래스를 이용해서 새로운 클래스를 만든다!★ SmartPhone 클래스는 Product를 상속한다. 상속의 특징 - 클래스간의 다중상속이 불가능하다.(단일 상속만 가능) Why? 부모가 여럿이면 똑같은 이름의 메소드가 여러부모에게 있을경우, 둘 중 어떤 메소드를 상속받아야 할지 몰라서 충돌이 발생하기때문 - 명시되어 있지는 않지만 모든 클래스는 'Object'클래스의 후손이다. (모든 클래스 : 내가 만든 클래스들, 자바에서 이미 제공하고 있는 클래스) => Object클래스에 있는 메소드를 호출해서 쓸 수 있음. => Object클래스에 있는 메소드가 마음에 안들..

*JAVA* 2021.10.27