JVM
JVM 은 메소드 , 스택, 힙 영역으로 구성 됩니다.
메소드 영역 - 정적영역으로 자주사용되는 메소드를 정적선언으로 이곳에 위치 합니다. ex) main [static] 정적선언
추후 메소드 영역 설명
스택 - 주로 변수[주소]를 넣는 공간으로 사용 메모리는 힙에서 불러서 사용. 기본타입은 스택에서만 이루어짐
힙 영역 - 참조타입 을 불러와서 스택영역에서 JVM이 종료 될때 까지 new로 선언된 메모리 저장
모두 st1 ~ st3 아톰으로 까지 이름 아톰으로 동일 st4만 아톰2 [주소는 이해를 위해 100 200 300 표기]
st1 힙 영역에 값"아톰" 새로 생성됨 주소[100]
st2 힙 영역에 기존 생성해놓은 동일한 이름이 있기때문에 그대로 새용 값 "아톰" 주소[100]
st3는 new를 이용하여 새로 생성을 해줌. 그 결과 힙영역에 같은 이름이 있어도 새로운 주소로 만들어짐.
값 "아톰" 주소 [200]
st4는 이름이 다른경우 테스트 힙영역에 새로 다음 주소로 생성됨 값"아톰2" 주소[300]
형식 | 선언 | 값 | 주소 | |
st1 | string | String st1 ="아톰" | "아톰" | 100 |
st2 | string | String st2 ="아톰"; | "아톰" | 100 |
st3 | string | String st3 = new String("아톰"); [새로 생성] | "아톰" | 200 |
st4 | string | String st4 ="아톰2"; | "아톰2" | 300 |
package chap03;
public class Test3 {
public static void main(String[] args) {
String st1 ="아톰";
String st2 ="아톰";
String st3 = new String("아톰");
String st4 ="아톰2";
if (st1 == st2) //주소비교 st1 주소 100 st2 주소 100
System.out.println("st1과 st2의 주소는 같다.");
else
System.out.println("st1과 st2의 주소는 다르다.");
if (st1 == st3) // 주소비교 st1 = 100 st2 = 200
System.out.println("st1과 st3의 주소는 같다.");
else
System.out.println("st1과 st3의 주소는 다르다.");
if (st1.equals(st3)) // 값 비교 값 = 아톰 으로 같다.
System.out.println("st1과 st3의 값 같다.");
else
System.out.println("st1과 st3의 값 다르다.");
if (st1 == st4) // 주소비교 st1 = 100 st4 = 300
System.out.println("st1과 st1의 주소는 같다.");
else
System.out.println("st1과 st4의 주소는 다르다.");
if (st1.equals(st4)) // 값 비교 값 아톰 = 아톰2 로 다르다.
System.out.println("st1과 st1의 값 같다.");
else
System.out.println("st1과 st4의 값 다르다.");
}
}
자료 퍼가실때는 댓글, 출처 부탁해요~
#하얀배터리 #IT #정보보안 #윈도우 #window #프로그래밍 #programming #html #java #C #javascript #database #jQuery #서버 #보안 #리눅스
'Programing > Spring , Springboot , JPA' 카테고리의 다른 글
[JAVA기초] #10 - 중첩 if문 , switch case문 (0) | 2019.10.22 |
---|---|
[JAVA기초] #9 - if 문, if -else문 (0) | 2019.10.22 |
[JAVA기초] #7 - 강제 형변환 , [println , printf ] (0) | 2019.10.22 |
[JAVA기초] #6 - JAVA연산자 우선순위 (0) | 2019.10.22 |
[JAVA기초] #5 - 증감연산자 (0) | 2019.10.21 |