java api

java.lang 패키지

Object class

equals() 메서드

package chapter12;

public class EqualsEx {

    public static void main(String[] args) {
        Obj obj1 = new Obj(100);
        Obj obj2 = new Obj(100);

        if (obj1 == obj2) {
            System.out.println("obj1 객체와 obj2 객체는 같음");
        } else {
            System.out.println("obj1 객체와 obj2 객체는 다름");
        }

        if (obj1.equals(obj2)) {
            System.out.println("obj1 객체와 obj2 객체는 같음");
        } else {
            System.out.println("obj1 객체와 obj2 객체는 다름");
        }

        Obj obj3 = obj1;

        if (obj1 == obj3) {
            System.out.println("obj1 객체와 obj3 객체는 같음");
        } else {
            System.out.println("obj1 객체와 obj3 객체는 다름");
        }

        if (obj1.equals(obj3)) {
            System.out.println("obj1 객체와 obj3 객체는 같음");
        } else {
            System.out.println("obj1 객체와 obj3 객체는 다름");
        }

        ObjOverride objo1 = new ObjOverride(100);
        ObjOverride objo2 = new ObjOverride(200);

        if (objo1.equals(objo2)) {
            System.out.println("objo1 객체와 objo2 객체는 같음");
        } else {
            System.out.println("objo1 객체와 objo2 객체는 다름");
        }
    }
}

class Obj extends Object{
    int obj_var;

    Obj(int obj_var) {
        this.obj_var = obj_var;
    }
}

class ObjOverride {
    int obj_var;

    ObjOverride(int obj_var) {
        this.obj_var = obj_var;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof ObjOverride) {
            ObjOverride oo = (ObjOverride)obj;
            if(this.obj_var == oo.obj_var) {
                return true;
            }else {

                return false;
            }
        } else {
            return false;
        }
    }
}

String class

package chapter12;

public class EqualsEx2 {

    public static void main(String[] args) {

        String str1 = new String("abc");
        String str2 = new String("abc");

        if(str1 == str2) {
            System.out.println("str1 객체와 str2 객체는 같음");
        } else {
            System.out.println("str1 객체와 str2 객체는 다름");
        }

        if(str1.equals(str2)) {
            System.out.println("str1 문자열과 str2 문자열은 같음");
        } else {
            System.out.println("str1문자열과  str2 문자열은 다름");
        }

    }

}
package chapter12;

public class HahsCodeEx {

    public static void main(String[] args) {

        String str1 = new String( "abc");
        String str2 = new String( "abc");
        System.out.println("str1.hashCode():"+str1.hashCode()) ;
        System.out.println("str2.hashCode():"+str2.hashCode()) ;
        System.out.println("System.identityHashCode(str1):"+
                            System.identityHashCode(str1)) ;
        System.out.println("System.identityHashCode(str2):"+
                            System.identityHashCode(str2)) ;

    }

}

toString()

package chapter12;

public class ToStringEx {

    public static void main(String[] args) {
        Fruit f = new Fruit("사과", "빨강");
        System.out.println(f); // f.toString() 자동으로 불려짐
        System.out.println(f.toString); 
    }
}
class Fruit {
    String name;
    String color;
    public Fruit(String name, String color) {
        this.name = name;
        this.color = color;
    }

        @Override
    public String toString() {
        return "과일 이름 : "+this.name+"\n과일 색상 : "+this.color;
    }
}

clone() 메서드

package chapter12;

public class ClonEx {

    public static void main(String[] args) {

        String[] arr = {"홍길동", "이순신", "김유신", "안중근"};
        String[] arr2 = arr.clone();

        System.out.println(arr == arr2);
        for (String v : arr2) {
            System.out.println(v);
        }

        String[] arr3 = new String[arr.length];
        System.arraycopy(arr, 0, arr3, 0, arr.length);

        System.out.println(arr == arr3);
        for (String v : arr3) {
            System.out.println(v);
        }

    }

}

System 클래스

getProperty()

package chapter12;

public class EnvEx {

