public class LocalInnerClassExam {
 
 
 public static void main(String[] args){
  class localinner{
   private int num1 =9;
   int num2 = 4;
  }
 
  localinner  local = new localinner();
  System.out.println("local num1 = "+local.num1);
  System.out.println("local num2 = "+local.num2);
 }
}
실행 결과

local num1 = 9
local num2 = 4
실행 환경

jdk 6.0 이클립스 갈릴레오

클래스 안의 클래스 innerclass 예제..


import InnerClass.Enclosing.Nested;


class Enclosing{
 private static int num1=6;
 static int num2 = 10;
 
 Nested ne = new Nested();
 
 static class Nested{
  private int num3 = 15;
  int num4 = 20;
 
  public void print(){
   System.out.println("\nInner num1 = "+ num1);
   System.out.println("Inner num2 = "+ num2);
   System.out.println("Inner num3 = "+ num3);
   System.out.println("Inner num4 = "+ num4);
  }
 }
 
 public void OuterPrint(){
  System.out.println("Outer num1 = "+ num1);
  System.out.println("Outer num2 = "+ num2);
  System.out.println("Outer num3 = "+ ne.num3);
  System.out.println("Outer num4 = "+ ne.num4);
 }
}


public class StaticNestedClassExam {

 public static void main(String[] args) {
  Enclosing el = new Enclosing();
  el.OuterPrint();
  Nested ne = new Nested();
  ne.print();
 }

}


실행 결과

Outer num1 = 6
Outer num2 = 10
Outer num3 = 15
Outer num4 = 20

Inner num1 = 6
Inner num2 = 10
Inner num3 = 15
Inner num4 = 20

실행환경

jdk6.0 이클립스 갈릴레오

package Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class MapExam {

 public static void main(String [] args){
 
//Map (<Key,Value>로 정의 할수 있음
  Map<Integer, String> mapexam = new HashMap<Integer, String>();
  mapexam.put(1, "1번째 데이터");
  mapexam.put(2, "2번째 데이터");
  mapexam.put(3, "3번째 데이터");
  mapexam.put(4, "4번째 데이터");
 
//collection<값> 에 map value 을 넣어 줌
  Collection<String> col = mapexam.values();
 
//iterator 반복적으로 값을 가져온다.
  Iterator<String> it = col.iterator();
 
//순차 적으로 value의 값을 반복하여 값을 가져 온다.
  while(it.hasNext()){
   String mag = it.next();
   System.out.println("순차적으로 값을 가져 온다.   : "+mag);
  }

//향상된 for문으로 데이터 값 가져오기
  for(String it1:col){
   System.out.println("for  값을 가져 온다.   : "+it1);
  }
 }
}

실행 결과

순차적으로 값을 가져 온다.   : 1번째 데이터
순차적으로 값을 가져 온다.   : 2번째 데이터
순차적으로 값을 가져 온다.   : 3번째 데이터
순차적으로 값을 가져 온다.   : 4번째 데이터
for  값을 가져 온다.   : 1번째 데이터
for  값을 가져 온다.   : 2번째 데이터
for  값을 가져 온다.   : 3번째 데이터
for  값을 가져 온다.   : 4번째 데이터

실행 환경

jdk 6.0 ,이클립스 갈릴레오

예제 소스

//Throw 구문을 이용한 예외 처리  예제 프로그램
public class ExceptionExam2 {

 public static int divide(int num1,int num2)throws ArithmeticException{
  int  result =0;
  result = num1/num2;
  return result;
 }
 
 public static void main(String[] args) {
 
  int result =0;
  try{
   result = divide(10,5); //1번 째 함수 실행 오류
   System.out.println("1번째 실행입니다.  result : "+result);
   result = divide(10,0); //2번 째 함수 실행 오류 예외 영역으로 넘어감..
   System.out.println("2번째 실행입니다.  result : "+result);
  }catch(ArithmeticException e){
   System.out.println("오류 입니다."+e);
  }
 }

}


실행 결과

1번째 실행입니다.  result : 2
오류 입니다.java.lang.ArithmeticException: / by zero

실행환경 jdk 6.0 실행 tool 이클립스 갈릴레오

*실행 원리를 이해하세요.. 

예제 소스를 보고 실행 환경을 보고 소스 이해 및 왜 그렇게 되는지 확인 하시길 바랍니다.

배열의 번지는

0               1             2          배열의 번지

빨강          노랑         파랑      배열의 값


예제 소스

//Unchecked Exception 에 대한 예제 프로그램
public class ExceptionExam {

 public static void main(String[] args) {
  String[] str = {"빨강","노랑","파랑"};
 
  //기본 for문 배열의 번지 수 보다 많으면 예외처리를 한다.
  try{
   for(int i =0; i<= str.length; i++){
    System.out.println("배열 번지 : "+ i);
    System.out.println("배열 값 : "+ str[i]);
   }
  }
  catch(Exception e){
   System.out.println("예외 처리  : "+e+"번째  배열 번지 에러");
  }
 
  //향샹된 for 문(해당 타입 : 배열)으로 처리 하면 된다.
  for(String i :str){
   System.out.println("향상된 배열 번지 : "+ i);
  }
 }
}

 실행 결과

