인터페이스 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<>();
'Programming > Java' 카테고리의 다른 글
[Java] 1/20 강의 정리 (로그인 구현, 상속, 오버라이드, 패키지, 추상클래스, 인터페이스) (0) | 2021.01.20 |
---|---|
[JAVA] 1/19 강의정리 (객체지향, 함수지향, 클래스, 메서드, 상속) (0) | 2021.01.19 |
[Java] 1/18 강의 정리 (JVM, JDK, 연산자, 배열, 객체지향) (0) | 2021.01.18 |
댓글