개발자의 공부방/자바

자바 기초] 변수와 자료형 그리고 참조형

  • -
728x90
반응형

변수와 자료형 그리고 참조형



1. 변수와 자료형

  • 변수를 선언할 떄, 저장되는 값의 자료형을 선언
  • 메소드를 선언할 때, 반환 값의 자료형을 선언
  • 자료형에 따라 적용 가능한 연산이 다름
1) 변수의 종류
  • 인스턴스 변수 : (클래스 정의에서 static이 아닌 필드) 객체가 소유하는 변수
  • 클래스 변수 : (클래스 정의에서 static 필드) 객체가 공유하는 변수
  • 지역 변수 : 메소드 내부에서 선언된 변수
  • 파라미터 : 메소드 호출 시 전달하는 값을 저장하기 위한 변수

public class Array {
int iNumber; //인스턴스변수
static int bNumber; // 클래스변수(static변수, 공유변수), '전역변수'라고 한다.
boolean hello = false; // 인스턴스변수
/*
* 클래스변수 + 인스턴스 변수 = '맴버변수'
* 클래스 변수와 인스턴스변수를 합쳐서 맴버변수 라고 한다.
* 인스턴스 변수는 class 내부에 위치한다.
* 또한 객체를 생성!해야만 사용할 수 있다.
* (객체는 new 연산자를 통해서 생성)
*/
void method() {
Array instanceNumber = new Array();
instanceNumber.iNumber = 3;
// 이렇게 new 연산자로 객체를 생성 및 인스턴스변수를 사용한다.
int c = 0; // 지역변수
}
public static void main1(String[] args) {
/*
* 인스턴스 변수 앞에 static을 붙여주면 클래스 변수라고 한다.
* 인스턴스 변수는 각 인스턴스 마다 독립적인 저장공간을 갖습니다. 하지만 클래스 변수는 인스턴스가 같은 저장공간을 공유합니다.
* 이 말은 static은 최상위의 개념을 갖고 있기 때문에 인스턴스를 생성하기 전에 메모리에 올려놔 고정시킨다.
* 그렇기 때문에 인스턴스 변수를 공유변수라고도 하고 특히나 new 연산자를 사용해서 불러올 필요도 없고, 인스턴스 생성없이 바로 사용이 가능하다.
*
* 그리고 '전역변수' 라고 부른다.
*/
System.out.println("클래스변수는 인스턴스화 하지 않아도 사용 가능!"+Array.bNumber);
Array ar = new Array();
ar.hello = true;
System.out.println("인스턴스화를 해서 hello변수를 불러옴!"+ar.hello);
int x = 100; // 지역변수
System.out.println("지역변수 입니다!"+x);
/*
* 지역변수는 맴버 변수를 제외한 나머지 변수들을 말한다.
* 즉, class 영역이 아닌 다른 블럭 {} 에 존재하면 지역변수이다.
* 지역 변수가 선언된 블록을 벗어나면 그 지역변수는 사라진다.(소멸되서 사용할 수 없다.)
* ex) for문, while문에서 사용되는 변수가 '지역변수'
*/
}


2) 변수의 사용 범위

  • 지역변수와 파라미터
- 선언된 곳 부터 해당 블럭이 {} 이 종료될 때 까지 유효함 (메서드가 실행될 때 만들어지고 끝나면 없어짐)
- 지역 변수는 초기값을 지정한 후 사용해야 함
- 지역 변수 선언에서 접근 제어자를 사용하지 않음
  • 데이터 필드 (인스턴스 변수 or 클래스 변수)
- 선언된 클래스 내부에서 사용 가능.
- 클래스 외부에서의 사용 여부는 '접근 제어자(access modifier)'에 따라 다름
ex) class Variable { public int VAR; …}











기본형(primitive type)

분류 

키워드 

길이(byte) 

값의 범위 

문자 

char 

'\u0000' ~ '\uFFFF'

유니코드 문자열

논리 

boolean 

treu or false

정수 

byte 

-128 ~ 127 

short

2

-32,768 ~ + 32,767

int

4

-9,223,372,036,854,775,808~ 

long

8

 +9,223,372,036,854,775,807

 실수

float

4

 단정도 실수형 (유효 자리는 7정도)

doblue

8

 배정도 실수형 (유효 자리는 15정도)










참조형(reference type)


  • 기본형을 제외한 모든 자료형.
    • 참조 값(주소)을 가지는 자료형.
    • 자바 API에서 제공되거나 프로그래머에 의해서 만들어진 클래스를 자료형으로 선언하는 경우
  • 배열, 클래스 형 등..
    • int anArray[];
    • Circle myCircle;
    • String szStr;
  • 참조형 변수는 저장 공간에 참조 값을 저장함.
    • 실제 데이터는 별도의 공간에 저장됨
  • 기본형 변수는 저장 공간에 값 자체를 저장함.
  • 참조변수는 말그대로 참조할 수 있어서 클래스의 이름을 갖고 만들 수 있다.
    • 클래스이름 변수이름; // 변수의 타입이 기본형이 아닌 것들은 모두 참조변수!
    • 예를 들어서 class ASD {} 라는 것을 만들어서 class TEST{} 에서 ASD를 사용(?) 하려면 그냥 ASD test; 이렇게 사용할 수 있다.


반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.