    public static void main(String[] args) {

        System.out.println(System.getProperty("java.version")); // 자바 버전
        System.out.println(System.getProperty("java.home")); // JDK 경로
        System.out.println(System.getProperty("os.name")); // OS
        System.out.println(System.getProperty("file.separator")); // 파일 구분자(리눅스,유닉스는 /)
        System.out.println(System.getProperty("user.name")); // 사용자명
        System.out.println(System.getProperty("user.home")); // 사용자 홈디렉토리
        System.out.println(System.getProperty("user.dir")); // 현재 워크스페이스 디렉토리 위치

    }

}

getEnv()

package chapter12;

public class PropertyEx {

    public static void main(String[] args) {

        for (String var : System.getenv().keySet()) {
            System.out.println(var + "=" + System.getenv(var));
        }

    }

}

Class 클래스

package chapter12;

public class ClassEx {

    public static void main(String[] args) {

        EnvEx env = new EnvEx();

        // 객체를 이용해서 생성
        Class c1 = env.getClass();
        System.out.println(c1.getName());

        // 문자열 주소로 생성
        try {
            Class c2 = Class.forName("chapter12.PropertyEx");
            System.out.println(c2.getName());
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        }

    }

}

String 클래스

숫자 -> 문자열

package chapter12.string;

public class StringEx {

    public static void main(String[] args) {

        int score = 90;
        System.out.println("당신의 점수는 " + score + "입니다."); // 자동형변환

        //String s = score; // 데이터타입이 달라 에러
        String s = String.valueOf(score); // String으로 형변환

        String s2 = score + ""; // 문자열을 + 연산하여 String으로 형변환

    }

}
package chapter12.string;

public class StringEx3 {

    public static void main(String[] args) {

        String sum = "";

        for (int i=1; i<=5; i++) {
            sum += i;
        }
        System.out.println(sum);

    }

}

equals() 메서드

package chapter12.string;

public class StringEx2 {

    public static void main(String[] args) {

        // 상수 풀 Constant Pool 에  저장됨
                String name1 = "홍길동";
        String name2 = "홍길동";

        if (name1 == name2) {
            System.out.println("name1 == name2");
        } else {
            System.out.println("name1 != name2");
        }

        if (name1.equals(name2)) {
            System.out.println("name1.equals(name2)");
        } else {
            System.out.println("!name1.equals(name2");
        }

        // 힙 Heap에 저장됨
        String name3 = new String("홍길동");
        String name4 = new String("홍길동");

        if (name3 == name4) {
            System.out.println("name3 == name4");
        } else {
            System.out.println("name3 != name4");
        }

        if (name3.equals(name4)) {
            System.out.println("name3.equals(name4)");
        } else {
            System.out.println("!name3.equals(name4");
        }

    }

}

문자열과 문자 1개

package chapter12.string;

public class StringEx4 {

    public static void main(String[] args) {

        String text = "Hello My Name is Hong Gil Dong";

        System.out.println("0번 인덱스 : "+text.charAt(0));

        for (int i=0; i<text.length(); i++) {
            System.out.println(text.charAt(i));
        }

    }

}

문자열 초기값

package chapter12.string;

public class StringEx5 {

    static String s1;
    static String s2 = "";

    public static void main(String[] args) {

        System.out.println(s1);
        System.out.println(s2);

        System.out.println("s2.length():"+s2.length());
        System.out.println("".equals(s2));


    }

}

String 클래스 주요 메서드

package chapter12.string;

public class StringEx7 {

