본문 바로가기

Java

(22)
Java- Object 클래스 Object 클래스 최상위 클래스로서 모든 클래스들은 Object 클래스의 상속한다. equals 메소드 참조값의 비교를 할 때에는 "==" 비교 연산자를 사용하고, 값의 비교를 할 때에는 equals() 메소드를 사용한다. class INum{ int num; INum(int num){ this.num = num; } @Override //Object 클래스 오버라이딩 public boolean equals(Object obj){ //매개변수의 타입이 Object이므로 어떠한 인스턴스든 참조가 가능하다. //equals 메소드는 단순히 값만 같은지 비교함 return this.num == ((INum) obj).num; } void isEquals(Object obj){ if(this.equals(ob..
Java- 예외처리 예외처리 try ~ catch 일반적인 예외처리처럼 try catch구문을 통해서 예외처리를 진행한다. import java.util.Scanner; public class DivideByZero { public static void main(String[] args) { Scanner sc = new Scanner(System.in); try{ int a = sc.nextInt(); int b = sc.nextInt(); //b = 0; System.out.printf("%d / %d = %d",a,b,a/b); } catch (ArithmeticException e){ e.printStackTrace(); } } } a>>>1 b>>>0 java.lang.ArithmeticException: / by..
Java- 인터페이스와 추상클래스 비교 추상클래스 추상클래스는 한개 이상의 추상 메소드를 가지고 있는 클래스로 추상 메소드를 가지고 있어 인스턴스를 생성할 수 없다는 것을 제외하면 일반적인 클래스와 다르지 않다. 추상클래스의 구현 추상 클래스는 아래의 예와 같이 구현이 가능하다. 추상 클래스와 추상 메소드 앞에 abstract 키워드를 붙여준다. abstract class AbsClass{ int i; double d; //일반적인 메소드를 가질 수 있다 AbsClass(int i, double d){ this.i = i; this.d = d; } int sum(int a, int b){ return a+b; } void print(String str){ System.out.println(">>>"+str); } //여러개의 추상 메소드를 가..
Java- interface 인터페이스 인터페이스는 추상메소드를 담고 있는 완전추상클래스 비슷한 놈으로 이해하자. 참고로 이놈은 추상메소드만 가지기 때문에 메소드의 몸체는 구현하지 않는다. 또한 몇가지 특징이 있는데... 인터페이스의 메소드는 자동으로 public 선언된다. 인터페이스의 변수는 public static final 선언된다.(인스턴스 없이도 호출가능한 상수취급임) 인터페이스 참조변수의 선언 인터페이스 형 참조변수의 구현도 가능하다. 또한 인터페이스 참조 변수는 자신을 구현한 클래스 인스턴스의 참조도 가능하다. 즉슨, 인터페이스 메소드의 오버라이딩도 가능하다. implements 키워드 인터페이스를 구현한 클래스는 인터페이스 내부의 모든 메소드를 구현해야한다. 또한 인터페이스를 클래스에 구현할 때에는 implements..
Java- Object 클래스 모든 클래스는 Object 클래스를 상속한다. 클래스를 정의시 어떠한 클래스도 상속하지 않는다면 해당 클래스는 Object 클래스를 상속하게 된다. 예를들어... class AAA{} ..(1) class AAA extends Objects{} ..(2) (1)과 (2)는 동일하다. 그리고 다른 클래스를 상속받는 서브클래스들도 부모 클래스는 상속을 받지 않았으므로 간접적으로 Objects 클래스를 상속받게 된다. Object 클래스를 상속받는 목적 그렇다면 Object 클래스를 상속받는 이유는 뭘까? 이는 자바의 모든 인스턴스에 공통된 기준 및 규약을 적용하기 위함이다. 우리가 사용하는 System.out.println 메소드의 매개변수 자료형을 보면 알 수 있다. "public void println(..
Java- 상속 extends 자바에서 상속을 하는 경우 extends 키워드를 통해서 상속을 한다. 생성자 실행순서 상속받은 서브클래스의 인스턴스가 생성이 된다면 부모클래스의 생성자가 먼저 실행된 후 서브클래스의 생성자가 실행된다. super 키워드 super를 통해서 상위클래스의 생성자를 명시적으로 호출할 수 있다. 여기서 중요한 것은 상위클래스의 범위가 바로 직전까지로 한정된다는 것이다. 예를 들어 총 10개의 상위클래스가 있는 클래스 A가 있다고 하면 super로는 총 9번의 상속을 받은 바로 위의 클래스의 생성자만 실행이 가능하다는 것이다. 상위 클래스에 여러개의 생성자가 존재하는 경우 기본생성자를 호출하기 위해선 굳이 super키워드를 사용하지 않고 생략해도 되지만, 특정 매개변수 생성자를 호출하기 위해선 s..
Java- 배열 배열의 생성 //둘다 가능 int[] arr1 = new int[5]; int arr2[] = new int[5]; 배열을 생성하는 방법은 위와 같다. 중괄호 위치는 둘다 가능하다. 배열은 여러개의 인스턴스를 생성하지 않는다 int iArr[] = new int[10]; //10개의 int형 데이터를 담을 수 있는 참조변수 10개 생성 String[] sArr = new String[5]; //5개의 String형 인스턴스를 담을 수 있는 참조변수 5개 생성 IMadeClass cArr[] = new IMadeClass[20]; //20개의 IMadeClass 인스턴스를 담을 수 있는 참조변수 20개 생성 배열 그 자체로는 배열 인스턴스가 맞지만, arr[1], arr[2] .. 처럼 각각의 공간이 인스..
Java- 콘솔 입출력 콘솔 출력 System.out.println( )의 이해 public class toStringPractice { public static void main(String[] args) { StringBuilder stb = new StringBuilder("123"); System.out.println(stb.toString()); System.out.println(stb); //위와 동일한 결과 stb.append(4567); System.out.println(stb.toString()); System.out.println(stb); } } 123 123 1234567 1234567 일반적인 문자열 출력 메소드인 System.out.println( )은 문자열을 출력하는 메소드인데, System.out..