ex13_Java_Api
자바가 제공하는 클래스 사용법 배우기
다 외우지 않아도 됨 -> 이해만
-> tom을 하나만 만듦
-> 문자열 가지고 name1 == name2하면 안되는데
리터럴의 비교는 참조값의 비교를 수행하는것
tom은 보지 않음
내용이 같다라는 것이 아니라
name 1과 name2의 참조값이 동일하다
-> 둘다 12345678번지이다. (tom을 본 것이 아님)
-> 문자열 객체는 항상 새로 생성된다
(기존에 tom이 있든 말든 새로 만듦)
-> tom인지 아닌지 보지않음
-> 자바에 의해서 최적화해서 만들어져서 참조값이 동일해서 같은 문자열로 인식함
-> 대소문자도 일치해야 동일하다
(한글자라도 다른 대소문자 섞여있으면 문제발생함)
case를 무시 - upper case(대문자), lower case(소문자) : 대소문자 무시
★사용자 서비스 처리할때 사용함
( 마음에 들었으면 ? Yes , yes)
-> 같은걸로 인식하려면
공백도 글자수에 포함
\n 줄바꿈 -> 1글자로 처리
캐릭터 변환처럼 생겼음
배열로 안바꿔도 배열처럼 사용할 수 있는 것
-배열로 바꾸지 않아도 호출 가능
인덱스도 있고 길이도 있으니까 -> 배열처럼 쓸 수 있는데 무리 없음 (굳이 배열로 바꾸지 않아도)
end 직전까지 반환
tom하고 cruise 분리
3번(공백) 이전까지
주소분리 /(슬래쉬)로 구분
-> list 부분을 우리가 정하는것 (mapping값 만들어서)
도메인은 돈주고 사는것 (comic.naver.com)
★★★substring인 능력 !! 잘 구분해서 공부하기
-> 첫번째 걱정 다음 위치 두번째 걱정부터 찾겠음
CharSequence 인터페이스는 Stirng을 구현하는 구현체
-> implements여러개 할 수 있음
띄어쓰기 -> 이름이 있다
공백 문자(white space)
-> 일반적인 경우 isEmpty가 대부분
-> 스페이스 넣고 동작
네이버처럼 스페이스나 스페이스 아니든 동일하게 처리시) isBlank() 처리함
우리는 검색을 안하면 검색 안시켜줌
(문어다리 octorpus -> 8개)
0붙이는 이유 : 빈자리를 0으로 채우기
1~12 월을 -> 01~12로 맞추는 방법(%02d)
-> 앞에만 0 채울수 있고 뒤에는 0채울 수 없음
100 적고 앞에 00 두자리 적기
-> 앞에 공백 5개 줄건지? 뒤에 공백 5개 줄건지?
(어떤 문자열에 패턴이 포함되어있는가?- 패턴 검사를 위한 방식)
-> 자바문법은 아님, 별도의 영역이 있음
-> 많은 언어들이 정규식을 가져와서 쓸 수 있음
(정규식 배우는 타이밍 : 구현할때)
-> javascript에서 배울 예정임
정규식 학습이 이루어지기전에는 함부로 쓰지말것!
replace 바꾼다
-> .(마침표)를 모두 _(밑줄)로 바꾸겠다
-> 대괄호[]로
=> 잘 모르면 사용하지 말것
앞뒤로 공백
7글자
-> 공백이 제거 : 3만 남기를
-> replace라는 아이가 따로 있음
-> replaceAll은 정규식을 이용
-> replace는 문자열을 이용
-> 정규식 아니라 그냥 문자열
replace도 다바꾸는것
charsequenc - replace
regular expression - replaceAll
차이일뿐
-> 만약) 쓸일이 있으면 ) ex14 replace로 쓰기( 굳이 all안써도됨)
-> 자바에서 예정되어있지 않음
-> 기본 패키지라 import는 안됨
-> 선언할때는 stringbuffer였지만 답으로 갈때는 string으로 바뀌어서 나간다(변환과정 필수)
문자열 리터럴 은 자바 관리
-> ha va 다르게 생겼으니 따로 만듦
--> 생각보다 쓸데없는 메모리 많이 씀
(hava 처럼 불필요한 중간메모리 많음)
+가 3번이상 반복되는경우 : stringBuffer로 바꿔서
(hava 같은애가 없어지겠금 만듦)
-> 중간객체가 생기지 않아서 메모리낭비 줄어듦
-> 스트링에 buffer(기억장치)를 달아놓고 누적시켜서 사용할 수 있게 해줌
qngBuilder
buffer만 쓰다가 조금 느린 것같아서 나온게 builder임
-> string 빌더가 마지막에는 string으로 바뀌어서 사용
반복적으로 연결되는 연산자는 builder나 buffer를 쓰겠다
-> 0~1 사이의 소수점
-> 1.0은 나올 수 없음 최대 0.99999..
-> 0.1보다 작은 숫자가 나올 확률 10%((대략)
-> 이 숫자들을 가지고 대략적인 확률처리가 가능할듯?!
-> 정수 0,1,2 중 하나나옴
-> 1,2,3 만들어라 -> 1부터 3개
->실행할때마다 조금씩 다름
*random가지고 할 수 있는 일 : 게임(컴퓨터가 무슨 숫자를 만들지 모르니까)
-> 숫자 맞추기 게임 구현
-> 우리가 쓸 건 x
-) seed전달 안하겠다 - 현재 시간을 가지고
-> int로 표현할 수 있는 최대, 최소 21억정도..
정확히 알 수 있는애
-> ctrl + space 누르고 추천되는 변수이름 2개 제공 중 하나 고르기
-> random 처럼 seed전달도 할 수 있다(우리는 첫번째로)
32개짜리를 똑같이 또 만들 확률은 거의 없음 -> 현실에서는 중복된 값이 없는 것으로 판단함
확률상으로 똑같은것을 안만든다.
한자리가 16자리가 나오는데 이게 32자리 나오니까
-> 로또 10장 만들어도 안될 확률이기 때문에 전세계 개발자가 가져다 써도 같은 것이 나오지 않는다라고 봄
UUID를 쓰기만 하면 절대 중복이 안나옴
-> 하이픈(-)보다 나머지 숫자가 중요(중복이 많이 나옴)
어느 서버에 올릴 때 파일의 이름이 바뀌어서 올라감 -> 똑같은 파일이 2개 있으면 안되서
-> 이름처리시 : UUID파일로 바꾸어서 처리함(충돌안나게 : 바꾼 이름은 데이터베이스에 저장해놓고)
-> 2022-1970 = 52년이 몇초분의 1초일까?
-> milisecond 1000분의 1초
-> 7개월치가 아직 계산 x
-> long타입의 max value
-> 아직 멀음
-> 시드값을 long타입으로 계산해서 timestamp로 넘겨줌
-> ㄹ+ 한자
시간
나노초(10억분의 1초) -> 계산할 수 있음
단위가 충분히 낮은시간이 필요시) 시간을 2개 구함 -> 뺌
builder가 +를 대체해서 얼마나 성능이 향상되는가?
-> ABCDEFG .. 만들기
알파벳 26개 붙이기 전에 시간재고 끝나고 시간재고(STOPWATCH)
-> 몇번을 하든 string builder가 이겨야 함( 5배 정도 됨)
-> Nano는 2개를 재야 의미있음
좋은 글 감사합니다.