<String 클래스> -입출력할때
cf) String 클래스는 편집이 안되니까 당연히 append나 delete가 없다~!!
1. 문자열
2. literal("") 생성 가능
3. 문자열 편집(수정)을 할 수 없다. ---> 추가하면 계속 새메모리 잡으니까=>StringBuffer / StringBuilder 이용
ex) String e = "오늘 날짜는 " + 1991 + 7 + 16;
문자열은 편집이 안되므로 메모리 4번 생성된다
JVM에 의해서 삭제 시 Garbage Collector로 보낸다
Garbage Collector가 실행(휴지통 비우기)되면 컴퓨터는 멈춘다
"오늘 날짜는 "
"오늘 날짜는 1991"
"오늘 날짜는 19917"
012 789
e ---> "오늘 날짜는 1991716"
4. 비교시 == 사용하면 reference(참조값)을 비교한다 equals() 사용하면 문자열의 내용을 비교한다.
※ 문자열 자체가 reference(참조값) 이다.
※ 똑같은 내용의 문자열 리터럴은 메모리에 1번만 생성된다. new는 할 때마다 메모리에 생성된다
cf)) 주소값비교
문자열은 ==로 하면 주소값 비교
equals함수로 비교해야함
ex) 언어가 섞일 수밖에 없는 이유?
서울시 강남구 강남대로 90 - C
강남역 11번 출구 50m - Java 참조값
<String 클래스 함수>
<StringBuffer / StringBuilder 클래스>-계산할때 수정필요할때 씀
cf) 예전에는 빌더를 많이썼는데 요즘은 버퍼를 많이씀
1. 문자열
2. 문자열 편집이 가능
[사용법]
StringBuffer buffer = new StringBuffer();
buffer.append(추가할 값);
cf) append 는 끝에 계속 문자 추가(앞문자 안지우고 덧대서)
buffer.delete(0, 5); --> 보통 buffer.delete(buffer.length()); 이렇게해서 append로 전에 쓰인거 지우는 방법 씀.
cf) 0번부터 5번 이전까지 지운다!!!
[출력]
=> System.out.print(버퍼이름); 하면 그냥 출력되고
버퍼이름.toString() 으로 하면 String형으로 변환된다!
<StringTokenizer(java.util)클래스와 String클래스의 split()>
cf) split(): 자바스크립트에도 나오고..등으로 중요함
1. 문자열을 분리할 때 사용
2. 분리된 문자열을 Token이라고 한다.
ex) 기준점: -
010-2020-2020
010 <-토큰
2020 <-토큰
2020 <-토큰
3. StringTokenizer는 비어있는 값은 무시하고 split()는 비어있는 값도 인식한다.
- 함수들
hasMoreTokens() - 현재 위치에 토큰이 있으면(T), 없으면(F)
nextToken() - 토큰을 꺼내고 다음 위치로 이동
<static - 클래스변수>
1. 메모리 static 영역에 1번만 생성된다. → 초기화 1번만 수행 (프로그램끝날때까지 살아있다)
모든 객체가 공유한다. (공유변수)
2. static메소드에서는 static변수만 사용 가능
★ static메소드에서는 this를 참조할 수 없다 -> 메모리에 한개뿐이니까
3. static변수나 메소드는 호출시 클래스명으로 직접 호출 할 수 있다.
객체로도 호출이 가능하다
4. static{ } - 초기화 영역 = > ★ 스태틱 영역 따로 잡아서~!!!
- 생성자보다도 먼저 수행한다
=> 따라서 싱글톤은 static영역을 사용할 수 밖에 없다
cf) C는 delete까지 개발자 몫이지만 자바는 JVM이 삭제 해준다
5. static 메소드 호출
static method
[형식]: public static void output(){
System.out.println("static 메소드...");
}
① StaticMain.output();//클래스명.메소드()
② output();//길동아 하듯이 객체.메소드 //내구역이다!!-빼도됨.
③ st.output();//객체.메소드()
<메모리>
- static 영역이 그리 넓지 않으니 많이 안쓰는게 좋겠다, 프로그램 끝날 때 까지 안지워짐
cf) static에 한번 잡힌 변수는 또 안잡힌다 -> 한개로 이용
- heap 영역은 나머지가 할당되는거라 항상 바뀐다 : new
cf) new 할때마다 메모리에 계속 생성된다(객체생성). (static과 차이점)
- stack 영역 : 지역변수{구역}
<import static> -비추천(가독성낮아지니까)
: 간단하게 static 상수 또는 메소드를 호출할 때 사용
import static: 수기로 알려준다. 파이썬 모듈 개념에 대한 기초이론에 나옴
cf) Random() 함수
nextDouble());//0<=난수<1
(r.nextInt());//21억?
(r.nextInt(100)+1));//1~100
pow(2,5): 2의 5승 <- 기본형이 실수형으로 출력됨.
* : 와일드 카드(모든 것)
'JAVA' 카테고리의 다른 글
210805(목) 자바 13일차 - 상속(클래스형변환 , instanceof, Frame) / 색 / final(상수화) (0) | 2021.08.05 |
---|---|
210804(수) 자바 12일차 - 상속(개념, 오버라이드, 결합도, Object) (0) | 2021.08.04 |
210802(월) 자바 10일차 - heap / DTO... / 멤버숙제 / 초기화 / 리턴 / 생성자 / this / 스캐너 / varargs / 샐러리숙제 / 리터럴 (0) | 2021.08.02 |
210730(금) 자바 9일차 - 객체지향개념 / 클래스 / 메소드 / 오버로딩 / 객체배열 (0) | 2021.07.30 |
210729(목) 자바 8일차 - 다차원배열 / 배열문제(야구게임, 성적표2) (0) | 2021.07.29 |