API (Application Programming Interface)

  • 다른 사람이 만들어 놓은것을 쓰는 것. 안내문, api documentation.
  • JAVA8 버전의 Documentation 확인 가능 reference - JAVA API Document
  • https://docs.oracle.com/javase/8/docs/api/index.html

API 화면

String

  • java.lang 이 기본 패키지

  • deprecated 가 있으면, 버전 업그레이드 시 사라짐으로 사용하지 않는게 좋다.

    constructor 여러개.

    1.
    String str1 = "Korea";
    
    2.
    String str2 = new String("Korea");
    
    3.
    char[] ch = new char[3];
    ch[0] = 'a';
    ch[1] = 'b';
    ch[2] = '%';
    
    4.
    String str3 = new String(ch);
    
    5.
    String str4 = new String(ch,1,2); //(배열, 위치, 개수)
    //offset : 현재 값을 기준으로 떨어진 거리
    ch에서 하나 떨어진 거에서부터 두개의 문자열만 가져와라
    ex) abcd --> bc
    

Methods

스트링 데이터에 있는 메소드들은 원본을 바꾸지는 못한다.(스트링은 불변객체다. Immutable)

  • String.charAt(int index) //index 번째에 있는 캐릭터를 반환해준다.
  • CharSequence // 그냥 문자열이라고 생각하면된다.
  • str1.compareTo(str2);
  • str1.compareToIgnoreCase(str2);
  • str1.concat(str2); //str1에다 str2를 붙이는 것
  • str1 = String.copyValueOf(charAray); //이런 식으로 사용, str1에 str2가 들어간다. str는 character 배열.
  • str1.equals(str2 ) //contents가 같으면
  • **str1.isEmpty(); **// str이 비었으면 true 리턴
  • str1.startWith(string prefix); //str1이 prefix로 시작하면 T리턴. 아니면 F
  • str1.indexOf(2); //x번째 인덱스에 있는 문자 리턴
  • str1.lastIndexOf(??); // parameter안에 들어가있는 캐릭터가 str1에서 마지막으로 나타나는 인덱스를 리턴한다. 안 나타나면, -1
  • str1.spilt(String rgx); // String[] str4= str1.split(“B”); 이런식으로 사용한다. B는 제거되고, 그 전 후 스트링들이 배열로 저장된다.(rgx가 구분자)
  • str1.substring(int beginIndex); //부분 문자열
  • str1.valueOf(char[] data);
  • str1.replace(‘송’,’망’); // 송이 모두 망으로 바뀐다. 근데 원본 데이터를 바꾸진 않는다.
  • String money = String.format(“%,d”, sum); //105,000 이런 식으로 나온다.

주소와 내용

		String s1 = "korea";
		String s2 = "korea";
		String s3 = new String("korea");
		System.out.println(s1==s2); //true
		System.out.println(s1==s3);// false

		//new를 통해서 만들어지는 애들의 영역은 heap영역에 있다.

		String s1 = "korea";
		String s2 = "korea";

		s1="hello";
		System.out.println(s1);
		System.out.println(s2);
		// hello, korea

StringBuffer

String 과 다른 점 : mutable이라서 바꿀 수 있다.

java.util - GregorianCalender

GregorianCalendar calendar = new GregorianCalendar();
System.out.println(calendar);
====================================RESULT==========================================
>>java.util.GregorianCalendar[time=1600231159053,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=22,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=8,WEEK_OF_YEAR=38,WEEK_OF_MONTH=3,DAY_OF_MONTH=16,DAY_OF_YEAR=260,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=39,SECOND=19,MILLISECOND=53,ZONE_OFFSET=32400000,DST_OFFSET=0]

스태틱

대문자로 되어있는 변수는 스태틱 변수이다. 내가 가져올 수 있는 값. 다 public

API 문서엔 getter가 11개 밖에 없다. 그러나 아래 그림엔 굉장히 getter이 있다. 그 이유는,

get_calendar

아래와 같이 object와 calendar을 상속받았기 때문이다.

상속

날짜

	GregorianCalendar calendar = new GregorianCalendar();
		System.out.println(calendar);
		int y1 = calendar.get(Calendar.YEAR);
		int m = calendar.get(Calendar.MONTH);
		int d = calendar.get(Calendar.DATE);

이렇게하면? 현재 날짜는 2020년 9월 16일인데, 2020년 8월 16일이라고 뜬다. 왜냐면 월이 0~11월이라서.. 그래서 +1을 해줘야지 알맞게 나온다.


시간

		int h = calendar.get(Calendar.HOUR);
		int mI = calendar.get(Calendar.MINUTE);
		int s = calendar.get(Calendar.SECOND);

요일

		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

		Calendar.SUNDAY == 1 //true
		Calendar.SUNDAY 이 변수는 static final이다.

		오늘은 수요일, 결과 값으로는 4가 찍힌다.
		일 월 화 수 목 금 토
		1  2  3  4 5  6 7

java.util - StringTokenizer

stk.countTokenizer stk = new StringTokenizer(words);

구분자를 특별히 넣어주지 않으면, 띄어쓰기가 구분자가 된다.

stk.countTokenizer stk = new StringTokenizer(words,”,”);

cf) split은 구분자 하나만 된다. 반면에 StringTokenizer은 여러개 가능한데

입력 폼이 신기하다. “ ,#” –> 이게 구분자 하나가 아니라 세개다. 띄어쓰기, 콤마, 샵 이렇게 세개


hasMoreTokens :

while(stk.hasMoreTokens()){
	System.out.println(strk.nextToken());
}
System.out.println(stk.countTokens); //0이 나온다.
//큐같은 느낌. 먼저 들어간 데이터가 먼저 사라진다.
System.out.printf("총 사용 금액 : %,d", sum);

%,d 라고 하면, 세자리마다 숫자에 점을 찍어준다. 전 세계 공통

Integer

Integer.BYTES // 4 가 나옴. 인티저 공간 크기
Integer.MIN_VALUE // 32비트가 표현할 수 있는 가장 작은 값 (-2의 31승)
Integer.MAX_VALUE // 32비트가 표현할 수 있는 가장 큰 값(2의 31승-1)
Integer.toHextString(123); //16진수로 변환해준다.
//10진수 Decimal, 8진수 Octal, 16진수 Hex Decimal
Integer.parseInt("123");

StringBuffer

아래와 같은 스트링 연산은 객체를 버리고 생성하기 때문에 JVM 의 부담이 크다.

String temp = "사과";
temp = "나무";

string a = "사과";
a=a+"나무";

그러나 StringBuffer는 이러한 부담이 없다. 애초에 공간을 크게 만들어서 원본을 버리지 않게.

1.
StringBuffer sb = new StrinBuffer();
int capacity = sb.capacity();
//기본이 16바이트이다.기본용량이 충분히 크다.

2.
StringBuffer sb = new StrinBuffer("사과");
int capacity = sb.capacity(); //18바이트 나옴. 사과는 4바이트만 필요한데.
sb.append("포도"); //"사과포도"

sb.append("포도")
.append("감")
.append("복숭아"); //이런식으로 chaining 한다. 세줄이 한줄

capacity = sb.capacity(); // 18바이트이다. 무작정 늘리는게 아니라, 좀 찼을때 늘린다.

sb.toString // 이렇게해서 스트링 만든다.

Object

객체.getClass(); //무슨 클래스인지 알아낸다.

© 2018. All rights reserved.

Powered by Hydejack v8.5.2