자바의 자료형은 크게 두가지로 나뉜다.
Primitive(기본형) / Reference(참조형)

자바에서 메모리상의 관리를 편하게 하고,
객체의 주소값을 넘겨주는 등 사용이 편하기 위해 두가지를 정의하고 있다.

둘의 가장 큰 차이점은 '데이터의 크기가 결정되어 있느냐'
그렇지 않다면 '주소값을 이용한다.'이다.
즉, primitive는 데이터를 곧바로 저장하며
reference는 주소값을 저장한다는 것이다.(C의 포인터)
이점을 생각하며 다시 한번 살펴보자.


Primitive
기본형으로 C언어에서도 많이 사용된다.
데이터의 크기가 결정되어 있는 것이 특징이다.

1 byte

2 byte

4 byte

8 byte

정수

byte

short

int (default)

long

실수

float

double (default)

문자

char

논리

boolean


※문법 : data type의 첫글짜가 소문자이다.


Reference
참조형으로 주소값을 저장하고 있다.
객체를 만들었을때 값을 갖고있는 메모리를 참조한다.
(배열에서도 사용)

대표적인 reference형으로 String을 생각해볼 수 있다.
(String은 단순 값만 저장하는 것이 아니라,
메소드도 갖고 있는 객체이다.)
그 외에도 사용자가 만든 클래스도 모두 reference 형이다.


메모리상의 비교
그렇다면 왜 굳이 두개의 datatype을 따로 분리하고 사용하는걸까?
객체는 다양한 datatype을 멤버로 갖고 있게 할 수 있는데
이 특징을 표현하려면 primitive는 한정적이다.
메모리를 통해 살펴보면 더 이해가 쉽다.



그림 왼쪽은 primitive 오른쪽은 reference의 메모리 형태이다.

primitive의 메모리는 int a = 5; 를 메모리 상에 표현한 것이다.
a의 값이 스택에 직접 들어가 직접적으로 접근하는 것을 볼 수 있다.

반면, String s = "아이유"; 를 표현한 reference를 살펴보자.
s에는 주소값만 저장하고 있으며,
실질적인 값은 힙영역에 저장하여
주소값을 통하여 접근하도록 되어있다.

1) 이는 지역적으로 사용되어 변동이 심한 스택과 다르게
값이 유지되는 힙영역을 이용하여 객체를 다루도록 한 것을 볼 수 있다.
2) 두번째로, "아이유"라는 문자열 외에 아이유의 나이도 집어넣을 경우가 생길 경우,
int 형을 이용하게 되는데, 객체를 "참조"함으로써 그 값을 유지할 수 있다.

'Software > Java' 카테고리의 다른 글

Class  (0) 2013.07.04
[JAVA] package 란?  (0) 2013.07.04
Java의 변수 타입  (0) 2013.07.04
[과제]1 ~ 9 까지 int 형식으로 입력 받아서 해당하는 단을 출력  (0) 2013.07.04
Java의 기초  (0) 2013.07.04
Posted by MegaNzine
,


import java.util.Scanner;


public class Exam1 {
public static void main(String[] args) {
 int num=0;
 int i=0;
 int num2=0;//정수변수 선언
 boolean k=true;//참 거짓 변수 선언
 while(k){    //무한반복문

Scanner sc = new Scanner(System.in);//변수 입력
     num = sc.nextInt();
     if(num<=9){//9보다 작거나 같으면 실행
          if(num>=1){//1보다 크거나 같으면
               for(i=1;i<=9;i++){//i가 9가될때까지 1씩더해서 실행
                num2 = num*i;//num과i를 곱한값을 다른 변수인 num2에 저장
                System.out.println(num+"*"+i+"="+num2);//num2에 저장된 값 출력
                }
 
          }
          else{
               System.out.println("Error:This number is too low to use");}//1보다 작으면 에러메시지 출력
 
          }
     else{
          System.out.println("Error:This number is too high to use");//9보다 크면 에러메시지 출력
     }
    }

 }
}

 

'Software > Java' 카테고리의 다른 글

Class  (0) 2013.07.04
[JAVA] package 란?  (0) 2013.07.04
Java의 변수 타입  (0) 2013.07.04
Java Data Type (Primitive & Reference)  (0) 2013.07.04
Java의 기초  (0) 2013.07.04
Posted by MegaNzine
,

Java의 기초

Software/Java 2013. 7. 4. 14:25

Java 변수형

primitive type : int, double, char, boolean

reference type : String


Java 의 입출력


- 출력

System.out.println("Hello World");

System.out.print("Hello World");


- 입력

Scanner sc = new Scanner(System.in);

sc.nextInt();


예시


public class Example {

public static void main(String[] arg) {

int num = 0;

System.out.println("num = " + num);


Scanner sc = new Scanner(System.in);

num = sc.nextInt();

System.out.println("num = " + num);

}

}

출처:http://moblab.tistory.com/

'Software > Java' 카테고리의 다른 글

Class  (0) 2013.07.04
[JAVA] package 란?  (0) 2013.07.04
Java의 변수 타입  (0) 2013.07.04
Java Data Type (Primitive & Reference)  (0) 2013.07.04
[과제]1 ~ 9 까지 int 형식으로 입력 받아서 해당하는 단을 출력  (0) 2013.07.04
Posted by MegaNzine
,