Java/Java이론
[Java] 자바로 링크드 리스트 구현하기(Implementing Linked List with Java)
자바는 포인터가 없기 때문에 C언어와 같이 포인터를 사용한 링크드 리스트는 구현할 수 없다. 그러나 클래스 디자인을 통해 유사하게 구현할 수 있다. 또는 Collection 안에 내재되어있는 LinkedList 자료구조를 사용해도 된다. 컬렉션 사용은 아래 참조 https://cuddlyciel.tistory.com/34 [Collection] List컬렉션 - ArrayList, LinkedList List컬렉션 -객체를 일렬로 늘어놓은 구조 -객체를 인덱스로 관리 -> 객체를 저장하면 자동 인덱스가 부여 -인덱스로 객체를 검색, 삭제할 수 있는 기능 제공 List컬렉션의 공통사용 가능한 메소드 기능 메소드 설.. cuddlyciel.tistory.com 자바로 구현된 코드 class Node { pr..
[Java 문법] 제네릭 (Generic)
제네릭이란 처리해야 할 자료형을 객체 생성시점에서 정의하기 위해 사용하는 자바 문법이다. // 제네릭 /* class Generic { // int 형밖에 못 받아버림 private int a; private int b; public Generic(int a){ this.a = a; } public void setA(int a){ this.a = a; } public void setB(int b){ this.b = b; } public int getA(){ return a; } } class Generic { // 이렇게 오브젝트로 모든 객체 자료형을 다 받으면 문제가 많아짐. ex) 연산이 있는 크래스에 문자열, 문자를 넣으면 에러남 // 그래서 제네릭을 통해서 받을 수 있는 객체를 제한시켜 버림. p..
[Java 문법] 예외 처리(Exception)
예외란 '일반적 규칙이나 정례에서 벗어나는 일' 이라는 사전적 의미를 가지고 있다. 자바에서도 마찬가지다. 코드를 실행하면서 내부적으로 정해놓은 규칙에 어긋나면 에러 혹은 경고가 발생하는데, 이를 처리하는 방식을 통칭해서 예외라고 한다. 예외에는 3가지 종류가 있다. 에러가 없는 예외와 에러가 있는 예외, 사용자 정의 예외이다. 예외는 다음과 같은 특징을 가지고 있다. - RuntimeExcption을 상속받은 클래스들은 에러가 나지 않는 예외들이다. - Exception 클래스는 모든 예외 클래스들의 조상이다. (모든 예외를 처리한다.) - Throwable 클래스는 예외와 에러 클래스들의 조상이다. (모든 예외와 에러를 처리한다.) 예외를 처리하는 방법은 2가지가 있는데, 예외를 잡는 방법 (Try ..
[Java 문법] 패키지 (Package)
자바는 기본적으로 '패키지' 단위로 소스코드가 관리된다. 패키지란 쉽게 얘기해서 같은 '폴더' 혹은 '디렉토리' 라고 생각하면 편하다. 그러나 일반적으로 사람들이 많이 사용하는 IDE 인 Eclipse에서는 이를 자동적으로 관리해준다. 패키지가 어떻게 구성되고 동작하는지 알아 둘 필요가 있다. 아래의 그림을 우선 확인해보자. 여기서 패키지1, 2라는 용어가 나온다. 즉, 같은 폴더냐 아니냐를 묻는 것이다. Public 은 다른 폴더의 클래스를 사용할 수 있다는 의미이고 default 의 경우 디렉토리가 다르면 접근할 수 없다는 의미가 된다. 그러나 여기서 조심해야 할 부분이 있다. 다른 폴더, 디렉토리라면 아무리 Public 접근 제한자를 가지고 있다고 하더라도 Import 를 꼭 해주어야 한다. 아래의..
[Java 문법] 내부 클래스 (Inner Class)
내부 클래스란, 클래스 내부에서 정의되는 클래스를 의미하며, 4가지의 경우가 존재한다. 1. 멤버 내부 클래스 1) 멤버 변수나 멤버 메소드와 같이 클래스가 정의된다. 2) 외부 클래스의 멤버를 참조할 수 없다.( 반대의 경우는 가능) 3) static 변수를 가질 수 없다. (외부의 객체도 생성이 안되었기 때문) 4) 객체를 생성하기 위해서는 외부 클래스 객체를 먼저 생성해야 한다. 2. 로컬(지역) 내부 클래스 - 잘 사용되지는 않음 1) 특정 메소드 내부에 클래스가 정의된 경우 2) 간단한 기능을 가지는 임시 클래스로 사용된다. 3) 메소드 내부에서 선언되고 메소드 안에서만 객체화 할 수 있다. 4) 메소드 외부에서는 사용할 수 없다. 5) 접근 제한자를 사용할 수 없다. 3. 정적(Static) ..
[Java 문법] 다형성 (polymorphism)
단형성 체계를 가진 언어에서는 함수는 각각 한가지 의미로 식별되는 이름과 결합되어 있어 다른 동작을 구현하기 위해서는 다른 이름을 써야 한다. 예를 들어 어떤 값을 문자열 형식으로 변환하는 단순한 경우를 생각해보자. 다형성 형태 체계를 가지지 못하면 다음과 같이 개별 함수로 되어 있을 것이다. 숫자를 문자열로 바꾸는 경우 string = StringFromNumber(number); 날짜를 문자열로 바꾸는 경우 string = StringFromDate(date); 한편 다형성 체계를 가진 언어에서는, StringValue와 같은 범용 메소드 이름을 정의하여 형태에 따라 각각 적절한 변환 방식을 정의해둠으로써 객체의 종류와 상관없는 추상도가 높은 변환 형식을 구현할 수 있다. 숫자를 문자열로 바꾸는 경우..