본문 바로가기
Programming/Java

[Java] 1/21 강의정리 (인터페이스, 예외처리, try catch,String Tokenizer,Generic)

by jionee 2021. 1. 21.
SMALL

인터페이스 Helloworld 실습

// helloworld.java (인터페이스)

package ch08.helloworld;

public interface Helloworld {
	public String getMessage() ;
}
//HelloWorldEngimpl.java(인터페이스 implements)
//영어 인사

package ch08.helloworld;

public class HelloWorldEngimpl implements Helloworld {

	@Override
	public String getMessage() {
		// TODO Auto-generated method stub
		return "Hello World";
	}

}
//HelloWorldKoimpl.java(인터페이스 implements)
//한국어 인사

package ch08.helloworld;

public class HelloWorldKoimpl implements Helloworld {

	@Override
	public String getMessage() {
		// TODO Auto-generated method stub
		return "안녕하세요";
	}

}
// HelloWorldApp.java (테스트앱)

package ch08.helloworld;

public class HelloWorldApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Helloworld helloworld;
		
		helloworld = new HelloWorldKoimpl();
		System.out.println(helloworld.getMessage());
		
		helloworld = new HelloWorldEngimpl();
		System.out.println(helloworld.getMessage());
			
	}

}

 

 

 

try-catch문

- 사용자 오류를 잡아냄

- 오류가 났을 때 운영체계가 처리하지 않고, 애플리케이션이 처리하도록 함 (catch문)

 

 

 

예외처리

package ch09;

public class TryCatchThrowEx {
	
	static int dvide(int a, int b) {

		
		if(b==0) {
			System.out.println("계산오류");
			return 0;
		}
		
		int c = a/b;
		
			return c;
	}
	
	static int dvide2(int a, int b) {
		int c= a/b;
		return c;
	}
	
	static int dvide3(int a, int b) throws Exception {
		int c = 0;
		try {
			c = a/b;
		}
		catch(Exception ex) {
			throw new Exception("계산오류");
		}
		return c;
	}
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int result = dvide(1,3);
		System.out.println(result);
		
		result = dvide(1,0);
		System.out.println(result);
		
		try {
			result = dvide2(1,0);
		}
		catch (Exception ex) {
			System.out.println("계산오류");
		}
		
		try {
			result = dvide3(1,0);
		}
		catch (Exception ex) {
			System.out.println(ex.getMessage());;
		}
		
	}

}

 

 

 

String constant pool

package etc;

public class StringEx {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	String a = "자바";
	String b = "자바";
	
	String c = new String("자바");
	String d = new String("자바");
	
	System.out.println(a.hashCode());
	System.out.println(b.hashCode());
	System.out.println(c.hashCode());
	System.out.println(d.hashCode());
	}

}

*** String literal로 생성한 객체는 내용이 같다면 같은 객체, 즉 동일한 메모리 주소를 가리키고 있다.

*** 하지만 new 연산자로 생성한 String 객체는 내용이 같더라도 개별적인 객체임을 알 수 있다.



 

String 메서드

package etc;

import java.util.StringTokenizer;

public class StringEx2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String mt = "가나다라abcd";
		
		System.out.println(mt.length());
		System.out.println(mt.charAt(2));
		System.out.println(mt.substring(1,3));
		System.out.println(mt.indexOf("가"));
		System.out.println(mt.lastIndexOf("c"));
		System.out.println(mt.replaceAll("다","마"));

	}

}

 

 

String Tokenizer

package etc;

import java.util.StringTokenizer;

public class StringEx2 {

	public static void main(String[] args) {
		String sa = "가,나,다,라";
		String[] sts = sa.split(",");
		for(int i=0, len=sts.length;i<len;i++)
			System.out.println(sts[i]);
		
		StringTokenizer sta = new StringTokenizer(sa,",");
		System.out.println(sta.countTokens());
		while(sta.hasMoreTokens()) {
			System.out.println(sta.nextToken());
			
		String sa1 = "1/하나,2/둘,3/셋,4/넷";
		StringTokenizer stb = new StringTokenizer(sa1,"/,");
		System.out.println(stb.countTokens());
		while(stb.hasMoreTokens()) {
			System.out.println(stb.nextToken());
		}
		}
	
	
	}

}
더보기

4

8

1

하나

2

3

4

8

1

하나

2

3

4

8

1

하나

2

3

4

8

1

하나

2

3

4

 

 

 

 

 

컬렉션 프레임워크

- 프로그래밍에서 많이 사용되는 데이터 그룹을 관리하기 위한 자료 구조들로 구성되어있음

- 데이터를 저장할 수 있고, 관리를 위한 다양한 기능을 제공

- java.util 패키지의 하위 인터페이스 및 클래스로 제공됨

 

 

 

Generic

- Java 1.5부터 사용 가능한 타입 파라미터

- 참조형 데이터 타입만 이용할 수 있음 (기본형 데이터 타입은 Wrapper Class를 이용)

- 컴파일러에게 처리할 타입을 지정해 타입 안정성과 유연성을 확보

- Object 타입 사용시 발생할 수 있는  Type Casting 적용 및 점검, 오류 확인 등 복잡한 절차와 불필요한 메서드 오버로딩(Method Overloading을 피할 수 있음

- 클래스, 인터페이스, 메서드에 적용할 수 있음

- 제너릭 타입 등장 이전과 호환을 위해, 컴파일러는 컴파일 시 컴파일 파라미터와 관련된 정보를 삭제

- Java7부터는 선언부에 타입 파라미터가 지정되면, 생성부에서는 타입 파라미터를 생략할 수 있음

GenericClass<Integer>
gen_Class = new GenericClass<>();

댓글