Java에서 사용되는 변수란 무엇일까요?

 

: 데이터의 저장과 참조를 위해 할당된 메모리 공간입니다.

  단 하나의 값을 저장할 수 있는 공간입니다.

 

변수 수행의 특징 : 얼마든지 변수에 새로운 값을 넣을 수 있습니다.

(값이 변할 수 있다는 특징 때문에 변수라는 이름을 사용하게 되었다고 합니다.

 

변수를 만드는 이유, 할당(저장)한 이유:  데이터를 저장하고 필요할 때 사용하기 위함입니다.

 

 

1) 데이터를 메모리에 저장되도록 요청해야 합니다. 
int : 메모리 공간을 할당해달라는 요청( key ward(예약어) ) 자바가 메모리를 관리해주고 있습니다.
메모리중에서 사용하고 있지 않은 장소를 할당해줍니다. 할당 받은 공간에 기억하기 쉬운 이름으로 붙여줍니다.

package exam01;

public class DefineVariable {
	public static void main(String[] args) {
    int data1;
    int data2;
    }
}

    
    

 

(2) 메모리 접근 방법 ( 데이터 저장 ) - 초기화

data1 = 5489;
data2 = 9587; 
data1 = 5489; 
data1 = 6000; // 변수 재사용 

메모리에 접근 할때는 내가 지정해준 이름으로 접근한다. 저장 하는 것은 (=)을 사용합니다.

data1에 5489를 저장해달라는 의미입니다. (=) 저장연상자 or 대입연상자라고 칭합니다. < 변수 = 저장할 값; >

 

(3) 메모리 접근 방법 (데이터 읽어오기) - 변수의 이름으로 불러옵니다.

System.out.println(data1);
System.out.println(data2);

 

여기서 잠깐!

data1 + data2; ERROR 

왜 오류가 나타났을까요?

그 이유는?? 메모리에서 data1,data2를 읽어 와서 연산까지 했는데 그 다음 수행할 명령어가 없기 때문입니다.

항상 출력을 할지 확실하게 명령어를 입력해주는것을 주의하세요.

 

 

 

● 변수 이름 짓기 규칙

 

1. 규칙

 

- 문자, 숫자, 한글(유니코드) 사용 가능합니다. (해당 나라의 언어로 이름을 짓는 것은 지양)

 

- 대소문자 구별, 길이 제한 없습니다. (적당한 길이로 지정하는 것이 좋습니다.)

 

- 예약어 사용 금지 합니다. (헝가리언 방식과 같이 공백 없이 사용은 가능)

 

- 숫자로 시작하면 안됩니다.

 

- 특수 문자는 ‘_’‘$’만을 허용 합니다. (자바 자체가 $를 붙여서 만들어주는 이름으로 활용.)

 

- 공백이 포함될 수 없습니다. (다른 것으로 인지하여 ERROR)

 

 

2. 권고사항 (ERROR를 내지는 않지만 프로그래머들의 규칙과 같이 사용합니다.)

 

- 모두 대문자 피해야 합니다. 

 

- 생략형 피해야 합니다.  (너무 많은 축약은 피함, 너무 길게 짓는 것도 피함)

 

- 카멜/ 파스칼/ 헝가리언 표기법 사용 권장합니다.  

 

EmployeeNumber : 카멜 (자바, 파이썬, R은 카멜을 많이 사용합니다.)

보통 2단어로 만들고 대문자를 사용하여 구분하게 하여 가시적으로 해석하기 편하게 만듭니다.

 

Employee_num : 파스칼 = C

 

IntEmployeeNum : 헝가리언 (키워드 + 카멜) = 윈도우 프로그램 C++

마이크로 소프트에서 헝가리언 방식을 선호하여 많이 사용합니다.

 

 

 

 ● JavaData type (자료형의 종류)

 

- 수 정수 : byte , short , int , long

 

1 byte 의 수 할당 : 256 가지 (28제곱근) 128(27) : 음수 , 128(27) : 양수

2 byte 의 수 할당 : short = -32768 ~ 32767 (216)

4 byte 의 수 할당 : int = -2417483648 ~ 2147483647 (232)

웬만한 정수 값은 다 들어가기 때문에 일반적으로 정수 값을 다룰 때는 int를 사용합니다.

8 byte 의 수 할당 : long = -9223372036854775808 ~ 9223372036854775807

= 너무 많은 공간을 잡으면 다른 것을 할 수 없기 때문에 long 보다 int 를 사용합니다.

num1 = 55; // 초기화 
num2 = 15; // 초기화
System.out.println(num1-num2);//55-15 = 40 을 출력해준다.     // 출력 40
System.out.println(num1 + "-" + num2  + "=" + (num1-num2));  // 출력 55-15=40
        
       

 

여기서 잠깐!!

package exam03;

public class NoticeByteType {

