Java 40

자바 프로그래밍 (Java) - 40 : length, charAt 메서드

3) length, charAt 메서드 String 클래스는 많은 메서드를 제공한다. 그 중 많이 사용되는 것이 length와 charAt이다. length 메서드는 String 클래스 인스턴스의 문자 개수를 return하고, charAt은 문자열의 index로 각 문자를 접근하여 return한다. public class Hello { public static void main(String[] args) { String str = "Hello"; System.out.println(str + " 문자열의 길이 : " + str.length()); for(int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); } } } 출력 결과 Hell..

Java 2016.07.15

자바 프로그래밍 (Java) - 39 : 문자열 비교 메서드 equals (==와 equals의 차이)

2) 문자열 비교 메서드 equals ( ==와 equals의 차이 ) String 클래스는 문자열을 비교하는 메서드인 equals를 제공한다. equlas의 syntax는 다음과 같다. str1.equals(str2) // str1과 str2의 문자열을 비교한다. 이는 ==와 분명 차이가 있다. ==은 두 피연산자의 메모리 주소가 같은 지 판단하는 것 이기 때문이다. 아래 예제는 ==와 equals의 차이를 명확히 보여준다. str1과 str2가 같은 메모리를 가리키고 있는 것을 볼 수 있다. 이는 두 레퍼런스가 같은 문자열인 “Hello”를 가리키고 있기 때문이다. 반면 str3과 str4은 다른 메모리를 가리키고 있는 것을 볼 수 있다. 이는 new 키워드를 통해서 String 객체를 생성했고 따라..

Java 2016.07.15

자바 프로그래밍 (Java) - 38 : String 클래스 (String 클래스 인스턴스 생성)

- String 1) String 클래스 인스턴스의 생성 자바 프로그램에 있는 모든 문자열은 String 클래스의 객체로 표현된다. 문자열 리터럴은 컴파일 후에 String 클래스의 객체가 된다. public class Hello { public static void main(String[] args) { String str1 = "Hello"; String str2 = new String("Java"); } } 위의 예제는 String클래스의 객체를 만드는 두 가지 방법을 나타낸 것이다. 첫 번째 String str1 = “Hello”는 “Hello”라는 문자열을 만들고, 그후에 같은 문자열을 가리키는 객체는 모두 같은 “Hello”를 가리키도록 한다. 두 번째 String str2 = new Stri..

Java 2016.07.15

자바 프로그래밍 (Java) - 37 : 접근 제한자 (access modifier)

- 접근 제한자 클래스의 기본 접근 제한자는 default이다 다음은 접근 제한자에 따른 접근 레벨을 표로 정리한 것이다. Modifier Class Package Subclass 나머지 public Y Y Y Y protected Y Y Y N no modifier Y Y N N private Y N N N 1) protected와 private은 클래스의 멤버에만 사용할 수 있다. (즉 클래스에 사용 불가). 2) protected와 default는 다른 패키지의 클래스를 상속하는 경우에서만 차이가 난다. 3) 메서드 오버라이딩 시 오버라이딩하는 메서드의 접근 허용 범위가 슈퍼 클래스 메서드의 접근 허용 범위보다 크거나 같아야 한다. 4) 인터페이스의 메서드는 명시하지 않아도 무조건 public이고,..

Java 2016.07.14

자바 프로그래밍 (Java) - 36 : 패키지와 import

- 패키지의 개념 클래스와 인터페이스를 묶는 단위이다. 패키지의 명명 규칙은 다음은 잘못된 패키지 이름의 예이다. graphics.3d // 처음에 숫자가 올 수없다. mall.interface.sales // interface는 식별자다. java // 이미 존재하는 패키지 이름이다. java.account // 이미 존재하는 패키지 이름이다. 패키지를 이름 짓는 것은 일반적으로 회사의 도메인 주소를 이용한다. 그것은 도메인 주소가 고유 값이기 때문이다. 가령 dukesoft.co.kr이란 도메인 이름을 갖는 회사의 패키지는 kr.co.dukesoft…과 같이 이름 지을 수 있다. - import import 선언문은 다른 패키지에 속하는 클래스나 언터페이스를 패키지 이름 없이 사용할 수 있도록 만든다..