    public static void main(String[] args) {

        String str = "Hello My Name is Hong Gil Dong";

        System.out.println(str.charAt(6)); // 6번 인덱스의 문자
        System.out.println(str.equals("Hello My Name is Hong Gil Dong")); // 문자열값 비교
        System.out.println(str.indexOf("Hong")); // "Hong" 문자열의 위치
        System.out.println(str.indexOf('H')); // 'H'문자의 위치
        System.out.println(str.substring(17)); // 17번 인덱스부터 끝까지 잘라냄
        System.out.println(str.substring(6, 13)); // 6번 인덱스부터 13전(12번 인덱스)까지 문자열
        System.out.println(str.toLowerCase()); // 소문자로 변경
        System.out.println(str.toUpperCase()); // 대문자로 변경
        System.out.println(str.length()); // 문자열의 길이
        System.out.println(str.startsWith("Hello")); // "Hello"으로 시작하는지 여부
        System.out.println(str.endsWith("Dong")); // "Dong"으로 끝나는지 여부
        System.out.println(str.replace("Hong", "Kim")); // "Hong"을 "Kim"으로 치환
        System.out.println(str.replaceAll("Name", "NickName")); // "Name"을 "NickName"으로 치환
        System.out.println(str.toString());

        str = "   안녕 하세요,     반갑습니다.      ";
        System.out.println(str.trim()); // 앞뒤 공백 제거
        // 모든 공백을 제거하는 방법
        System.out.println(str.replace(" ", ""));

        str = String.valueOf(10); // 기본자료형 int를 문자열로 변환
        str = String.valueOf(10.5); // 기본자료형 double을 문자열로 변환

        str = "홍길동,이순신,유관순,안중근";
        String[] arr = str.split(","); // ,를 구분자로 나눠서 배열로 리턴
        for (int i=0; i<arr.length; i++) {
            System.out.println(i+"번 인덱스 값 = "+arr[i]);
        }

    }

}

문자열을 숫자로 변화

package chapter12.string;

public class StringEx8 {

    public static void main(String[] args) {

        String[] str = {"1", "2", "3", "4"};

        int sum1 = 0;
        for (int i=0; i<str.length; i++) {
            sum1 += Integer.parseInt(str[i]);
        }
        System.out.println("sum1 = "+sum1);

        long sum2 = 0;
        for (int i=0; i<str.length; i++) {
            sum2 += Long.parseLong(str[i]);
        }
        System.out.println("sum2 = "+sum2);

        double sum3 = 0;
        for (int i=0; i<str.length; i++) {
            sum3 += Double.parseDouble(str[i]);
        }
        System.out.println("sum3 = "+sum3);

    }

}

StringBuffer

새로 생성 확인

package chapter12.stringbuffer;

public class StringEx9 {

    public static void main(String[] args) {

        String str1 = "abcd";
        String str2 = "abcd";
        System.out.println("str1 = "+System.identityHashCode(str1));
        System.out.println("str2 = "+System.identityHashCode(str2));

        // 기본 객체에 + 연산 후 다시 대입
        str1 = str1 + "efg";
        System.out.println("str1 = "+System.identityHashCode(str1));

    }

}

StringBuffer 클래스 사용

package chapter12.stringbuffer;

public class StringBufferEx {

    public static void main(String[] args) {

        StringBuffer sb1 = new StringBuffer("abcd");
        System.out.println("문자열 연결전 sb1 = "+System.identityHashCode(sb1));
        sb1.append("efgh");
        System.out.println("문자열 연결후 sb1 = "+System.identityHashCode(sb1));

        // StringBuffer 클래스 equals() 재정의 안되어 있음
        System.out.println(sb1.toString().equals("abcdefgh"));



    }

}

문자열 덧셈 수행 시간 비교

문자열 덧셈

package chapter12.stringbuffer;

public class StringBufferEx3 {

    public static void main(String[] args) {

        // 시작
        long start = System.currentTimeMillis();

        String str = "";
        for (int i=0; i<1000000; i++) {
            str += i;
        }

        // 끝
        long end = System.currentTimeMillis();
        System.out.println( "실행 시간 : " + ( end - start )/1000);

    }

}

StringBuffer

package chapter12.stringbuffer;

public class StringBufferEx4 {

    public static void main(String[] args) {

        // 시작
        long start = System.currentTimeMillis();


        StringBuffer sb = new StringBuffer();
        for (int i=0; i<1000000; i++) {
            sb.append(i);
        }


        // 끝
        long end = System.currentTimeMillis();
        System.out.println( "실행 시간 : " + ( end - start )/1000);

    }

}

Math 클래스

중요 메서드

