본문 바로가기

java,jsp,spring/java

java 스레드, 메모리 사용 영역

스레드(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 생성자
    1. String()
    2. String(char[] value) // 문자배열
    3. 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