2016년 6월 15일 수요일

07day java

API
  • 오라클 java.lang
    • Wrapper (클래스의 그룹)
      • 기본자료형 → 클래스
        • boolean → Boolean
        • char → Character
        • byte → Byte
        • short → Short
        • int  → Integer
        • long → Long
        • float → Double
      • 각 자료형의 최대 최소값
      • 형변환 (문자열)
OOP
  • 다형 
    • 클래스 형변환
      • 상속관계에서만 가능
      • 부모 ← 자식: 자동 형변환
      • 자식 ← 부모: 강제 형변환



1
public class StringBufferEx01 {

 public static void main(String[] args) {
  // StringBuffer 원래값을 바꾸어서 문자열 수정
  StringBuffer sb1 = new StringBuffer();
  StringBuffer sb2 = new StringBuffer(100);
  StringBuffer sb3 = new StringBuffer("Hello World");
  
  //크기 : 버퍼의 크기 / 문자열의 길이
  System.out.println(sb1.capacity()); //기본 16용량
  System.out.println(sb2.capacity());
  System.out.println(sb3.capacity()); //data + 16 용량
  
  System.out.println(sb1.length());
  System.out.println(sb2.length());
  System.out.println(sb3.length());
  
  //문자열의 조작 append, insert, delete
  System.out.println(sb3);
  sb3.append(" 안녕"); //대입연산자 = 가 없음
  System.out.println(sb3);
  sb3.insert(3, "추가");
  System.out.println(sb3);
  sb3.delete(0, 3);
  System.out.println(sb3);
  
  //문자열 추출
  String sStr = sb3.substring(5);
  System.out.println(sStr);
  
 }

}


2
public class WrapperEx01 {

 public static void main(String[] args) {
  // Wrapper 기본자료형을 클래스로 사용
  System.out.println(Byte.MAX_VALUE);
  System.out.println(Byte.MIN_VALUE);
  
  System.out.println(Integer.MAX_VALUE);
  System.out.println(Integer.MIN_VALUE);
  
  String str1 = "123";
  String str2 = "3.14f";
  
  int i = Integer.parseInt(str1);  //문자열을 기본자료 형태로
  float f = Float.parseFloat(str2);
  
  System.out.println(i);
  System.out.println(f);
  
  //Wrapper class 생성
  Integer i1 = new Integer("123");
  Integer i2 = new Integer(123);
  
  int ii1 = i1.intValue();
  int ii2 = i2.intValue();
  
  //auto boxing //Wrapper class 생성의 단순화
  Integer i3 =20;
  //auto unboxing
  int ii3 = i3;
  
  if(i3 == ii3){  //자동으로 기본자료형과 클래스를 내용비교
   System.out.println("같다");
  }
 }

}


3
public class CalculatorEx01 {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  if(args.length != 3){
   System.out.println("인자의 갯수가 틀립니다.");
  }else{
   int value1 = Integer.parseInt(args[0]);
   int value2 = Integer.parseInt(args[2]);
   
   if(args[1].equals("+")){
    System.out.println("결과 : " + (value1 + value2));
   }else if(args[1].equals("-")){
    System.out.println("결과 : " + (value1 - value2));
   }else if(args[1].equals("X")){
    System.out.println("결과 : " + (value1 * value2));
   }else if(args[1].equals("/")){
    System.out.println("결과 : " + (value1 / value2));
   }
  }
 }

}


4
public class MathEx01 {

