Jam's story
참조변수 본문
기본타입엔느 정수타입(byte,int,short,int ,long)이 있고 실수타입에는 (float ,double)이 있고 논리타입에는 boolean이 있다.
참조타입에는 배열타입 열거타입 클래스 인터페이스가 있다 .
기본타입은 값을 직접 저장하지만, 참조타입은 번지(주소)를 값으로 갖는다.
string name="애플"; 이라고 해도 , 애플을 저장하는것이 아닌 주소값을 저장한다.
변수는 스택영역에 생성되고 객체는 힙 영역에 생성된다.
힙영역에 객체와 배열이 생성된다
자바에셔는 배열을 객체로 취급한다
스택영역에는 주소값을 저장
참조변수의 ==, != 연산
A와 B는 같은객체 (객체1)을 가르키고 있고, C혼자 다르다
A==B -> true
A ==C -->false 이다.
참조변수는 null로 초기화가 가능하다 이는 가르키는 객체가 없다는 뜻이다.
그래서 null로 초기화된 변수에 값을 저장하려고 하면 nullPointerException오류가 발생한다.,
== 연산자는 객체의 번지가 같은지를 확인한다.
String name="apple";
String name2="apple";
name 과 name2는 동일한 문자열 리터럴로 String 객체를 생성했기 때문에, name==name2의 결과는 true
but, new String을 이용하였을때는 새로운 객체가 생성되기 때문에 == 연산자 비교시 false가 나온다
String name3=new String("apple");
package smhrd;
import java.io.IOException;
import java.util.Scanner;
public class Exam {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub}
String name1="apple";
String name2="apple";
if(name1==name2) {
System.out.println("참조가 같다.");
}else {
System.out.println("참조가 다르다 ");
}
if(name1.equals(name2)) {
System.out.println("문자열이 같다.");
}
String name3=new String("apple");
String name4=new String("apple");
if(name3==name4) {
System.out.println("참조가 같다.");
}else {
System.out.println("참조가 다르다 ");
}
if(name3.equals(name4)) {
System.out.println("문자열이 같다.");
}
}}
Stirng객체에 null을 넣는다면? -> JVM은 참조되지 않은 객체를 쓰레기로 취급하고 메모리에서 삭제한다.
'자바' 카테고리의 다른 글
향상된 for문 (0) | 2022.01.02 |
---|---|
다차원배열 (0) | 2022.01.01 |
배열 (0) | 2022.01.01 |
continue 문 (0) | 2021.12.31 |
for의 바깥쪽 반복문 종료 (0) | 2021.12.31 |
Comments