객체, 참조 타입, null, 배열,

2019. 2. 25. 19:19JAVA

==================참조 타입=======================


메모리의 일부를 JVM에게 할당해주다. 그러면 JVM이 3부분으로 나눈다.



                 |----------------------------------------------------------------

                 |method 영역 stack 영역 heap영역

                 |(설계도 영역) (변수 영역) (객체 영역)

                 |----------------------------------------------------------------

                 | int a=10;

                 |         <값의 복사>

(int a= 10,          | int b=10;

int b= a;경우)            |

                 |

                 |

                 |    String 홍길동의 주소값 String x="홍길동";

                 | (번지#123값) (번지#123 일 경우)

                 | (주소값 복사)

(String x="홍길동";   |    String y=(#123 번지값)

String y=x;)          |

                 |

                 |

위의 String을 그후    | x 와 y의 주소값이 String x="이순신";

String y="이순신";     | 같기 때문에 x값도 (번직값은 동일)

일 경우          | 이순신으로 변경

                 |



기본자료형을 제외한 모든 것들은 객체가 만들어지고 객체의 값이 저장 그 후 객체의 주소값이 들어간다.

( ①.객체를 만든다 ②.객체 값을 저장한다. ③.객체의 주소값을 저장한다.)


(String 만 제외 예시로 보자, 객체에서 모두 적용)

기본타입(정수형, 실수형, 논리형)을 제외한 위의 String과같은 모든 변수를 참조변수라 한다.


자바에서 null값은 객체를 더이상 참조하지 못하게 하는 값이다.

ex) a=null;


참조값이 모두 null이 되면 그 값은 가비지콜렉터를 통해 자동적으로 삭제된다.

가비지콜렉터는 heap메모리만 제거한다.


메소드 영역은 설계도가 로딩되는 영역 Heap영역을 객체가 생성되는 영역, Stack영역은 변수가 만들어지는 영역이다.


참조값의 기본 초기화 값으로 null을 사용할 수 있다.

ex) String = null; , int[] a= null; , Scanner e = null;




new의 활용


1. 객체를 생성 키워드

2. 배열객체 생성

3. 설계도를 활용해서 객체 생성







====================배열=================================


(#~~) -> 번지값

동일한 타입을 여러개 담을 수 있는 그릇이며 배열도 객체이다.

배열은 동일 타입의 값만 담을수 있다. 그리고 배열의 크기는 변경할 수 없다.



int[] a = {1, 2, 3, 4};     --> a(#23) (1, 2, 3, 4)



정수형 배열

int[] a = new int[5]; -> a(#56) [0, 0, 0, 0, 0]

실수형 배열

double[] a new double[5] -> a(#78) [0.0, 0.0, 0.0, 0.0, 0.0]

문자열 배열

String[] a = new String[5] -> a(#98) [null,null, null, null, null]

   String배열 하나하나에도 문자열의 주소값이 들어감





기능은 .으로 조회한다. 

ex).nextInt, .nextdouble, .System.out.println, .length



.length라는 기능은 배열의 길이를 보여준다

int[] a = {1, 2, 3, 4};  -->  a.length  --> 4 이다.




2. 다차원 배열


배열의 길이가 2개이상인것

ex) int [][] a = {}{};



int[][] a = new int[2][];

a[0] = new int[5];

a[1] = new int[2];

->(0, 0, 0, 0, 0),(0, 0) 이런 불균형한 배열을 만들수도 있음.