package chapter12;

public class MathEx {

    public static void main(String[] args) {

        System.out.println("Math.abs(10)=" + Math.abs(10)); // 절대값
        System.out.println("Math.abs(-10)=" + Math.abs(-10)); 
        System.out.println("Math.ceil(5.4)=" + Math.ceil(5.4)); // 올림
        System.out.println("Math.ceil(-5.4)=" + Math.ceil(-5.4));
        System.out.println("Math.floor(5.4)=" + Math.floor(5.4)); // 내림
        System.out.println("Math.floor(-5.4)=" + Math.floor(-5.4));
        System.out.println("Math.max(5,4)=" + Math.max(5,4));
        System.out.println("Math.max(5.4,5.3)=" + Math.max(5.4,5.3));
        System.out.println("Math.min(5,4)=" + Math.min(5,4));
        System.out.println("Math.min(5.4,5.3)=" + Math.min(5.4,5.3));
        System.out.println("Math.random()=" + Math.random()); // 0이상 1미만 소숫점
        System.out.println("Math.rint(4.5)=" + Math.rint(4.5));// 5 짝수 버림
        System.out.println("Math.rint(5.5)=" + Math.rint(5.5));// 5 홀수 올림
        System.out.println("Math.round(4.5)=" + Math.round(4.5));
        System.out.println("Math.round(5.5)=" + Math.round(5.5));

    }

}

반올림 식

package chapter12;

public class RoundEx {

    public static void main(String[] args) {

        // 원주율을 소수점 3자리로 반올림
        double v1 = Math.PI * 1000;
        double v2 = Math.round(v1);
        double v3 = v2 / 1000.0;
        System.out.println(v3);

        // 한줄로 출력
        System.out.println(Math.round(Math.PI * 1000)/1000.0);

    }

}

Wrapper 클래스

package chapter12;

public class WrapperEx {

    public static void main(String[] args) {

        // 정수 10이 Integer 클래스 객체로 변환 (boxing)
        Integer i1 = new Integer(10);
        Integer i2 = new Integer(10);
        System.out.println("i1==i2 : " + (i1==i2));
        System.out.println("i1.equals(i2) : " + (i1.equals(i2)));
        System.out.println("i1.toString() : " + i1.toString());

        //i1 객체가 100 정수로 변환 (unboxing)
        System.out.println("i1==10 : " + (i1==10)); // int 자동 형변환
        int i3 = 10;
        System.out.println("i1==i3 : " + (i1==i3));

    }

}

상수값 MAX_VALUE, MIN_VALUE

package chapter12;

public class WrapperEx2 {

    public static void main(String[] args) {

        System.out.println("정수의 최대값 :" + Integer.MAX_VALUE);
        System.out.println("정수의 최소값 :" + Integer.MIN_VALUE);
        System.out.println("byte의 최대값 :" + Byte.MAX_VALUE);
        System.out.println("byte의 최소값 :" + Byte.MIN_VALUE);
        System.out.println("정수의 사이즈 :" + Integer.SIZE);
        System.out.println("float의 사이즈 :" + Float.SIZE);
        System.out.println("double의 사이즈 :" + Double.SIZE);

    }

}

문자열 -> 숫자

package chapter12;

public class WrapperEx3 {

    public static void main(String[] args) {

        String number = "100";

        int i1 = Integer.parseInt(number);
        int i2 = new Integer(number).intValue();
        int i3 = Integer.valueOf(number);

        System.out.println("i1 = "+i1);
        System.out.println("i2 = "+i2);
        System.out.println("i3 = "+i3);

    }

}

java.util 패키지

Random 클래스

seed 사용

package chapter12;

import java.util.Random;

public class RandomEx {

    public static void main(String[] args) {

        Random r1 = new Random(42); // seed 42
        Random r2 = new Random(42); // seed 42

        System.out.println("r1");
        for (int i=0; i<5; i++) {
            System.out.println(i + "=" + r1.nextInt());
        }
        System.out.println("r2");
        for (int i=0; i<5; i++) {
            System.out.println(i + "=" + r2.nextInt());
        }

    }

}