 public static void main(String[] args) {
  // Math클래스 // 메소드는 모두 static으로 인스턴스멤버를 갖지않음
  //올림
  System.out.println(Math.ceil(10.3));
  System.out.println(Math.ceil(10.5));
  System.out.println(Math.ceil(10.6));
  
  //내림
  System.out.println(Math.floor(10.3));
  System.out.println(Math.floor(10.5));
  System.out.println(Math.floor(10.7));
  
  //반올림
  System.out.println(Math.round(10.3));
  System.out.println(Math.round(10.5));
  System.out.println(Math.round(10.7));
  
  //랜덤 //출력 볌위 0 <= x < 1
  System.out.println(Math.random());
  System.out.println(Math.random());
  //0 <= x < 10
  System.out.println((int)(Math.random()*10));
  System.out.println((int)(Math.random()*10));
  //1 <= x <= 45
  System.out.println((int)(Math.random()*44+1));
 }

}


5
import java.io.IOException;

public class ProcessBuilderEx01 {

 public static void main(String[] args) {
  // ProcessBuilder
  try {
   Process proc = new ProcessBuilder("C:/Program Files/Internet Explorer/iexplore.exe", "www.google.com").start();
  } catch (IOException e) {
   
  }
  
 }

}


6
public class Parent {
 public String p = "홍길동";
 public void viewParent1(){
  System.out.println("viewParent1()");
 }
 public void viewParent2(){
  System.out.println("viewParent2()");
 }
}

public class Child1 extends Parent{
 public String c = "이순신";
 public void viewChild(){
  System.out.println("viewChild()");
 }
 public void viewParent2(){
  System.out.println("child viewParent2() override");
 }

}

public class Child2 extends Parent{
 public String c = "박문수";
 public void viewChild(){
  System.out.println("viewChild()");
 }
}

public class MainEx {

 public static void main(String[] args) {
  Parent p1 = new Parent();
  
  Child1 c1 = new Child1();
  Child2 c2 = new Child2();
  System.out.println(c1.p);
  System.out.println(c1.c);
  c1.viewParent1();
  c1.viewChild();
  c1.viewParent2();
  
  //형변환
  Parent p2 = c1;
  Parent p3 = new Child1();
  
  System.out.println(p2.p);
  //System.out.println(p2.c); //부모클래스 외의 것은 사용하지 못함
  p2.viewParent1();
  //p2.viewChild(); //부모클래스 외의 것은 사용하지 못함
  p2.viewParent2(); //오버라이딩 된 부모의 메소드는 자식의 메소드를 사용함
  System.out.println();

  //강제 형변환
  // Child1 c11 = (Child1) new parent(); //부모를 자식으로 바로 형변환 불가
  Child1 c11 = (Child1)p2;               //부모는 자식을 통해서 생성된 부모여야 함
  System.out.println(c11.p);
  System.out.println(c11.c);
  c11.viewParent1();
  c11.viewChild();
  c11.viewParent2();
 }

}


7
public class Parent {
 public String p = "홍길동";

 public void viewParent2(){
  System.out.println("viewParent2()");
 }
}

public class Child1 extends Parent{
 public String p = "홍길동child"; //부모클래스의 필드를 중복해서 쓸수는 있지만 오버라이딩 할 수 없음

 @Override
 public void viewParent2(){
  System.out.println("child viewParent2() --override");
 }

}

public class Child2 extends Parent{

 @Override
 public void viewParent2() {
  System.out.println("child2 viewParent2() --child1 override");
 }
}

public class MainEx2 {

 public static void main(String[] args) {
  
  Child1 c1 = new Child1();
  Child2 c2 = new Child2();
  
  c1.viewParent2();
  c2.viewParent2();
  //다형성 //특징 : 상속, 오버라이딩, 형변환
  //부모를 통해서 자식 각각을 호출
  //추상의 개념과 비슷함 --추상은 개발자 입장에서 편리함
  //                     --다형은 사용자 입장에서 편리함
  Parent p1 = new Child1();
  Parent p2 = new Child2();
  
  p1.viewParent2(); // 자식의 메소드가 override 됨
  p2.viewParent2(); // 자식의 메소드가 override 됨
  
  Parent p = new Parent();
  System.out.println(p.p);
  System.out.println(c1.p);
  System.out.println(p1.p); //자식으로 부터 부모객체를 생성했지만 필드는 override되지 않음

 }

}


