본문 바로가기
반응형

👨‍💻 2. 웹개발_Back end/2-1 Java33

[JAVA] 11-2 java.util 패키지 Date 클래스 package system; import java.io.IOException; public class KeyboardToStringExample { public static void main(String[] args) { byte[] bytes = new byte[100]; System.out.println("입력: "); try { // 배열에 읽은 바이트를 저장하고 읽은 바이트 수를 리턴 int readByteNo = System.in.read(bytes); // 배열을 문자열로 변환 String str = new String(bytes, 0, readByteNo - 2); System.out.println(str); } catch(IOException e) { e.printStack.. 2021. 8. 13.
[JAVA] 11-1 java.lang 패키지 자바 API 도큐먼트 - API (Application Programming Interface) : 프로그램 개발에 자주 사용되는 클래스와 인터페이스의 모음을 말하며 라이브러리라고도 부름 - String 클래스와 System 클래스도 모두 API에 속하는 클래스임 - API 도큐먼트 : 방대한 자바 표준 API 중에서 우리가 원하는 API를 쉽게 이용할 수 있도록 도와줌 자바 API 도큐먼트 읽는 방법 1 - URL 방문 자바 API 도큐먼트 읽는 방법 2 - 이클립스 이용하기 - String을 마우스로 클릭한 후 F1 누르기 API 도큐먼트에서 클래스 페이지 읽는 방법 - SUMMARY 에서는 이 String 클래스에 어떤 멤버들이 선언되었는지 알려준다. - Nested : 링크가 안달려있으므로 Nes.. 2021. 8. 13.
[JAVA] 10-2 예외 처리 컴파일시 일반 예외 vs 실행 예외 차이점 - 일반 예외가 발생할 가능성이 있는 코드는 빨간줄로 컴파일 에러를 발생시켜 예외처리 코드의 필요성을 알려줌 - 이 때 빨간 줄에 커서를 대면 Unhandled exception (처리되지 않은 예외)라고 뜬다. - 실행 예외는 컴파일러가 그냥 넘겨버려서 컴파일에러는 뜨지않으므로 개발자가 경험을 토대로 예외 처리 코드를 작성해야한다. 예외 처리 코드 구조 try { 예외 발생 가능성이 있는 코드 작성 } catch(예외클래스 e) { - 예외가 발생하지 않은 경우 : catch 블록은 실행되지 않음 - 예외가 발생한 경우 : 즉시 실행을 멈추고 catch 블록의 예외 처리 코드 실행한 후 finally 블록 실행 } finally { - 생략 가능한 구역 - 예.. 2021. 8. 11.
[JAVA] 10-1 예외 클래스 에러(error)와 예외(exception)의 차이 - 에러(error) : 응용프로그램 실행 오류가 발생하는것 - 예외(exception) : 개발자의 잘못된 코딩으로 인해 발생되는 프로그램 자체 오류 ( 컴파일 오류가 아니라 빨간 줄도 안나오는데 실제로 실행해보면 Exception~라고 뜨면서 프로그램이 종료되는 현상) - 공통점 : 에러든 예외든 한 번 발생이 되면 프로그램이 곧바로 종료됨 - 차이점 : 예외는 예외처리라는 것을 통해 프로그램이 종료되지 않고 정상 작동할 수 있도록 유지해준다. - 예외처리 : 코드를 보면 아무 이상이 없어 보이지만 실제로 실행해보면 논리적인 오류가 있음을 사용자가 인지하도록 오류를 명시해주는 행위 대표적인 예외 발생 예시 - 분모가 0일때 나눗셈 발생되는 오류의 종.. 2021. 8. 11.
[JAVA] 09-2 익명 객체 익명 객체란 ? - 말 그대로 이름이 없는 객체이다. - 보통 우리는 클래스를 생성하고 여러 곳에서 그 클래스를 가지고 객체를 만든다. - new 연산자를 통해 클래스이름으로 생성자를 호출하는 방법을 사용한다. - 여기서 우리는 여러 곳에서 사용하지 않고 오로지 특정 위치에서만 사용하고 싶을 때가 있다. - 그 한 번의 사용을 위해 굳이 클래스를 만들어 사용하는 것은 귀찮은 일이다. - 이럴 때 우리는 익명 객체를 사용하여 클래스를 명시적으로 선언하지 않고 바로 객체를 생성할 수 있다. - 인터페이스를 구현할 때도 익명 객체 생성 가능 일반적인(명시적으로 선언) 객체 생성 방법과 익명 자식 객체 생성 방법의 차이점 - 명시적인으로 객체 생성 방법 class Parent {} // 부모 클래스 생성 cla.. 2021. 8. 11.
[JAVA] 09-1 중첩 클래스와 중첩 인터페이스 소개 중첩 클래스 - 클래스 내부에 선언하는 클래스를 말함 - 중첩 클래스를 통해 두 클래스 멤버들이 서로 쉽게 접근할 수 있음 - 클래스 안에 클래스를 정리할 수 있어서 정리가 되어 코드의 복잡성을 줄일 수 있음 - 클래스 내부에 인터페이스를 선언하면 그것은 중첩 인터페이스임 (해당 클래스의 구현 클래스를 만들기 위해 선언) 중첩 클래스의 종류 - 멤버 클래스 : 클래스의 멤버로서 선언됨 -> 클래스나 객체가 사용 중일 때는 언제든 재사용 가능 멤버 클래스 안에서는 인스턴스 멤버 클래스(static이 붙지 않음)와 정적 멤버 클래스(static이 붙음)로 나뉜다. - 로컬 클래스 : 생성자나 메소드 내부에 선언됨 -> 해당 메소드를 실행할 때만 사용 가능 바이트 코드 파일 이름 - 중첩 클래스도 클래스의 일.. 2021. 8. 11.
[JAVA] 08-2 타입 변환과 다형성 인터페이스의 다형성 - 다형성을 구현하기 위해 필요한 2가지 : 메소드 재정의와 타입 변환 - 상속과 마찬가지로 인터페이스에서도 이 두 가지 기능이 제공됨 - 상속과 차이점 : 상속은 같은 종류의 하위 클래스 생성, 인터페이스는 사용 방법이 동일한 클래스를 만드는 기술 - 인터페이스의 다형성이 필요한 이유 : 소스 코드의 변함 없이 구현 객체를 빠르고 쉽게 교체하기 위해서이다 - 이를 통해 구현 객체를 쉽게 교체하여 실행 결과가 다양해져 인터페이스의 다형성을 이루게 됨 - 구현 객체 교체 예시 interface I { // 인터페이스 생성 void method1(); void method2(); } // I i = new A(); // 이 코드를 아래 코드로 수정함 I i = new B(); i.meth.. 2021. 8. 11.
[JAVA] 08-1 인터페이스 인터페이스란 ? - 기능 사용을 위한 규약 - 객체의 사용 방법을 정의한 타입 - 다양한 객체를 동일한 방법으로 이용할 수 있게 해줌 - 개발 코드에서 인터페이스의 메소드를 호출하면 이제 인터페이스가 객체의 메소드를 호출시킴 - 개발 코드를 수정하지 않고 객체를 변경할 수 있게 하여 개발 코드 측면에서 실행 내용과 리턴 값을 다양화할 수 있다. 인터페이스 선언 1. 특징 - 클래스와 규칙이 동일함 (대문자로 시작) - 상수 필드와 추상 메소드만을 멤버로 가진다. ( 객체를 생성할 수 없기 때문에 생성자는 가질 수 없음) - 인터페이스는 객체 사용 방법만 정의한 것이므로 인스턴스나 정적 필드를 선언할 수 없다. (상수 필드는 고정된 값이므로 선언이 가능) - 최종 실행은 객체에서 실행되므로 인터페이스에서 .. 2021. 8. 9.
[JAVA] 07-3 추상 클래스 추상 클래스의 의미 - 실체들의 공통되는 특성을 가지고 있는 클래스를 의미하며 규격(기준) 클래스라고도 부른다. - 실체 클래스(자식)와 추상클래스(부모)는 상속의 관계를 가지고 있음 - 실체 클래스는 추상 클래스의 모든 특성(필드, 메소드)을 물려받고 추가로 다른 특성을 가질 수 있음 - Dog 클래스와 Cat 클래스에서 공통으로 사용된 필드나 메소드를 따로 Animal 클래스에다가 만들 수 있음 추상 클래스를 사용하는 목적 2가지 1. 시간 절약 - 집전화기와 스마트폰 모두 사용자라는 데이터와 전원이라는 기능이 필요한데 이를 각각에 만들어주면 일이 2배로 늘어나게된다. - 따라서 전화 라는 추상 클래스를 만들어 거기에 사용자와 전원을 만들어주면 그걸 불러쓰면 되기 때문에 일이 수월해진다. 2. 이름 .. 2021. 8. 6.
[JAVA] 07-2 타입 변환과 다형성 다형성 간단히 설명 - 다형성 : 다양한 객체를 통해 다양한 실행결과를 출력시킴 - 다형성의 예 : 모든 타이어는 달리게 해주는 기능이 들어있지만 어떤 타이어를 장착하느냐에 따라 주행 성능이 달라짐 - 예를 들어 자동차는 한국타이어와 금호타이어 중에서 타이어 타입을 선택하고 각 타이어 마다 성능은 다르게 나온다. - 다형성을 구현하려면 메소드 재정의 + 타입변환이 필요하다. 자동 타입변환 - 클래스에서의 타입 변환은 상속 관계에 있는 클래스 사이에서 발생하며 자식이 부모 타입으로 자동 변환이 가능하다. - 자동 타입 변환 (=promotion)은 프로그램 실행 도중에 자동적으로 일어나는 타입 변환을 말함 - 자동 타입 변환 형태 : 부모타입 변수 = 자식타입; - 자동 타입 변환 개념 : 자식이 부모의 .. 2021. 8. 5.
[JAVA] 07-1 상속 클래스 상속 - 형태 : class 자식클래스 extends 부모클래스 { 필드, 생성자, 메소드 } - 단 하나의 부모클래스만 올 수 있다. - 부모클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 불가 - 다른 패키지인 경우, default 접근 제한을 갖는 필드와 메소드 또한 상속 불가 클래스 상속 예제 public class CellPhone { // 필드 String model; String color; // 생성자 //메소드 void powerOn() {System.out.println("전원을 켭니다.");} void powerOff() {System.out.println("전원을 끕니다.");} void bell() {System.out.println("벨이 울립니다.");}.. 2021. 8. 4.
[JAVA] 06-6 패키지와 접근 제한자 패키지 선언 - 형태 : package 상위패키지.하위패키지; - 패키지 : 클래스의 일부임. 그 이유는 패키지 내의 클래스가 다른 패키지로 옮겨졌을 경우 사용이 불가능하기때문 - 명명 규칙 1. 숫자로 시작할 수 없음 2. 특수문자는 _와 $만 가능함 3. java로 시작할 수 없음 -> 자바 표준 API에서만 사용할 수 있어서 4. 소문자로 작성해야함 (그저 관례일뿐) - 보통 회사에서는 도메인 이름의 역순으로 패키지 이름을 설정해줌. 더 포괄적인게 상위 패키지가 되도록 하기위해서 예) package.com.samsung.projectname; 이클립스에서 패키지와 클래스 생성하는 법 - 패키지 생성하는 법 : src 폴더 선택 > 마우스 우클릭 > [File] > [New] > [Package] -.. 2021. 8. 4.
[JAVA] 06-5 인스턴스 멤버와 정적 멤버 인스턴스 멤버 vs 정적멤버 - 메모리 낭비를 줄이기위해 필드를 각 객체마다 갖게 하는 것이 아니라 한 곳에 모아놓고 객체들이 공유하도록 한다. - 인스턴스 멤버 : 객체마다 가지고 있는 멤버 - 정적 멤버 : 클래스에 위치하며 객체들이 공유하는 멤버 인스턴스 멤버 - 인스턴스 멤버란, 객체(인스턴스)를 생성하고 나서 사용할 수 있는 필드와 메소드를 말함 - 각각 인스턴스 필드와 인스턴스 메소드라고 불림 (이전까지 배운 것들이 모두 인스턴스 멤버임) - 인스턴스 필드와 인스턴스 메소드는 모두 객체에 소속된 멤버이므로 객체가 있어야만 사용이 가능함 인스턴스 멤버 선언 및 호출 public class Car4 { // 인스턴스 필드 선언 int gas; // 인스턴스 메소드 선언 void setSpeed(i.. 2021. 8. 3.
[JAVA] 06-4 메소드 메소드 선언부 ** 형태 리턴타입 메소드이름 ( 매개변수 선언 ) { 실 행 코 드 } ** 종류 1. 리턴 타입 : 리턴값(=메소드를 실행하고 난 후에 나오는 결과값)의 타입을 말함 - 리턴값이 없는 메소드는 리턴타입을 void로 기술한다. 메소드 호출 시 단순히 메소드만 호출하면 된다. - 리턴값이 있는 메소드는 리턴타입에 해당 타입을 기술하며, 이 경우에는 값이 나오므로 메소드 호출 시 저장할만한 변수를 하나 선언해주어야한다. - 하지만 리턴값이 별로 중요하지않고 메소드 실행 자체가 중요할 경우, 변수를 굳이 선언하지 않고 메소드를 호출할 수 도 있다. 2. 메소드이름 (식별자 규칙) - 어떤 기능을 담고 있는지 쉽게 알 수 있도록 이름 짓기 - 숫자로 시작할 수 없다. - 특수문자 사용시 $와 _.. 2021. 8. 2.
[JAVA] 06-3 생성자 객체 사용 단계 1. 라이브러리 파일에서 생성자 선언 2. 실행 파일에서 new 연산자를 통해 생성자 실행 3. 힙 영역에 객체가 생성됨 4. 객체의 번지가 리턴되면서 클래스 변수에 저장됨 기본 생성자 - 생성자란 ? 객체의 초기화 담당 - 클래스는 항상 생성자를 가진다. - 생성자 선언 생략 시 컴파일러가 자동으로 기본 생성자를 만들어준다. - 기본 생성자 앞에 public이 붙을지에 대해서는 해당 클래스를 따라간다. 해당 클래스가 public 으로 선언되면 기본 생성자도 public이 붙는다. - 기본 생성자가 자동으로 생성되는데도 굳이 생성자를 명시적으로 선언하는 이유는 객체를 다양한 값으로 초기화하기 위함이다. 생성자 선언부 - 형태 : 클래스 이름 (매개변수 선언 부분) - 매개변수 : new .. 2021. 8. 2.
반응형