페이지

2015. 1. 15.

[JAVA] Day8.API

계속 업데이트 해가면서 모르는 클래스나 자주 사용되는 클래스/메소드를 추가할 예정

 

 

java.lang    

 - 기본 패키지

java.util   

 - 현재 사용에 가장 중요한 패키지(가장 중요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
 - 컬렉션, 날짜, 시간, 및 데이터 관리하는 것 등등


java.io       

 - 파일/입력/출력

java.net 

 - 네트워크 / IP / 통신 (자바가 웹에서 주로 동작하기때문에 java.net를 굳이 필요하진 않음)

java.sql   

 - 데이터베이스

java.awt  

 - GUI(뿐만 아니라 이벤트 처리 등등이 더 중요)

javax.swing  

 - 자바로는 응용프로그램을 잘 만들지 않아서 그닥...




우선 java.lang를 보자!!


우선 기본형 데이터 타입과 유사한 이름들의 클래스를 같는 클래스들이 있다.
예를들어 Byte, Short, Integer 등등인데, 이것을 Wrapper class라고 한다.
Wrapper class는 기본형 데이터 타입을 객체화하여 여러가지 메소드를 지원한다.





Integer class를 보자


java.lang.Object
   java.lang.Number
       java.lang.Integer

이런 계층 구조를 가지고 있다.

뿐만 아니라 API를 통해 구현된 인터페이스, 예외, 변수, 생성자, 메소드가 어떤 종류가 있는지 확인 가능하다.





class  WarpperClassTest
{
    public static void main(String[] args)
    {
        Integer one = new Integer("15");
        Integer two = new Integer(21);
        int total = one.intValue() + two.intValue();

        System.out.println("total : " + total);
        System.out.println("Integer.toBinaryString(total) : " + Integer.toBinaryString(total));
        System.out.println("Integer.OctalString(total) : " + Integer.toOctalString(total));
        System.out.println("Integer.toHexString(total) : " + Integer.toHexString(total));
    }
}





class  apiTest
{
    public static void main(String[] args)
    {
        Integer one = new Integer(10);
        Integer two = new Integer(10);
        System.out.println(one==two);
        System.out.println(one.equals(two));
    }
}

//참조 변수끼리 비교했을때는 결과는 false
//왜냐하면 주소가 다르기 때문에
//하지만 내용의 값을 비교하고자 할때는 equals()를 사용한다.




하지만 아래 코드를 보면 조금 다르다.....


class  apiTest
{
    public static void main(String[] args)
    {
        String str1 = "hello";
        String str2 = "hello";
        System.out.println(str1==str2);
        System.out.println(str1.equals(str2));
    }
}
//str1==str2이 true를 리턴한다.
//이것은 jvm에서 new를 사용하지 않고 생성된 것은 만약 같은 것이 있다면,
//같은 주소를 가리키도록 한다.









따라서 아래와 같이 수정하면 false를 출력 할 것이다.

class  apiTest
{
    public static void main(String[] args)
    {
        String str1 = "hello";
        String str2 = new String("hello"); //new로 객체 생성
       
        System.out.println(str1==str2);
        System.out.println(str1.equals(str2));
    }
}

//하지만 new로 객체를 생성하여 사용하면 다른 주소를 할당받아 str1==str2으로 비교하는 false가 나온다.





class  apiTest
{
    public static void main(String[] args)
    {
        String str1 = "   abc   ";
        String str2 = "Wonnder Girls";
        String msg = null;
       
        msg = str1.replace("a", "b");
        System.out.println("msg : " + msg);
        msg = str1.toUpperCase();
        System.out.println("msg : " + msg);
        msg = str1.trim();
        System.out.println("msg : " + msg);
       
        int index = str2.indexOf('n');    //2
        index = str2.indexOf("der");    //그중에 d가 있는 위치 4
        index = str2.lastIndexOf('n');    //3   
        char c = str2.charAt(index);
        index = str2.indexOf('G');        //8
        String str3 = str2.substring(index);    //Girls
        str3 = str2.substring(index, index+3);    //index에서 index+3미만까지!!!!
                            //beginIndex - 개시 인덱스 (이 값을 포함한다)
                            //endIndex - 종료 인덱스 (이 값을 포함하지 않는다)
        int length = str2.length();        //11개
        String[] arr = str2.split(" ");        //정말 중요 API도 확인하고 컴파일도 해볼것!!!!
        for (int i=0;i<arr.length;i++ )
        {
            System.out.println("arr["+i+"] : " + arr[i]);
        }
        //split는 매개변수로 들어간 문자열을 기준으로 끈어 준다.

    }
}
/*
public String  replace(CharSequence  target, CharSequence  replacement)
 - target을 replacement로 대체
public String  toUpperCase()
 - 대문자로
public String  trim()
 - 앞 뒤 공백 제거(가운데는 제거 안됨), 실수로 ID PWD 앞뒤에 공백을 넣을 때가 있는데 이것을 처리
*/











class  apiTest
{
    public static void main(String[] args)
    {
        StringBuffer sb1 = new StringBuffer("Sun-Ae");
        StringBuffer sb2 = sb1.append(" & FeWang");
       
        sb2.insert(6, " & Yun-A");
        String msg = sb1.toString();
        System.out.println("sb1 : " + msg);
    }
}
/*
String과 비슷함
그러나 버퍼를 사용하는 것이 조금 차이남
버퍼 캐시 레지스터 >> 읽어들이는 속도를 빠르게 하기 위해 나온 기술들
여기서 버퍼는
PC와 Printer간에 속도차(전송되는 시간과 출력되는 시간)를 위한 방법
100장의 문서를 출력한다고 했을때 버퍼가 없다면 모두 출력이 될떄까지 PC는 사용될수 없다
하지만 PC -> 버퍼 -> 프린터라면 프린터는 버퍼에서 받아와 사용하고 PC는 다른 작업을 할수 있다.

따라서 일반 String보단 StringBuffer가 더 조금 빠르다.
*/