주요 메서드

package chapter12;

import java.util.Random;

public class RandomEx2 {

    public static void main(String[] args) {

        Random rand = new Random();

        // nextInt(n) : 0이상  n 미만
        for (int i=0; i<5; i++) {
            System.out.println(rand.nextInt(6)+1);
        }

        // boolean 값
        for (int i=0; i<5; i++) {
            System.out.println(rand.nextBoolean());
        }

        // 정규표준편차 값 (평균 0, 분산 1)
        for (int i=0; i<5; i++) {
            System.out.println(rand.nextGaussian());
        }

    }

}

Date 클래스

package chapter11;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateEx {

    public static void main(String[] args) {
        Date now = new Date();
        System.out.println(now);
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sf.format(now));

        Calendar cal = Calendar.getInstance();
        Date d = new Date(cal.getTimeInMillis());
        System.out.println(sf.format(d));

    }

}

Calendar 클래스

package chapter12;

import java.util.Calendar;

public class CalendarEx {

    public static void main(String[] args) {

        Calendar today = Calendar.getInstance();

        System.out.println("올해 년도 :"+today.get(Calendar.YEAR));
        System.out.println("이번달 :" + (today.get(Calendar.MONTH)+1));
        System.out.println("년도기준 몇째주 :"+today.get(Calendar.WEEK_OF_YEAR));
        System.out.println("월기준 몇째주 :"+today.get(Calendar.WEEK_OF_MONTH));
        System.out.println("일자 :" + today.get(Calendar.DATE));
        System.out.println("일자 :" + today.get(Calendar.DAY_OF_MONTH));
        System.out.println("년도기준날짜 :"+today.get(Calendar.DAY_OF_YEAR));
        System.out.println("요일 (일)~ 토)):"+today.get(Calendar.DAY_OF_WEEK));
        System.out.println("월기준몇째요일 :" + today.get(Calendar.DAY_OF_WEEK_IN_MONTH));

    }

}
package chapter12;

import java.util.Calendar;

public class CalendarEx2 {

    public static void main(String[] args) {

        Calendar today = Calendar.getInstance();

        System.out.println("오전 (0) 오후 (1) :" + today.get(Calendar.AM_PM));
        System.out.println("시간 (0~11) :" + today.get(Calendar.HOUR));
        System.out.println("시간 (0~23) :" + today.get(Calendar.HOUR_OF_DAY));
        System.out.println("분 (0~59) :" + today.get(Calendar.MINUTE));
        System.out.println("초 (0~59) :" + today.get(Calendar.SECOND));
        System.out.println("밀리초 (0~999) :" + today.get(Calendar.MILLISECOND));
        System.out.println("Timezone(12~12):" + today.get(Calendar.ZONE_OFFSET) / (60 * 60 * 1000));
        System.out.println("이번달의 마지막일자 :" + today.getActualMaximum(Calendar.DATE));

        Calendar cal = Calendar.getInstance();
        cal.set(2020, (6-1), 12);
        System.out.println("날짜 :" + 
                        cal.get(Calendar.YEAR) + "년 " + 
                        (cal.get(Calendar.MONTH) + 1) + "월 " + 
                        cal.get(Calendar.DATE) + "일");

    }

}

두 날짜간 일수 구하기

Data 클래스 사용

package chapter12;

import java.util.Date;

public class CalendarEx3 {

    public static void main(String[] args) {


        // 현재일
        int sYear = 2020;
        int sMonth = 6;
        int sDay = 12;

        // 이전일
        int eYear = 2020;
        int eMonth = 6;
        int eDay = 1;

        Date sd = new Date();
        Date ed = new Date();

        sd.setYear(sYear);
        sd.setMonth(sMonth-1);
        sd.setDate(sDay);

        ed.setYear(eYear);
        ed.setMonth(eMonth-1);
        ed.setDate(eDay);

        long temp = (sd.getTime() - ed.getTime()) / (1000L*60L*60L*24L);
        int diff = (int)temp;

        System.out.println(diff + "일 경과");

    }

}