	public static void main(String[] args) {
		byte data1 = 20 , data2 =30;
		byte result;
        
        result = data1 + data2;

위의 값은 ERROR 가 나온다. 왜 오류가 나왔을까?

 

byte result; -- result = data1 + data2; // -- ERROR(연산을 할 때)
효율적으로 설계하기 위해서는 long 형을 제외하고는 byte / short / int 는 int 로 잡아서 연산의 결과를 도출합니다.
Byte 로 선언했지만 내부에서 int 로 잡아서 계산하고 있기 때문에
Int(2byte) + Int(2byte) 의 값은 = 4byte의 값인데,

byte 안에 값을 넣으려고 하니 데이터의 손실이 발생함있으므로 java가 오류를 일으키는 것입니다.

 

해결점 : result 를 byte -> int 바꾸면 해결!


// 연산을 수행하는 목적이 아닐 때 굳이 int 로 담을 필요 없다. 연산시에만 주의하세요.

 

 

- 실수 : float , double

 

모든 실수 값은 수학적으로 표현할 수 없기 때문에 컴퓨터 상의 표현 방식으로도 표현할 수 없기 때문에 표현 방법을 만들어서 메모리 상에 표현할 수 있도록 만들었습니다.

정확도가 확실하지 않은 대신에 수식을 이용해서 값의 범위는 넓게 사용합니다.

 

4 byte 일 때 : float (소수점 이하 6자리까지 정확하게 표현)

8 byte 일 때 : double (소수점 이하 15자리까지 정확하게 표현)

일반적으로 double 을 사용합니다.

package exam04;

public class DoubleType {
	public static void main(String[] args) {
		double data1 = 3.14, data2 =1.05;  // 변수 선언 & 초기화 (실수)
		
		System.out.println(data1-data2); // 값을 잘 보관하고 있다. 
		
		data1 = 2.24; // 변수의 재사용 
		data2 = 1.22; // 변수의 재사용 
		
		System.out.println(data1-data2);  // 결과 값: 1.0200000000000002(오차 발생) 

 

모든 실수 값은 수학적으로 표현할 수 없으므로 컴퓨터 상의 표현 방식으로도 표현할 수 없기 때문에 표현 방법을 만들어서 메모리 상에 표현할 수 있도록 했습니다. 그렇기 때문에 실수의 오차가 발생할 수 있습니다.

// e표기법 
		double e1 = 1.2e-3; // 1.2 * 1/10(3승)  :  1.2 * 1/10^3
		double e2 = 1.2e+3; // 1.2 * 10(3승)  : 1.2 * 10^3 - (+) 생략 가능
		
		System.out.println(e1); // 결과 값 : 0.0012
		System.out.println(e2); // 결과 값 : 1200.0

 

 

 

- 자바는 문자와 문자열을 구분 (char)

 

문자 : 한글자 ( a,b,c,d…)

문자열 : 2글자 이상

package exam05;

public class CharType {
	public static void main(String[] args) {
		// char ^= Char (대소문자를 구별한다)
		char alphbet, hangeul;
		int unicode;
		
		// char : 하나의 문자 입력 : 하나의 글자를 넣을 때, 작은 따옴표를 넣어서 저장해준다. 
		alphbet = 'A'; 
		System.out.println(alphbet);
		unicode = alphbet;
		System.out.println(unicode); // 65 라는 숫자에 'A' 라는 글자가 들어있다. 
		

 

A라는 문자를 메모리에 저장 하는 것이 아니라 테이블을 찾아가서 A라는 문자의 정수 값을 읽어와서 변수 값의 메모리에 저장해주는 것이고, 그 값을 출력해 줌으로 A라는 문자가 출력되는 원리 입니다.

 

// 두 글자 이상의 문자를 저장할 수 있게 해주는 예약어 : String 
		String name = "홍길동"; 
		System.out.println(name);
		

 

- 참(True) 과 거짓(False) : Boolean

package exam06;

public class BooleanType {

	public static void main(String[] args) {
		//비교 연산자 
		System.out.println(35 > 25); // 값 : true
		System.out.println(35 < 25); // 값 : false
bool1 = 35 > 25; // true	
bool2 = 35 < 25; // false 
		
System.out.println(bool1); // True
System.out.println(bool2); // False

 

지금 까지 간략하게 변수에 대해서 알아봤습니다. 변수를 변하는 수로만 생가하면 안되며, 하나의 저장되는 장소로 인식하는것이 중요합니다.  변수의 특징 때문에 알고리즘이 가능하고, 결과를 가장 빠르게 피드백 받을 수 있고, 피드백 받은 것을 재활용할 수 있다는 사실을 꼭 기억하세요~~!!

'빅데이터 > JAVA' 카테고리의 다른 글

[JAVA] 연산자 (Operator)  (0) 2020.04.21
[JAVA] 상수(literal)  (0) 2020.04.21
[JAVA] Java 기본 형태 및 기초  (0) 2020.04.20
[JAVA] 이클립스(eclipse) Download  (0) 2020.04.17
[JAVA] 환경 변수 설정  (0) 2020.04.17

+ Recent posts