티스토리 뷰
데이터의 기본형 이외의 중요한 참조형 타입(레퍼런스타입)에 대해 알아보겠다.
객체지향언어의 java 는 객체를 생성하기위한 언어라고 생각한다.
java코드에서 생성자를 생성할때
Project project = new Project();
위에 코드처럼 new 를 쓴다는건 메모리에 할당을 하겠다는것인데
이때 메모리중 stack 의 영영과 heap 의 영역에 어떻게 저장이되는지 알아야한다.
project 의 변수를 객체변수,참조변수라고 부른다.
new Project()는 참조값으로 생각을하고,
key 와 value 처럼 참조변수 project 로 Project 의 값에 접근하려면
주소가 아닌 해시코드를 통해 접근할수있다.
인스턴스화 될때 (생성자를만들때)
Project 는 heap영역에 저장되면서 hash코드를 project 참조변수에게 준다
poject참조변수는 stack영역에 저장되어서Project 에서 준 hash코드를 통해 참조값에 접근한다.
참조형 레퍼런스타입 (클래스,배열) // 데이터 기본형 리터럴 (정수숫자형,논리형,문자형) 이있다.
레퍼런스타입 --------------------------------------------------------------
(배열타입)
String[] a = String[5] ;
=> 0으로 채워진 크키가 5인 문자열 배열
(클래스타입)
String a = "임꺽정" ;
클래스형에서도 String 클래스는 조금 특별하다 이 클래스는 참조형에 속하면서도 기본적인 사용방법은 기본형 처럼
사용하면된다 . 그리고 불변하는immutable 객체입니다. String 클래스에는 값을 변경해주는 메소드들이 존재하지만 해당 메소드를 통해 데이터를 바꾼다 해도 새로운 String 클래스 객체를 만들어낸다 (새로운 hashCode 를 생성 하고 JVM 에서 사용되지않지않는 hashCode 를 없앤다.)
일반적으로 기본형 비교는 == 연산자 (비교연산자)를 사용하지만
String객체간의 비교는 .equals() 메소드를 사용해야 합니다.
a 에는 임꺽정 값이 들어있다라기보다는 임꺽정이라는 참조값 의 hashcode 를 갖고있다고 생각하자.
System.out.print( a.hashCode() ); 정수형태로 hashcode 가들어있는걸 확인할수있다. 객체타입
리터럴 처럼 단순히 값 자체를 의미하는것과는 다르다.
-------------------------------------------------------------------------------------------------------------------
리터럴타입 ------------------------------------------------------------------
자바에서 기본 자료형은 반드시 사용하기 전에 선언되어야 합니다.
OS에 따라 자료형의 길이가 변하지 않습니다.
비객체 타입입니다. 따라서 null 값을 가질 수 없습니다.
byte
short
int
long
float
double
char
boolean
int a = 10;
float b = 10.5f;
double c = 100.3;
boolean d = true;
char f = 'A';
수치형, 논리형, 문자형 이 이에 해당된다.
a = 10 값 자체를 의미하기에 a.hashCode() 를 사용하여 hashCode 를 확인할수없다.
---------------------------------------------------------------------------------------------------------------------
'Java' 카테고리의 다른 글
Java ( Int < - > String 배열 변환) (0) | 2022.04.05 |
---|---|
Java 문자열 을 split 메서드 로 분리하기 (0) | 2022.04.05 |
Java 배열과 리스트의 차이 (0) | 2022.04.05 |
Java 변수(클래스변수, 인스턴스변수, 지역변수) (0) | 2022.04.04 |
Java 실행과정 (.java -> .class -> 실행 ) (0) | 2022.04.04 |
- Total
- Today
- Yesterday
- e.getMessage()
- final 변수 초기화
- 기본형타입
- 자바
- e.toString()
- java 예외
- java멤버변수
- react-redux
- List Set 변환
- Stack Area
- 오버로딩
- Java
- Method 영역
- java숫자형배열
- nexLine
- 클래스변수 인스턴스변수 차이
- 클래스영역
- java문자열배열
- map set 변환
- set
- java최대값최소값
- Dispatch
- mapDispatchToProps
- publi
- redux
- java전역변수
- java 배열 출력
- Heap Area
- e.printStackTrace()
- Scanner 와 BufferedReader 차이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |