반응형
*자주 사용하는 클래스들
-
java.util package에 존재
-문자열 관련 class들
-
String, StringBuffer, StringBuilder, StringTokenizer
-
=> java.lang =>java.util
-수학 관련
-
Math
-
=>java.lang
-날짜
-
calender, Date
-
=>java.util
-formatter
-
SimpleDateFormat, DecimalFormat
-
=>java.text
-지역
-
Locale
-
=>java.util
-난수
-
Random
-
=>java.util
<21일 변수부터..
<패키지는 폴더와같고 비슷한,동일한 일을 하는것을 묶기위해 만듦.
<lang은 자동으로 추가되어 import하지 않아도 된다.
<StringBuffer와StirngBuilder는 heap에 바로 저장하여 변경시 원본 문자열이 변경되고, 같은문자열을 여러개 가진다.
<자바는 느린게 장점이자 단점.
String : 짧은 문자열/ 반면에 얘네는 긴문자열 사용할 때에
*StringBuffer, StringBuilder
-
메모리에 직접생성됨.
-
buffer는 multi thread에서 동시접근이 불가능,동기화처리 가능/ builder는 multi thread에서 동시접근이 가능, 동기화처리 불가능
-
사용법)
-
1.생성)
StirngBuffer sb = new StringBuffer();
<new가 들어감으로 JVM의 stack에 sb와 주소가 들어가고 heap에 값이 들어간다.
-
2.값을 덧붙임)
값=정수,실수,문자,문자열,boolean,,,
<현재주소의 마지막번째에 덧붙이는 것(append)->넣을때는 정수인데 가서 붙을때는 문자열이된다.
sb.append(10);
sb.append(12.5);
=>heap에 10102.5
sb.append('A');
=>heap에 10102.5A
<method가 값을 반환할때 이 자체가 값이 되어 가변값일을 한다.
sb.append("안녕").append("12월").append(5);
<안녕까지가 sb가되고, 또 12월까지가 sb가 되고, 해서 메소드 체인으로 사용이 가능하다.
-
인덱스검색)
indexof(문자를 넣으면 앞에서부터 가장먼저 찾아지는 시작인덱스를 알려준다,단 0부터시작.)
lastIndexOf(끝부터~~)
-
인덱스에 해당하는 "문자"얻기)
charAt(3)
-
자식문자열 얻기)
subString(시작,끝인덱스+1)
-
문자열 삭제)
delete
-
3.문자열로 반환
sb는 객체지 문자열이 아니니까, 문자열로 받아낼때 toString()
: 원래 object에 있는 메소드(객체의 주소와 문자를 반환하는 ) 것을 오버라이딩하여 시작부터 끝까지 문자열로 바꾸어 뽑아내는 일을 하게 함.
String s= sb.toString();
equalse로 비교해본다?
-
4.값을 삽입
sb.insert(index, 값); <원하는 위치에 어떠한 값이던.
반환하는건 객체. 그래서 체인형으로도 쓸수 있는데, 바로바로 변경되어 원하는위치가 아닐수도 있기때문에 잘 쓰지 않는다.
-
5.문자열의 순서를 뒤집을때 쓰는 method
reverse() : 뒤집은 문자열을 내어준다.
sb.reverse();
<메소드가 buffer와 builder둘다 똑같이 사용됨.. 단지다른건 동시접근..! 속도 때문에 builder로 많이 사용한다.
<String 과 다르게 대소문자를 반대로 소대문자.. 로 바꾸어줄수는 없다.
String : 짧은 문자열/ 반면에 얘네는 긴문자열 사용할 때에
-
"오늘은..................글자수에 상관없이 쌍따옴표로 시작해서 쌍따옴표로 끝나는것";
-
긴문자열 : "안"+ "녕" //연산이 들어가 더붙으면 긴 문자열이 된다. => buffer나 builder가 유리
-
+연산이 붙으면 buffer나 builder로 무조건 바뀌어버린다.
-
문자열에 +연산을 하면 Compiler가 JDK 1.5이하면 StringBuffer로 처리하고, JDK 1.5이상 이라면 StringBuilder로 처리한다(어제글)
-
String에 +쓰지 않는다! 속도문제
▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼
*StringTokenizer
-
<while의 특성을 아주잘 쓰게된다.
-
Stirng은 짧은 문자열을 다룰때, 위의 두개는 긴 문자열을 다룰때.
-
문자열을 자를때 사용한다.(split은 배열이 나오지만 얘는 나오지 않는다.)
-
java.util.packate에서 제공하여 import해주어야 사용할수 있다.
-
문자열을 짧은 한 마디로 구분할 때 사용.
-
=>token
-
사용법)
-
포인터를제어하는 클래스?(실제값이 나한테 없고 제어권만 받아 사용하는 것)
-
이때의 포인터는 뒤로만 가지 앞으로는 갈수 없다.
-
생성)
-
Stirng s= "오늘은 수요일 입니다.";
-
StringTokenizer stk = new StringTokenizer(s);
-
공백으로 토큰을 생성.
-
토큰의 갯수)
-
stk.countTokens();
-
=>반환형 int
-
토큰이 존재하는지
-
stk.hasMoreTokens()
-
=>boolean형 반환
-
값을 얻고 다음토큰으로 포인터를 이동)
-
stk.nextToken()
-
=>반환형 String(몇개나 있는지는 모른다)=>>동네 나쁜형
-
있는지 없는지모르지만 있다면 다뺏는다..
-
while(stk.hasMoreTokenz()){
-
String s= stk.nextToken();
-
//오늘은 에하나, 수요일 에하나, 입니다 에하나 있으면 있는데까지 다 뽑아낸다.
-
}//시작을 몰라 for로 돌리기엔 부적합. for로 있는데로 뽑아와라~~
-
-특정문자열로 구분된(,)문자열? (CSV)
-
new StringTokenizer(s,",");
-
"오늘은,수요일,입니다." 이면 오늘은/수요일/입니다.
-
구분자로 사용된 문자열은 공백이 나오지 않는다.
-
-구분자를 토큰으로 취급하려면
-
new StringTokenizer(s,",",true(보호)|false(버림));
-
오늘은 , 수요일 , 입니다. 다 가진다.
-
split보다 훨신 강력하다. [.]대괄호를 붙여야만이 보호되어 나올수 있기때문에.
-
or기능이있어 "" 안에 여려개를 구분않고 넣어도 그것들로 다 잘 잘려져 나온다.
*Math class
-
생성자가 없어(private 접근자가 붙어)보이지않아 인스턴스화를 할수 없는 클래스이다.
-
저장한값을 객체에 저장하지 않고 계산해서 내어줌.
-
instance 메소드 vs static메소드를 만드는 기준은? 값을 어디에 저장하고 쓰는지,,,
-
객체에 저장하고 그런일이 하나도 없다.
-
수학적인 일을 할 때 사용하는 class
-
객체를 생성하여 사용하는 클래스가 아니다. 사용자가 입력한 값을 하나도 저장하지 않음. 그때그때 계산하여 내어줌.
-
Oracle을 배웠을때 배운 함수랑 동일한 부분이 많음.
-
method만 호출하여 사용하는 클래스
-
절대값 구하기
-
Math.abs(정수);=>절댓값.
-
반올림
-
Math.round( )
-
무조건 소숫점 이하 처음자리에서 반올림한다.
-
오라클보단 기능이 떨어짐.
-
올림
-
Math.ceil()
-
0은 올리지 않는다.
-
절삭하는 mehtod는 없다.
-
(int)로 형변환(casting)해...절삭...
-
내림
-
Math.floor()
-
반환형은 double
-
난수
-
Math.random()
-
반환형은 double
-
0.000000~16개 ~~~ 0.9999999~16개
-
10개의 난수를 얻으려면?
-
Math.random() 에
-
*10 =1.0,,,,,9.0 =>casting하면 1~9구할수 있다.
-
sin,cos,tan.. 도 가능.
*날짜 관련 class
-
Date, Calendar
-
컴퓨터에서 날짜를 아는 유일한 마더보드의 시모스?CMOS?
-
M/B-OS-JVM-Class
-
System클래스로부터 날짜 정보를 얻어서 형식을 만들어 재공하는 클래스들.
<system클래스에 위험분자..!다 죽어버림..
-
시간을 얻는일 : System.currentimeMillis();-천분에 1초 반환형long
-
유일하게 system이 os랑 대화하는 클래스중 시간을 꺼냄.
-
1970-01-01 00:00:00 ms으로 얻어냄...
-
Date는 한번에 보여주고 Calendar는 원하는거..?
-
코드의 수행시간을 잴때 많이 사용.
-
Date, Calendar : java.util.
-
Date : 형식이 있는 날짜로 얻게됨.
-
imprt로 java.util.Date를 처리 해야하고,
-
생성) Date d= new Date(); 도 되고 long 형의 매개변수를 받는 생성자도 있긴하다.
-
method : 비추천이 많아 paas
Deprecated 비추천 |
으로 비추천이 많음..처음에 만들었을땐 일을 잘했는데,...2000년대 밀리니엄 버그때
*SimpleDateFormat
-
날짜 형식을 만들때 사용.
-
java.text패키지 에서 SimpleDateFormat 제공
-
사용)
-
1.생성 ) 사용할 날짜형식을 만드는 일 까지 같이 함.
-
SimpleDateFormat sdf = new SimpleDateFormat(String Pattern);
-
oracle의 tochar가 비슷한 역할을 함.
-
Letter은 하나의 정보를 얻게 되고..., 년-y, 월-M, 일-d, 오전오후-a, 시-h(12시간/H-24시간(0~23)/K(1~24)), 분-m, 초-s, 요일-E(EEEE는 요일까지)
-
이런 letter를 반복해서 만들면 pattern
-
자바는 y하나 넣어도 2018이 나오는데 yy 넣으면 2자가 나온다. mm쓰면 01나오지만 m쓴다고 에러나는건 아니고0빼고 1만.(d도 마찬가지) "년"월일 묶을 필요없이 그냥 써도 된다.
-
2.날짜 객체 생성)
-
Date d= new Date();
-
3.날짜 객체를 넣어서 지정한 형식의 날짜를 얻는다.
-
Methods inherited from class java.text.DateFormat : 부모의 method
-
String로 내보내면 내가 지정한 형식으로 받을수 있게 된다.
-
String s = sdf.format(d);
-
(가지고 있어 관계 : has a 관계) =>둘다 다른클래스의 기능을 쓴다는 공통점.(DateFormat,Date기능을 사용)
-
상속되면 is a (extends,impliments) / has a
-
anonymous는 has a
-
Calendar : 단일 날짜정보를 얻을때에 사용하게 됨.
-
java.util.package (import)
-
추상클래스라 객체가 만들어지지 않는다. =>자식클래스를 가지고 객체화
-
자식: GregorianCalendar 자식클래스. =>인스턴스화 하면 calendar 얻을수 있게된다.
-
하나(단일) 날짜 정보를 얻을때 사용.
-
객체생성)
-
Calendar 클래스가 제공하는 method
-
getInstance() : 객체를 얻어가려함.=>static
-
Calendar c = calendar.getInstance();
-
is a관계의 객체화를 가지고
-
Calendar c = new GregorianCalendar();
-
GregorianCalendar gc = new GregorianCalendar();
-
//생성된 날짜의 정보를 가지게 된다?
-
사용)
-
field(Constant:상수)를 넣어서 값을 얻는다.
-
년: c.get(Calendar.YEAR)
-
=>int형 2018
-
월 : c.get(Calendar.MONTH+1);//0~11월 사람이 생각하는 월보다 하나적게 나옴.
-
일 : c.get(Calendar.DAY_OF.MONTH);
-
요일 : c.get(Calendar.DAY_OF.WEEK);
-
오전/오후 : c.get(Calendar.AM_PM) =>int 0(오전) , 1(오후)
-
시간 : hour of day,,,,(24시간)
반응형