Calendar 클래스 사용 - 1일 오차 있음

package chapter12;

import java.util.Calendar;

public class CalendarEx4 {

    public static void main(String[] args) {


        // 현재일
        int sYear = 2020;
        int sMonth = 6;
        int sDay = 12;

        // 이전일
        int eYear = 2020;
        int eMonth = 6;
        int eDay = 1;

        Calendar sCal = Calendar.getInstance();
        Calendar eCal = Calendar.getInstance();
        sCal.set(sYear, sMonth+1, sDay);
        eCal.set(eYear, eMonth+1, eDay);

        long diffSec = (sCal.getTimeInMillis() - eCal.getTimeInMillis()) / 1000;

        long diffDay = diffSec / (24*60*60);

        System.out.println(diffDay + "일 경과");

    }

}

GregorianCalendar 클래스 사용

package chapter12;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class CalendarEx5 {

    public static void main(String[] args) {


        // 현재일
        int sYear = 2020;
        int sMonth = 6;
        int sDay = 12;

        // 이전일
        int eYear = 2020;
        int eMonth = 6;
        int eDay = 1;

//      Calendar sCal = Calendar.getInstance();
//      Calendar eCal = Calendar.getInstance();
//      sCal.set(sYear, sMonth+1, sDay);
//      eCal.set(eYear, eMonth+1, eDay);
        Calendar sCal = new GregorianCalendar(sYear, sMonth+1, sDay);
        Calendar eCal = new GregorianCalendar(eYear, eMonth+1, eDay);

        long diffSec = (sCal.getTimeInMillis() - eCal.getTimeInMillis()) / 1000;

        long diffDay = diffSec / (24*60*60);

        System.out.println(diffDay + "일 경과");

    }

}

Calendar 와 Date 간의 변환

package chapter12;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class SimpleDateFormatEx2 {

    public static void main(String[] args) {

        // Calendar 와 Date 간의 변환은 다 음과 같이 한다 •
        Calendar cal = Calendar.getInstance() ;
        cal.set(2020, 5, 13); //2020 년 6 월 13 일 - 월은+1
        Date day = cal.getTime() ;
        SimpleDateFormat sdf1 , sdf2 , sdf3 , sdf4 ;
        sdf1 = new SimpleDateFormat ("yyyy-MM-dd" );
        sdf2 = new SimpleDateFormat ("yy-MM-dd E요일 " ) ;
        sdf3 = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss.SSS " ) ;
        sdf4 = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss a" ) ;
        System.out.println(sdf1.format(day));
        System.out.println(sdf2.format(day));
        System.out.println(sdf3.format(day)) ;
        System.out.println(sdf4.format(day));

    }

}

java.text 패키지

DecimalFormat 클래스

package chapter12;

import java.text.DecimalFormat;

public class DecimalFormatEx {

    public static void main(String[] args) {

        double[] scores = {90.555, 80.6666, 70.77777, 60.666666, 50.5};

        DecimalFormat df = new DecimalFormat("#,###.00");

        for (int i=0; i<scores.length; i++) {
            System.out.println(df.format(scores[i]));
        }


    }

}
package chapter12;

import java.text.DecimalFormat;

public class DecimalFormatEx2 {

    public static void main(String[] args) {

        DecimalFormat df1 = new DecimalFormat("#,###.##");
        DecimalFormat df2 = new DecimalFormat("000,000");

        System.out.println(df1.format(5500));
        System.out.println(df2.format(5500));

    }

}

SimpleDateFormat

package chapter12;

import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatEx {

    public static void main(String[] args) {

        Date now = new Date();
        System.out.println(now);
        SimpleDateFormat sf = new SimpleDateFormat("yyyy MM dd HH:mm:ss E a");
        System.out.println(sf.format(now));

    }

}
package chapter12;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatEx3 {

    public static void main(String[] args) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String strDate = "2020-06-13";

        Date d = null;
        try {
            d = sdf.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(d);

        SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd E요일");
        System.out.println(sf2.format(d));

    }

}

java.util.regex 패키지