본문 바로가기
🌈 백엔드/JAVA_기초

JAVA 개념_변수

by 개발자 알마 2023. 2. 3.
반응형

 

[1] 변수 =  Variable


(1) 변수 정의 : 변하는 수 

  • 하나의 값을 저장할수 있는 저장공간 
  • 프로그램에서 항상 변하는 값을 명하는 말 
  • 데이터를 저장한 메모리 공간에 이름을 붙인 것이 변수이다.
  • 표현하려는 수에 맞는 데이타 타입(자료형)을 이용하여 변수를 선언한다 = 변수타입 변수명 int num 
  • 표현하려는 자료가 숫자, 문자, 문자열 등 다양할수 있어 그에 맞는 자료형을 사용한다 
  • (성적, 합계, 레벨, 주소 등) 
  • 데이터를 사용하기 위해 명령을 할때 데이터를 담고있는 변수명이란 명칭을 부르고 명령을 하기 위해 지시하는 도구로 사용된다 
int num = 5;
num = 3;

System.out.println(num);   // 3 출력

 

(2) 변수와 메모리 

변수를 선언하면 해당되는 자료형의 크기만큼 메모리에 할당된다 

할당된 메모리를 가리키는 이름이 변수이다 

 

 

 

 

 

 

[2] 변수 선언 


(1) 변수 선언의 구성 

int age , count ; 
age =10;

String level = "100" ;

char chr ='A';

age와 count는 int 타입을 가진 자료형이다. age의 값은 10이 대입된다

자료형 int
String 
char
변수 age
count
level
chr
대입연산자  =
데이터 10
100
A

 

 

 

[2] 변수명 작성 규칙 


 

(1) 첫 문자는 소문자 

int apple = 100 (0)        

 

(2) 첫 문자는 _$ 가능하다 

int _apple = 100 (0)

int $apple = 100 (0)

 

(3) 첫 문자는 숫자가 오면 안된다 

int 2apple = 100 (x)      

 

(4) 예약된 변수명은 사용 불가 

int true  = 100 (x)          

 

(5) 용도에 맞는 이름 사용 

용도에 맞는 가독성이 좋은 명칭을 사용한다 

축약 x ( studentName 을 SN으로 줄이면 본인 외에 알아볼수 없다) 

 

 

 

 

 

 

[3] 변수 표기법 종류


(1) 카멜 표기법 = 낙타표기법

변수 , 매서드  사용

myName

 

(2) 파스칼표기법

클래스 사용 

MyName

 

 

(3) 스네이크표기법

파이썬 사용 

my_name

 

 

[4] 변수 종류


 

(1) 클래스변수

  • 멤버변수 중 static이 붙은 것이 클래스 변수이다 
  • 클래스 영역에 선언된다
  • 클래스가 메모리에 올라갈때(프로그램 시작시) 클래스 변수가 생성되고 프로그램 종료시 메모리에 해체될때 소멸된다 
  • 모든 인스턴스 객체가 1개의 저장공간을 공유하기 때문에 공통적인 값을 유지해야하는 속성의 경우 선언한다 
  • 전역에서 사용 가능하다 
  • ex) 캐릭터가 전사 , 힐러 , 마법사으로 구분되어있을때 소비자가 선택한 성향이 전사라면 전사 속성만 가지고 적용된다 
  • private이 아니면 클래스 이름으로 다른 클래스에서 사용가능하다 
  • 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 너무 큰 메모리를 차지한다면 할당하는것은 좋지 않음
  • 클래스변수의 값을 수정하면 공통 속성이기 때문에 전부 바뀐다 
  • 초기화 필수아님
  • 클래스 변수cv가 먼저 초기화 된 후 인스턴스 변수 iv가 초기화된다

 

(2) 인스턴스 변수

  • 멤버변수 중 static이 붙지 않은것이 인스턴스 변수이다 
  • 클래스 영역에 선언된다
  • 인스턴스가 생성되었을때 인스턴스 변수가 생성된다. 이후 참조하지 않으면 가비지컬렉터가 소멸시킨다  
  • 각각의 인스턴스 변수에 각각의 개별 속성을 부여하기 위해 사용한다 
  • 초기화 필수아님

 

 

