2.Java 변수
자바 변수에 대해서 정리를 해봤습니다.
정수 실수 문자열에 대해서 써봤습니다.
public class Hello {
public static void main(String[] args)
{
//정수
int a = 1;
//실수
float b = 1.2f;
double bb = 1.2;
/*
float과 double의 차이 :
float 소수 5자리까지 표현
double 소수 14자리까지 표현
byte차이 float은 4byte/ double은 8byte까지 표현
*/
//문자열
String c = "Hello";
}
}
변수
변수는 값을 저장할수 있는 메모리의 특정 번지에 붙이는 이름입니다.
프로그램은 변수를 통해 메모리의 특정 번지에 값을 저장하고 읽을수 있습니다.
자바의 변수는 다양한 타입의 값을 저장할 수 없습니다.
정수 타입의 변수에는 정수만 저장할 수 있고
실수 타입의 변수에는 실수만 저장할 수 있습니다.
변수 선언
변수를 사용하기 위해서는 변수를 선언해야 합니다.
1.변수에 어떤 타입의 데이터를 저장할 것인지
2.변수 이름이 무엇인지
ex)int(정수형 타입) age(변수이름);
-int age; < 이렇게 정수형 타입 age라는 변수를 선언을 해봤습니다.
-같은 타입의 변수는 콤마를 이용해서 한꺼번에 선언할 수도 있습니다.
ex)int x,y,z;
변수이름의 규칙
변수 이름은 자바 언어에서 정한 명명 규칙을 따라야 합니다.
첫번째 글자는 문자이거나 $ _ 이어야하고 숫자로 시작할수 없습니다.
영어 대소문자를 구분합니다. ex) firstname과 fristName은 다른 변수 입니다.
첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 합니다.(관례)
문자 수의 제한은 없습니다.
자바 예약어는 사용할 수 없습니다.ex)boolean,byte,char ...
변수의 초기화
변수의 선언과 생성은 다른것 입니다.
변수의 선언은 int age; 이렇게 선언하지만 age라는 변수에 값이 저장이 되어야 변수가 생성됩니다.
이렇게 값을 최초로 저장하는것을 변수 초기화라고 합니다.
그리고 이때 사용된 값을 초기값이라고 합니다.
실제로 잘못된 코딩의 예시를 들어보겠습니다.
ex)int value
;int result = value + 10
;
위 코드를 보면 value라는 변수를 선언하였지만 초기화되지 않았기 때문에 2라인의 value + 10
에서 value 변수는 존재하지 않습니다.
올바른 코드)int value = 10;
int result = value + 10;`
이렇게 value라는 변수의 초기값을 10으로 초기화 시키면 올바르게 작동합니다.
변수의 사용
출력문에서 변수를 사용할때를 학습해보겠습니다.int num1 = 3;
int num2 = 3;
이렇게 num1,num2라는 이름의 정수타입 변수를 선언하고 초기화 해줍니다.
System.out.println(num1+"과"+ num2 + "은 같은 숫자 입니다.");
실행해보면 "3과3은 같은 숫자 입니다." 라고 출력되는것을 확인하실수 있습니다.
변수값 교환
처음 변수를 학습했을때 중요하게 배웠던 부분이였습니다.
예를들어서 x와 y라는 정수형 변수를 선언하고 두 변수의 값을 교환해보겠습니다.
ex)int x = 1;
int y = 2;int temp; *temp는 빈값*
//교환temp = x; *tmpe = 1*
x = y; x = 2y = temp; * y = 1*
잠시 변수의 값을 옮겨둘 temp라는 이름의 변수를 선언하고
성공적으로 x 와 y 의 값을 교환시킬수 있습니다.
변수의 사용범위
Java의 모든 변수는 중괄호 블록 내에서 선언되고 사용됩니다.
메소드 블록 내에서 선언된 변수를 로컬 변수라고 부릅니다.
로컬 변수는 메소드 블록 내부에서만 사용되고 메소드 실행이 끝나면 메모리에서 자동으로 없어집니다.
변수는 자신이 선언된 위치로부터 자신이 속한 블록 내부에서만 사용할 수 있습니다.
public static void main(String[] args){
int var1;
if(...){
int var2;
}
for(...){
int var3;
}
* 지금 위치에서 var1은 사용이 가능하지만 var2와var3은 if문과 for문의 중괄호 안에 선언이 되어있기 때문에 바깥에서는 사용이 불가능 합니다. *
}
변수를 선언할 때에는 다음과 같은 사항을 주의해야 합니다.
1.변수를 사용할 범위, 선언위치
2.메소드 블록 전체에서 사용하고 싶다면 메소드 븚록 첫머리에 선언하기
3.특정 블록 내부에서만 사용된다면 해당 블록 내에 선언
기본 타입
자바가 제공하는 기본 타입은 8개가 있습니다.
정수 타입 | 실수 타입 | 논리 타입 |
int , byte, char , long , short | float, double | boolean |
타입 | 메모리사용크기 | 저장되는 값의 허용 범위 |
byte | 1byte/8bit | -2^7 ~ (2^7-1) / -128 ~ 127 |
short | 2byte/16bit | -2^15 ~ (2^15-1) / -32.768 ~ 32.767 |
char | 2byte/16bit | 0 ~ (2^16-1) / 0 ~ 65535 |
int | 4byte/32bit | -2^31 ~ (2^31-1)/ -2.147.483.648~ 2.147.483.647 |
long | 8byte/64bit | -2^63 ~ (2^63-1) / -9.223.372.036.854.775.808 ~ 9.223.372.036.854.775.808 |
각 타입에 저장되는 메모리 사용 크기를 알고 있어야 오류없이 잘 사용할수 있습니다.
예를들어서 2.147.483.647를 넘는 숫자를 변수에 넣어야하거나 출력할때는
long 타입을 사용해야 합니다.
char 타입은 문자를 사용할때 쓰는 타입입니다.
char var1 = 'A' 라고 선언하면 //10진수 65(유니코드) 의 값을 가집니다.
ex)
char var1 = 'A';
int var2 = 'A';
System.out.println(var1);
System.out.println(var2);
이렇게 코드를 작성하면
A를 출력하고
65를 출력합니다.
byte와 short 그리고 Int , long 의 범위를 잘 확인하고 사용해야 합니다.
실수 타입
float과 double은 실수 리터럴을 저장할 수 있는 타입 입니다.
메모리 사용 크기와 허용 범위는 이렇게 됩니다.
타입 | 메모리사용크기 | 저장되는 값의 허용 범위(양수기준) | 정밀도 |
float | 4byte/32bit | (1.4 * 10^-45) ~ (3.4* 10^38) | 7자리 |
short | 8byte/64bit | (4.9 * 10^-324) ~ (1.8 * 10^308) | 15자리 |
double이라는 이름은 float 타입보다 약 2배의 정밀도를 갖는다는 의미에서 붙여진 것이라고 합니다
논리 타입
Java에서는 참과 거짓을 의미하는 논리 리터럴로 true와 false를 사용합니다.
논리 리터럴은 1byte 크기의 boolean 타입 변수에 저장할 수 있습니다.
boolean stop = true;
boolean state = false;
주로 상태값에 따라 조건문이나 제어문의 흐름을 변경하는 데 사용합니다.
String 타입(클래스 타입)
자바에서 큰따옴표로 감싼 문자들은 문자열이라고 부릅니다.
작은따옴표는 문자 리터럴을, 큰따옴표는 문자열 리터럴을 구별하는 기호로 사용됩니다.
문자열을 변수에 저장하고 싶으면 String 타입을 이용합니다.