12-API Class



기본 API 클래스

API(Application Programming Interface)

  • jdk 8은 약 170여개의 패키지를 갖고 있음

  • Object는 java.lang 패키지 중 하나로, 자바 클래스들의 최상위 클래스이다.

    (모든 클래스에는 extends Object가 자동 정의되어 있다. *import가 필요 x)

    • ex) toString : 객체 출력 문장을 자동으로 호출하며, overriding으로 객체 출력 내용을 결정할 수 있다.

    • override하지 않고 객체를 출력시 ‘클래스풀네임@해시코드’가 출력된다.

      //Integer.parseInt(a)
      String a = "12345";
      int b = Integer.parseInt(a);
      System.out.println(b);// 12345 
          
      //toString
      int b = 12345;
      String a = Integer.toString(b);
      System.out.println(a);// "12345"
          
      //toString overriding
          
      class Freinds{
      	  String freinds;
      	  int age;
          	  
      	  public Freinds() {}; // 기본생성자
      	  public Freinds(String freinds, int age){
      	    this.freinds = freinds;
      	    this.age = age;
      	  }
      	  @Override
      	  public String toString() {
      	    return freinds + age;
      	  }
      	}
          
      public class Test {
          
      	public static void main(String[] args) {
          		
      			    Freinds f1 = new Freinds("하영", 17);
      			    System.out.println(f1); 
          
      	}
          
      }
          
          
      


    • ex) equals: 객체(주소값) 동등성을 비교한다.

    • overriding할 시 주소가 아닌 다른 부분의 동등성(데이터 값) 비교가 가능하다.

      //equals
          
      class A{
        int b;
        public A(int b){
          this.b = b;
        }
      }
          
      public class Equals{
        public static void main(String[] args) {
          A a1 = new A(10);
          A a2 = new A(10);
              
          if(a1.equals(a2)) {
            System.out.println("같다");
          }else {
            System.out.println("다르다");
          }
      }
        //참조변수를 비교  "다르다" 출력
            
            
        class A {
          int x;
              
          public boolean equals(Object obj){
            if(obj instanceof A){
              return x = ((A)obj).x; //형변화
            } else {
              return false;
            }
          }
              
        public A(int x){
          this.x = x;
        }
        }
            
        public class Equals1{
        public static void main(String[] args) {
          A a1 = new A(1234);
          A a2 = new A(1234);
           if(a1.equals(a2)) {
            System.out.println("같다");
          }else {
            System.out.println("다르다");
          }
        }
        }
        // "같다" 출력
      



  • 자바가 갖고 있는 기본 패키지는 대표적으로 다음과 같다.

    • java.lang
    • java.util
    • java.time


    java.lang.String

    • 문자열 저장 객체

    • String 클래스만이 갖고 있는 특징을 제공한다. String s1 = new String(“java”)키워드 없이 String s1= “java” 가능, + - 연산자 사용 가능 -> 문자열 결합 가능

      char c[] = {'a', 'b', 'c', 'd'}; // "abcd"
      String sc = new String(c); // "abcd"
      String sc = new String(c, 1, 2); //"bc"(1~2까지만 출력)
      String sc = new Stirng(c, 1)//"bcd"(1부터 전부)
            
        byte b[65, 66, 67, 68]
        String sb = new String(b); // "ABCD"
          
      


    String의 활용
    String s = new String();
      
    s.toUpperCase(); //대문자로 바꾸기
    s.toLowerCase(); //소문자로 바꾸기
    s.replace('a', 'b'); // a라는 문자를 다 b로 바꾸어라 
    s.replace("java", "kava"); // "java"를 "kava"로 바꾸어라 
      
    s.equals(); // 같은 내용인지를 확인(대소문자 구분)
    s1.equlaslgnoreCase(s3) // 같은 내용인지를 확인(대소문자 구분x)
        
      String s1 = java;
      String s2 = new String(java);
      String s3 = JAVA;
      s1 == s2 // 주소값 - false
      s1.equals(s2)//true
      s1.equalsIgnoreCase(s3)// true
      
    String s = "program";
    s.indexOf("ram"); // 4 (4번 인덱스부터 "ram"이 나온다)
    s.indexOf("Lam"); // -1 
      
    s.substring(4, 7); //4부터 6까지(7보다 작은 index까지) ram
    s.substring(4); // 4부터~ 끝까지 ram 
    
    String s = program;
    s.charAt(0) // ‘p’ 리턴타입은 character (문자)
      
    String s = 100 - 김사원 - 34500.5 - 사원 - 총무부;
    String[] result = s.split(-); 
    // -이 나올때마다 분할. 리턴되어지는 것은 스트링배열. 쪼개져 나오는 것이기 때문에 char는 안됨. 
      
    System.out.println(String.format(%20s , s)); // 20자리의 문자 형태
      
    
    StringBuffer sb = new StringBuffer(java);
    sb.append(program);
    // 문자열 생성 이후에 문자열 변경, 추가되는 작업이 있다면 추가 작업 전용으로 쓴다. 
    



java.util.regex.Pattern

정규표현식: 문자열이 정해진 형태로 구성 될 필요가 있다면, 정규형태에 맞는 문자열인가 검사해야만 한다. 그 검사식이 정규표현식이다.

[abc] 문자 1개가 a나 b나 c만 가능
[a-zA-Z0-9] 문자 1개가 알파벳 소, 대문자, 숫자 중 1개 가능( =/w)
[0-9] 문자 1개가 숫자 구성(=\d)
[abc]{3} a나 b나 c만 구성된 문자열 3개
[abc]{3, 5} a나 b나 c만 구성된 문자열 3-5개
[abc]{3,} a나 b나 c만 구성된 문자열 3개 이상
[abc]+ a나 b나 c만 구성된 문자열 1개 이상
[abc]* a나 b나 c만 구성된 문자열 0개 이상
[abc]? a나 b나 c만 구성된 문자열 0-1개
package day6;

import java.util.regex.Pattern;

public class PatternTest {

	public static void main(String[] args) {
		//정규표현식 전용 문자열 
		// 010 - 시작 / 국번 3-4자리 번호- / 전화번호 4자리 숫자
		System.out.println(Pattern.matches
				("010-[0-9]{3,4}-[0-9]{4}", "010-1234-5678"));//t
		System.out.println(Pattern.matches
				("010-[0-9]{3,4}-[0-9]{4}", "012-1234-5678"));//f
		System.out.println(Pattern.matches
				("010-[0-9]{3,4}-[0-9]{4}", "010-123-5678"));//t
		System.out.println(Pattern.matches
				("010-[0-9]{3,4}-[0-9]{4}", "010-123a-5678"));//f
		
		//id - 알파벳, 숫자,!#$%_ , 8-10자리 가능  [a-zA-Z0-9!#$%_]{8, 10}
		// @/ 이메일 서버 - 알파벳, 숫자 구성. 3-10자리 가능  [a-zA-Z0-9]{3, 10}
		//.  ---> 정규표현식에서 아무 문자 갯수 무관 따라서 \\. 
		// com, co.kr, go.kr (com|co.kr|go.kr)
		
		String myemail = "-javadosa1!@campus.com";
		boolean result = Pattern.matches
				("[a-zA-Z0-9!#$%_]{8, 10}@[a-zA-Z0-9]{3, 10}\\.(com|co.kr|go.kr)", myemail);
				
				if(result == true) {
				System.out.println(myemail + "은 메일로 적합합니다");
				}
			//[표현형태(0-9..)]{최소횟수, 최대횟수(생략가능)}(문자그루핑)
		
		
	}

}



날짜와 시간 표현

  • java.util.Date/Calendar
  • java.text.SimpleDateFormat
  • java.time.*

java.util.Date

Date now = new Date();//현재 시스템 날짜시간 
Date now = new Date(1/1000); // 1970 1월 1일 0시 0분 0분~ 경과한 날짜시각  
Date now = new Date(2021, 3, 15); //오차범위가 커져서 없앰.

//시스템이 주는 자동으로 주는 시간을 가져오려면 자동으로 
//Date 대부분 메소드 사용 자제 권고  - > 대부분의 기능은 Calendar 클래스 이용 권고한다.


  • Calendar

  • java.text.SimpleDateFormat
SimpleDateFormat sd = new SimpleDateFormat(yyyy - MM - dd E HH:mm:ss);
(yyyy - MM - dd E HH:mm:ss);

Calendar cal = Calendaer.getInstance();
sd.format(cal.getTime())
//둘은 같은 결과