배열 번지 : 0
배열 값 : 빨강
배열 번지 : 1
배열 값 : 노랑
배열 번지 : 2
배열 값 : 파랑
배열 번지 : 3
예외 처리  : java.lang.ArrayIndexOutOfBoundsException: 3 번째  배열 번지 에러
향상된 배열 번지 : 빨강
향상된 배열 번지 : 노랑
향상된 배열 번지 : 파랑


실행 환경 = jdk6.0 개발툴 = 이클립스 갈릴레오...

*자바 프로그램중 발생하는 에러를 예외(Exception)이라고 합니다.

*API 는 Java.lang을 참고 하세요..


문법

try{

   //내용 을 실행하다 예외가 발생하면 catch문이 실행됩니다.

}

catch(Exception e){

System.out.println("예외 처리 "+e);

}

finally{

//이부분은 예외상관없이 실행됩니다.--- 생략 가능

}


throw  == 예외를 인위적으로 발생하고 싶을때가 있습니다.

이떄 throw문을 사용하면 되는데요.. 문법은 아래와 같이 사용합니다.

문법

throw new Exception();

throw throw을 시작하는 자바 키워드 new Excetion 익셉션 객체를 생성시 키는 생성식

 예)

int balance(int value) throws Exception{

  if (num1< num2){

     throw new Exception("예외가 발생합니다.");

     return num1

  }

}

public class StringExam1 {
 

 public static void main(String args[]){
  String str1 ;
  String str2 ;
 
  str1= "자바 문자열 비교  ";
  str2 = str1;
 
  if(str1 == str2){
   System.out.println("동일한 레퍼런스 정보 입니다. : "+str1);
  }
  if(str1.equals(str2)){
   System.out.println("동일한 문자열입니다. : "+str2);
  }
 
 
  String str3 = new String("java");
  String str4 = new String("java");


  //레퍼런스 정보가 틀리기 때문에 동일한 객체가 아님
  if(str3 == str4){
   System.out.println("동일한 레퍼런스 정보 입니다. : "+str1);
  }
  else{
   System.out.println("다른 레퍼런스 정보 입니다. : "+str3);
  }
  //문자열  정보가 동일한 객체
  if(str3.equals(str4)){
   System.out.println("동일한 문자열입니다. : "+str4);
  }else{
   System.out.println("다른 한 문자열입니다. : "+str4);
  }
 
  System.out.println("다른 한 문자열길이 입니다. : "+str4.length());
 
  String str5="문자열입니다.";
  char ch = str5.charAt(0);
  System.out.println("ch 문자열 ..= "+ch);
 
  String str6 = str1+"Oracle";
  System.out.println("str1입니다."+str1);
  System.out.println("오라클입니다."+str6);
 
 
 }
}
// 스트링 비교  예제소스 입니다.

개발에 참고 하세요..

실행환경 jdk6.0 eclipse 갈릴레오


결과  :


동일한 레퍼런스 정보 입니다. : 자바 문자열 비교
동일한 문자열입니다. : 자바 문자열 비교

다른 레퍼런스 정보 입니다. : java
동일한 문자열입니다. : java
다른 한 문자열길이 입니다. : 4
ch 문자열 ..= 문
str1입니다.자바 문자열 비교
오라클입니다.자바 문자열 비교 Oracle

이 클래스의 객체들은 프리미티 타입을 값을 감싸는 (wrap)역활을 하기 때문에 이클래스를 통틀어 (wrapper Class)라고 부릅니다.

아래의 소스는 프로그램 실행 순서 참고 하세요..


예제 소스)


public class WrapperExam {
 public static void main(String[] args) {
  int num1 =6;
  double num2 = 43;
  float num3 = 4.0F;
 
//primitive data type == > Referances data Type
// jdk 5.0 이후 추가 된 기능

 
//  Integer obj1 = new Integer(num1);
//  Float  obj2 = new Float(num3);
//  Double  obj3 = new Double(num2);
 
// jdk 5.0 이후 추가 된 기능
//  Integer obj1 = Integer.valueOf(num1);
//  Float  obj2 = Float.valueOf(num3);
//  Double  obj3 = Double.valueOf(num2);

// Auto Boxing : jdk 5.0이상 지원
  Integer obj1= num1;
  Float  obj2= num3;
  Double  obj3= num2;
 
 
// wrapper Exam의 결과는 동일합니다.  
  System.out.println("primitive data type == > Referances data Type");
  System.out.printf("obj1 = %s %n",obj1);
  System.out.printf("obj2 = %s %n",obj2);
  System.out.printf("obj3 = %s %n",obj3);
 
 
 
//Referances data type == > primitive data type
//  int    i = obj1.intValue();
//  float  f = obj2.floatValue();
//  double d = obj3.doubleValue();
 
// Un Boxing : jdk 5.0이상 지원
 
  int  i = obj1;
  float f = obj2;
  double d = obj3;

//결과는 동일합니다.
  System.out.println("Referances data type == > primitive data type");
  System.out.printf("i = %d %n",i);
  System.out.printf("f = %.1f %n",f);
  System.out.printf("d = %.1f %n",d);
 
 }
}

실행환경  = 이클립스 갈리레오 jdk 6.0

실행 결과

primitive data type == > Referances data Type
obj1 = 6
obj2 = 4.0
obj3 = 43.0
Referances data type == > primitive data type
i = 6
f = 4.0
d = 43.0 

+ Recent posts