Java 2016.07.14

자바 프로그래밍 (Java) - 35 : 열거 타입 (enum type)

- 열거 타입 (enum type) 1) 열거 타입의 개념과 사용 방법 열거 타입은 한정된 수의 값을 표현하기 위해 사용된다. 열거 타입이 있기 전에는 상수 필드(static final)를 활용하여 열거 타입처럼 구현을 했었다. 다음은 열거 타입의 사용 예이다. enum 키워드를 통해서 Season 열거 형을 만들고, 그 형에 SPRING, SUMMER, FALL, WINTER의 열거 상수를 만들었다. 또한 열거형.열거상수와 같은 방법으로 해당 열거 상수를 사용하는 것을 볼 수 있다. public class MainClass { public static void main(String args[]) { System.out.println(Season.SPRING); } } enum Season { SPRIN..

Java 2016.07.14

자바 프로그래밍 (Java) - 34 : instanceof 연산자

- instanceof 연산자 instanceof는 캐스트 연산 가능성을 검사하는 연산자이다. 다음은 instanceof의 syntax와 이를 활용한 예제이다. ps는 Student의 인스턴스가 아니므로 false가 return 된 것을 알 수 있다. syntax : instanceName instanceof ClassName public class MainClass { public static void main(String args[]) { Person ps = new Person(); if(ps instanceof Student) ps = (Student)ps; else System.out.println("ps is not instance of the Student"); } } 출력 결과 ps is ..

Java 2016.07.14

자바 프로그래밍 (Java) - 33 : 레퍼런스 타입

- 레퍼런스 타입의 종류 자바 데이터 타입 프리미티브 타입 레퍼런스 타입 boolean numeric class interface enum array Class는 위와 같이 레퍼런스 타입이기 때문에, 클래스를 다른 메서드로 넘기는 것은 Call By Reference와 같다고 볼 수 있다. 따라서 그 메서드에서 인자로 넘겨지는 클래스의 내부 멤버를 변경하면 메서드가 종료되어 리턴되어도 그 값이 유지된다. class Point { int x, y; // 필드 Point(int x, int y) { // 생성자 this.x = x; this.y = y; } } class RefTypeExample2 { public static void main(String args[]) { Point obj = new Po..

Java 2016.07.14

자바 프로그래밍 (Java) - 32 : 인터페이스 예제

다음은 Lendable 인터페이스를 구현한 SeparteVolume, AppCDInfo 클래스를 작성한 예제이다. AppCDInfo는 동시에 CDInfo라는 클래스를 상속 받는 것을 볼 수 있다. main 함수에서는 향상된 for문과 다형성을 사용하여 Lendable 타입으로 객체들을 관리하는 것을 볼 수 있다. public interface Bookable { void book(); } public interface Lendable { final static int MAX1 = 100; public void checkOut() throws Exception; void checkIn() throws RuntimeException; } class CDInfo { String title; } class Ap..

Java 2016.07.14

자바 프로그래밍 (Java) - 31 : 인터페이스

- 인터페이스 구현 시 주의할 점 1) 인터페이스의 메서드는 모두 추상 메서드이기 때문에 abstract여야 한다. 단, abstract는 생략 가능하다. 2) 인터페이스 메서드의 접근 제한자는 모두 public이어야 한다. 단, 생략 가능하다. (인터페이스의 기본 접근 제한자는 public이기 때문에) 3) 인터페이스를 구현하는 클래스의 메서드는public 키워드를 명시적으로 써주어야 한다. (클래스의 접근 제한자는 안 쓰면 default이기 때문에) 4) 인터페이스의 레퍼런스는 인터페이스를 구현한 클래스의 인스턴스를 참조할 수 있다. 5) 인터페이스의 필드는 모두 상수(final static)이다. 인터페이스에서는 final과 static을 모두 붙여주지 않아도 상관 없다. 6) 또한 인터페이스를 구..

Java 2016.07.14