(3) 지역변수 

 

멤버변수를 제외한 나머지 변수들이다 

변수 선언문이 수행되었을때 지역변수가 생성된다 

메서드가 종료되면 소멸되어 사용할수 없다 

메서드 내에 선언된 변수 

  • 로컬변수
  • 함수 내부에서 사용하는 변수 
  • 스택 메모리에 올라간 변수 
  • 반드시 초기화해야한다 
  • 메소드나 생성자 내부에 변수를 선언한다 
  • 중괄호 안에 변수를 선언한것으로 그 함수 내에서만 사용가능하다 
  • 함수가 호출될때 생성되고 함수가 끝나면 소멸한다 

메서드 change를 통해 문자열을 연산했다 

change 메서드가 가르키고 있던 abc 메모리가 아닌 abcdef 메모리를 가르키게 된다 

 

 

 

  • Local variable type inference 지역변수 자료형 없이 사용하기 
var str = "hello";

Systerm.out.println(str) ; // String 선언하지 않아도 추론이 가능하다 

str = " test " ; //이미 선언된 변수는 같은 타입의 자료형의 값이 변경이 가능하다

 

 

(4) 멤버변수 = 인스턴스 변수 

  • 클래스 내부에의 메서드에서 사용하는 변수
  • 값의 할당이 없다면 기본값으로 초기화한다 
  • 클래스의 속성, 특성
  • private 아니면 참조변수로 다른 클래스에서 사용가능하다 
  • 인스턴스가 생성될때 힙메모리에 생성되고 , 가비지 컬렉터가 메모리를 수거할때 소멸된다 
  • 멤버변수가 너무 많으면 인스턴스 생성시 쓸대없는 메모리가 할당된다 
  • 사용자 정의 타입으로 클래스에 정의하여 사용해야한다 
  • 멤버변수는 인스턴스변수와 static 클래스변수를 모두 이야기한다 

 

(5)초기화 순서 

1. 각 타입의 기본값

2. 명시적 초기화

3. 초기화 블럭

4. 생성자 

 

// 1. 명시적 초기화 

class Car {
	int door =4; //기본형 변수 초기화 
    Engine e = new Engine(); //참조형 변수 초기화 
}

//2. 클래스 초기화 블럭 

static{
	System.out.println("static{}");
    }
    
// 3. 인스턴스 초기화 블럭    
{
	System.out.println("static{}");
}

 

 

 

[5] 상수 constant


(1) 상수 : 변하지 않는 값 

  • 값을 저장하면 변경할수 없다 
  • 상수값을 선언할때는 final 예약어를 사용한다
  • 초기화를 반드시 해야한다 
  • 상수명은 구분을 위해 대문자로 표현한다 
  • 가독성을 위해 사용한다 : 선언한 상수값만 변경가능하면 여러부분을 수정할 필요가 없다 
public class Define {

	public static final int MIN = 1;
	public static final int MAX = 999999;
	public static final double PI = 3.14;
	public static final String GREETING = "Good Morning!";
	public static final int MATH_CODE = 1001;
	public static final int CHEMISTRY_CODE = 1002;
	
}

 

 

[6] 리터럴 literal


  • 변수에 대입되는 데이터 값 
  • 숫자, 문자 , 논리값 
  • 리터럴은 상수 풀 constant pool에 있다 
  • 리터럴의 타입 : 정수 리터럴은 int , 실수 리터럴은 double 로 저장된다 
  • 리터럴의 접미사 : 16진수는 0x , 8진수는 0 , float 타입은 F , double 은 D를 붙인다 
String MyName = "kim"

 

kim은 String 타입을 가진 리터럴이다 

 

 

 

반응형

'🌈 백엔드 > JAVA_기초' 카테고리의 다른 글

JAVA 개념_조건문  (0) 2023.02.16
JAVA 개념_ 반복문  (0) 2023.02.13
JAVA 개념_ 자료형  (0) 2023.02.13
JAVA 개념_연산자  (0) 2023.02.13
JAVA _프로그래밍 언어  (0) 2023.02.03

댓글