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++
- 마이크로 소프트에서 헝가리언 방식을 선호하여 많이 사용합니다.
● Java의 Data type (자료형의 종류)
- 수 정수 : byte , short , int , long
1 byte 의 수 할당 : 256 가지 (2의 8제곱근) 128(2의 7) : 음수 , 128(2의 7) : 양수
2 byte 의 수 할당 : short = -32768 ~ 32767 (2의 16승)
4 byte 의 수 할당 : int = -2417483648 ~ 2147483647 (2의 32승)
웬만한 정수 값은 다 들어가기 때문에 일반적으로 정수 값을 다룰 때는 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 |