스레드(thread)
- 프로세스 내에서 실행되는 흐름의 단위
메모리 사용 영역
- OS에서 할당 받은 메모리 영역(Runtime Data Area)을 세 영역으로 구분
- 메소드 영역 : static 영역(클래스 로딩 시 생성)
- 클래스정보(멤버변수의 이름)
- 변수정보(데이터타입, 접근제어자정보)
- 메소드정보(메소드 이름, 리턴타입, 파라미터, 접근제어자 정보)
- static변수(정적 멤버변수, static이 붙은 자료형)
- final class변수
- Constant pool(상수풀 : 문자상수, 타입, 필드, 객체참조가 저장됨)
- 힙 영역 : 객체, 배열 영역
- 스택 영역 : Primitive 타입 (boolean, char, short, int, long, float, double) 의 데이터가 값이랑 같이 할당,String 타입은 변수 명만 할당 값은 힙 영역에 할당, 스레드당 하나 할당
- 자세한 설명 링크 : https://devkingdom.tistory.com/226
[JAVA] JAVA 메모리 이야기 - Stack 과 Heap
하이.. ! 어느날 회사의 누군가 Java의 메모리가 어떻게 관리되는지에 대해서 물어봤다. 대답이 많이 나오지 않았다... 나름대로 Java를 제일 잘한다고 생각했었고, 자신감도 있던 상태라 충격이 컸
devkingdom.tistory.com
String 객체, String 리터럴
public class MadPlay {
public static void main(String[] args) {
String someLiteral = "kimtaeng";
String someObject = new String("kimtaeng");
String internResult = someObject.intern();
// someObject가 가진 문자열을 constant pool에서 찾고 없으면 문자열을 넣어줌
}
}
// 문자열과 객체가 위치한 영역이 다름
- String 생성자
- String()
- String(char[] value) // 문자배열
- String(String original)
- 수정 불가능
String s = new String(”Hello”);
String t = s.concat(”Java”);
// s객체에 Java가 합쳐지는게 아니라 새로운 HelloJava라는 문자열을 가르킴
- 주요 메소드
- 문자열 비교, 연결
- int compareTo(String anotherString) : 비교
- + 연산자 : 문자열 연결
- String concat(String str) : 문자열 연결
- 공백 제거
- String trim()
- 문자열의 문자
- char charAt(int index)
public class StringEx {
public static void main(String[] args) {
String a = new String(" C#");
String b = new String(",C++ ");
System.out.println(a+"의 길이는 "+a.length()); // 공백 포함 3
System.out.println(a.contains("#"));
a = a.concat(b);
System.out.println(a);
a = a.trim();
System.out.println(a);
a = a.replace("C#","Java");
System.out.println(a);
String s[] = a.split(",");
for (int i = 0; i < s.length; i++) {
System.out.println("분리된 문자열"+i+": "+s[i]);
}
a = a.substring(5); // (문자열 0부터 시작)5번째 글자부터 끝까지
System.out.println(a);
char c = a.charAt(2); // 문자열 2번째 글자를 문자값으로 리턴
System.out.println(c);
}
}
'java,jsp,spring > java' 카테고리의 다른 글
java 제네릭, 컬렉션 (0) | 2022.08.03 |
---|---|
java 기타 클래스 (0) | 2022.08.01 |
java 패키지 (0) | 2022.08.01 |
java 추상클래스, 인터페이스 (0) | 2022.07.31 |
java 상속 (0) | 2022.07.31 |