자바의 기초 레퍼런스타입과 heap
자바의 기초 레퍼런스타입과 heap 정말 어려운 부분입니다 자바의 기초적인 이해 stack이 아니라 heap에다가 넣음!?
//int [] ar = 데이터 타입 (기본형이 아님)
//지역변수는 메서드가 생성되고 종료되면 메모리에서 사라짐
//if문이나 for문에서 생성된 지역변수는 밖에서 안찍힘
//지역변수는 프린트하기전에 초기화를 해줘야 함(값을 입력함)
//레퍼런스 데이터타입을 찍으면 주소값이 나옴 (참조변수)
//heap은 모든 프로그램이 공통으로 사용하는 영역
heap에 있는 것을 가져다가 쓰려면 주소값을 알아야 한다
그래서 프린트를 하면 주소값이 나온다
int [] ch = new int[num];
int a = 10;
System.out.println("ch");
라고 치면 주소값이 나온다
System.out.println("a");
라고 치면 값이 나온다.
기본형과 레퍼런스 타입의 차이점
다차원 배열의 선언과 생성
int [] [] ar = new [5] [3] ;
3개 짜리를 5개 만들겠다는 뜻
학생 10명이 있는데 각각의 국어 영어 수학 점수를 받아서 총점과 평균을 받으려고 한다.
(어딘가의 변수에 저장이 되어야 함)
int kor , int eng , int math , int sum , int avr
int [] s1 = new int [5];
int [] s2 = new int [5];
String [] name = new String[10]
객체지향언어의 특징
코드의 재사용성이 높다 (한번 만든 코드를 다시 사용)
코드의 관리가 쉬워졌다.
(객체지향에서는 하나를 바꾸면 나머지도 자동으로 바뀐다)
신뢰성이 높다
클래스의 정의 - 클래스란 객체를 정의해 놓은 것이다
클래스의 용도 - 클래스는 객체를 생성하는데 사용된다.
객체의 정의 - 실제로 존재하는 것. 사물 또는 개념.
객체의 용도 - 객체의 속성과 기능에 따라 다름.
클래스 |
객체 |
제품 설계도 |
제품 |
tv 설계도 |
tv |
붕어빵기계 |
붕어빵 |
Student@659e0bfd 는 suji의 주소값
heap영역에다가 suji를 저장
레퍼런스데이터타입은 // 모두 4바이트
저장공간을 heap에서 만들고
시작점의 주소를 수지에게 보여주는 것임
(suji를 프린트 하면 그 주소값이 프린트)
여기서 suji는 참조변수
new 라는게 들어가면 heap에다가 할당을 해달라고 하는 것임
수지 안에 있는 변수들이 모두 저장공간이 생김
(멤버변수)
(#멤버변수들은 클래스 안에 있는 변수들 (eng/math/kor))
new로 저장공간이 할달될때
선언만 해도 자동으로 값이 선정이 됨
(멤버변수의 기본데이터)
초기화를 java jdk가 저절로 해줌
모든 레퍼런스 데이터 초기값 = null
int = 0
double = 0.0
char = "" (빈공간)
변수명은 한글로 가능함(오류가 날 가능성이 있음)