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 | 2 | '\u0000' ~ '\uFFFF' 유니코드 문자열 |
논리 | boolean | 1 | treu or false |
정수 | byte | 1 | -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; 이렇게 사용할 수 있다.
반응형
'개발자의 공부방 > 자바' 카테고리의 다른 글
자바 기초] 형변환 (0) | 2019.03.06 |
---|---|
자바 기초] 상수와 리터럴 (0) | 2019.03.06 |
자바 기초] 식별자 (0) | 2019.03.06 |
자바 기초] 자바란? (0) | 2019.03.06 |
매개변수(Parameter 파라미터) 그리고 전달인자(Argument 아규먼트) 란?? (0) | 2019.02.12 |