8
public class Outer {
 private int x1 = 100;
 public int x2 = 100;
 
 class Inner{
  private int y1 = 200;
  public int y2 = 200;
  
  public void viewInner(){
   System.out.println("viewInner 호출");
   
   System.out.println(x1);
   System.out.println(x2);
   System.out.println(y1);
   System.out.println(y2);
  }
 }
}

public class MainEx {
 public static void main(String[] args) {
  //중첩클래스의 선언
  Outer ot = new Outer();
  Outer.Inner oi = ot.new Inner(); //Inner class선언이 특이함
  
  //System.out.println(ot.x1); //private 접근 불가
  System.out.println(ot.x2);
  //System.out.println(oi.y1); //private 접근 불가
  System.out.println(oi.y2);
  oi.viewInner();
 }
}


9
class Outer2{
 private int x = 100;
 static class Inner2{
  private int y = 200;
  public void aaa(){
   // System.out.println("x = " + x); //static 클래스에서 인스턴스멤버를 사용할 수 없음
   System.out.println("y = " + y);
  }
 }
}

public class Ex03 {

 public static void main(String[] args) {
  Outer2.Inner2 oi = new Outer2.Inner2(); //static Inner 클래스의 선언
  oi.aaa();
 }

}


10
public class MainEx01 {

 public static void main(String[] args) {
  int x = 100;
  //지역 중첩 클래스  //특정 클래스 안에서만 사용 //접근제한자, 지정예약어 없음
  class Inner {
   int y = 200;
   public void viewInner(){
    System.out.println(x);
    System.out.println(y);
   }
  }
  Inner i = new Inner();
  i.viewInner();
 }

}


11
public class Inner {
 int y = 100;
 public void viewInner(){
  
 }
}

public class MainEx {
 public static void main(String[] args) {
  int x = 100;
  
  //익명 중첩클래스
  Inner i = new Inner(){ //부모의 클래스로 객체를 생성하면서 자신만의 멤버를 선언한다
   @Override
   public void viewInner() {
    System.out.println(x);
    System.out.println(y);
   }
  };
  
  i.viewInner();
 }
}


12
public class JuminCheckEx02 {
    public static boolean checkJumin(String jumin){
        String strJumin = jumin.replaceAll("-", "");
        
        int[] bits = {2,3,4,5,6,7,8,9,2,3,4,5};
        int sum = 0;
        for(int i=0; i<bits.length; i++){
            sum += Integer.parseInt(strJumin.substring(i,i+1))*bits[i];
        }
        
        int last = Integer.parseInt(strJumin.substring(12,13));
        int result = (11-sum%11)%10;
        
        if(result == last){
            return true;
        }else{
            return false;
        }
    }
    
    public static void main(String[] args) {
        //주민번호 메소드
        if(args.length != 1){
            System.out.println("java 클래스명 xxxxxx-xxxxxxx형식으로 입력하셔야 합니다.");
        }else if(args[0].length() != 14){
            System.out.println("14자리를 입력하셔야 합니다.");
        }else{
            if(checkJumin(args[0])){
                System.out.println("정확한 주민번호입니다.");
            }else{
                System.out.println("부정확한 주민번호입니다.");
            }
        }
    }

}

public static void main(String[] args) {
  //주민번호 메소드
  if(args.length != 1){
   System.out.println("java 클래스명 xxxxxx-xxxxxxx형식으로 입력하셔야 합니다.");
   System.exit(0);  //시스템을 종료함
  }
  if(args[0].length() != 14){
   System.out.println("14자리를 입력하셔야 합니다.");
   System.exit(0);
  }
  
  if(checkJumin(args[0])){
   System.out.println("정확한 주민번호입니다.");
  }else{
   System.out.println("부정확한 주민번호입니다.");
  }
  
 }



댓글 없음:

댓글 쓰기