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())
//둘은 같은 결과