공부 STUDY/JAVA

    [JAVA] java.util패키지 | 컬렉션 프레임워크(Collection Framework)

    [JAVA] java.util패키지 | 컬렉션 프레임워크(Collection Framework)

    컬렉션 프레임워크 java.util패키지에는 자료를 다룰 수 있는 자료구조 클래스가 다수 존재한다. 자료구조 클래스들을 컬렉션 프레임워크라고 한다. 자료구조란 자료를 저장할 수 있는 구조 책을 보관하기 위해서 책장을 이용하는 것처럼 다양한 자료들을 다양한 방식으로 관리하기 위한 방법이 필요한데, 이러한 방법을 제공하는 것을 자료구조, 컬렉션 프레임워크이다. 컬렉션 프레임워크에서 가장 기본이 되는 interface는 Collection인터페이스 Collection인터페이스는 여기에 자료가 있다라는 것을 표현. 중복도 허용하고, 자료가 저장된 순서도 기억하지 못하는 것이 Collection인터페이스. Collection이 가지고 있는 대표적인 메소드는 add(), size(), iterator() 메소드 C..

    [JAVA] StringBufffer, StringBuilder 사용법 & 차이점이 뭘까?

    [JAVA] StringBufffer, StringBuilder 사용법 & 차이점이 뭘까?

    자바에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer 그리고 StringBuilder가 있다. 비교적 간단한 연산을 수행할 시 어떤 클래스를 사용해도 OK 그렇지만 그 반대의 경우 (+ 멀티쓰레드) 에는 각 클래스의 특징을 이해하고 상황에 맞게 사용하는 것이 좋다. String - 불변의 속성 String str = "Hello"; str += "world"; 문자열 + 문자열이 가능한데 웬 불변? 이라고 생각이 들 수 있다. "Hello" 값이 들어있던 String 클래스의 참조변수 str이 추가된 문자열 "world"가 추가된 "Hello world"의 값으로 새로운 메모리 영역을 가리키게 변경되는 것이다. 그리고 처음에 선언했던 "Hello"로 할당된 메모리 영역은 갈비지..

    [JAVA] java.lang 패키지/오토박싱

    java.lang 패키지/오토박싱 자바는 기본적으로 다양한 패키지를 지원 그중에서 가장 중요한 패키지 java.lang패키지의 클래스는 import를 하지 않고도 사용할 수 있다. java.lang패키지에는 기본형타입을 객체로 변환시킬때 사용하는 Wrapper클래스가 있다. Boolean, Byte, Short, Integer, Long, Float, Double 클래스 모든 클래스의 최상위 클래스인 Object도 java.lang패키지 문자열과 관련된 String, StringBuffer, StringBuilder도 모두 java.lang패키지 화면에 값을 출력할때 사용했던 System클래스도 java.lang패키지 수학과 관련된 Math클래스도 java.lang패키지 Thread와 관련된 중요 클래스..

    [JAVA] Object 클래스, 오버라이딩

    [JAVA] Object 클래스, 오버라이딩

    Object 모든 클래스(객체)의 부모(조상) 부모가 없는 클래스는 자동으로 Object 클래스를 상속받는다. 결국 모든 클래스는 Object를 상속받기 때문에 Object클래스에 정의된 11개의 메서드를 상속받는다. (toString(), equals(Object obj), hashCode() ...) class Tv {} // 이 클래스는 자동적으로 Object 클래스를 상속받는다. class Tv extends Object {} // 같은 코드 class SmartTv extends Tv {} 메서드 toString() 클래스의 이름과 주소를 String으로 반환한다. "클래스이름@객체의 주소" 모든 클래스가 사용 가능하다. println()안에 인스턴스 참조변수의 값을 넣은 것과 같은 결과를 반환..

    [JAVA] 예외처리( exception handing ) - (3)사용자 정의 exception

    사용자 정의 Exception Exception 클래스를 상속 받아 정의한 checked Exception 반드시 오류를 처리 해야만 하는 Exception 예외 처리하지 않으면 컴파일 오류를 발생 시킨다. RuntimeException 클래스를 상속 받아 정의한 unChecked Exception 예외 처리하지 않아도 컴파일 시에는 오류를 발생시키지 않는다. RuntimeException을 상속받은 BizException객체 public class BizException extends RuntimeException { public BizException(String msg){ super(msg); } public BizException(Exception ex){ super(ex); } } BizServ..

    [JAVA] 예외처리( exception handing ) -(2)

    [JAVA] 예외처리( exception handing ) -(2)

    1. 프로그램 오류 프로그램 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생 시점에 따라 '컴파일에러( compile error )'와 '런타입에러( runtime error )'로 나눌 수 있는데 컴파일에러는 컴파일할 때 발생하는 에러이고 프로그램 실행 중에 발생하는 에러를 런타임에러라고 한다. 컴파일에러 컴파일 시에 발생하는 에러( 주로 문법 ) 런타입에러 실행 시에 발생하는 에러( 배열 범위 벗어남 ) 논리적에러 실행은 되지만 의도와 다르게 동작하는 것 자바에서는 실행 시( runtime ) 발생할 수 있는 프로그램의 오류를 에러( error )와 예외( exception ) 두 가지로 구분..

    [JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )

    [JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )

    내부클래스 내부 클래스란 클래스 안에 선언된 클래스 어느 위치에 선언하느냐에 따라서 4가지 형태가 있을 수 있다. 첫번째는 클래스 안에 인스턴스 변수, 즉 필드를 선언하는 위치에 선언되는 경우. 보통 중첩클래스 혹은 인스턴스 클래스라고 한다. 내부에 있는 Cal객체를 생성하기 위해서는, 밖에는 InnerExam1의 객체를 만든 후에 InnerExam1.Cal cal = t.new Cal();과 같은 방법으로 Cal객체를 생성한 후 사용한다. public class InnerExam1{ class Cal{ int value = 0; public void plus(){ value++; } } public static void main(String args[]){ InnerExam1 t = new InnerE..

    [JAVA] 인터페이스 (interface)

    인터페이스 만들기 인터페이스: 서로 관계가 없는 물체들이 상호 작용을 하기 위해서 사용하는 장치나 시스템 인터페이스 정의하는 방법 추상 메소드와 상수를 정의 할 수 있다. public interface TV{ public int MAX_VOLUME = 100; public int MIN_VOLUME = 0; public void turnOn(); public void turnOff(); public void changeVolume(int volume); public void changeChannel(int channel); } 인터페이스에서 변수를 선언하면 컴파일시 자동으로 아래와 같이 바뀐다. public static final int MAX_VOLUME = 100; public static final..

    [JAVA] 예외처리 (Exception) -(1)

    [JAVA] 예외처리 (Exception) -(1)

    Exception 프로그램실행중 예기치 못한 사건을 예외라고 한다. 예외 상황을 미리 예측하고 처리할 수 있는데, 이렇게 하는 것을 예외 처리라고 한다. public class ExceptionExam { public static void main(String[] args) { int i = 10; int j = 5; int k = i / j; System.out.println(k); System.out.println(main 종료!!); } } 위 코드에서 j를 0으로 바꾸면 Excption 발생 j를 0으로 바꾸면 ArithmeticException이 발생하면서 프로그램이 종료된다. Java는 정수를 정수로 나눌때 0으로 나누면 안된다.0으로 나누면 오류가 발생하는 것 예외 처리 프로그래머는 j라는 ..

    [JAVA] 가상 메서드(virtual method)

    [JAVA] 가상 메서드(virtual method)

    상속에서 상위 클래스와 하위 클래스에 같은 이름의 메서드가 존재할 때 호출되는 메서드는 인스턴스에 따라 결정된다. 선언한 클래스형이 아닌 생성된 인스턴스의 메서드를 호출하는 것. 인스턴스의 메서드가 호출되는 기술을 '가상 메서드(virtual method)'라고 한다. 가상메서드 자바의 클래스는 필드(멤버변수)와 메서드(멤버 함수)로 이루어져 있다. 클래스를 생성하여 인스턴스가 만들어지면 필드(멤버 변수)는 힙 메모리에 위치한다. 변수가 사용하는 메모리와 메서드가 사용하는 메모리는 다르다. 변수는 인스턴스가 생성될 때마다 새로 생성되지만, 메서드는 실행해야 할 명령 집합이기 때문에 인스턴스가 달라도 같은 로직을 수행해야 한다. 같은 객체의 인스턴스를 여러 개 생성한다고 해서 메소드도 여러개 생성되지 않는..