개발자꿈나무
자바 - 변수, 리터럴 본문
Ch.2 변수
>>>변수
- 변수란 ? - “하나”의 값을 저장할 수 있는 메모리 공간 (RAM)
- 사람이 하나하나 기억하기 힘들기 때문에 기억하기 쉬운 이름 ‘age’를 붙여줌
2. 변수의 선언
1) 변수의 선언 이유 - 값(data)를 저장할 공간을 마련하기 위해서
2) 변수의 선언 방법 -
변수타입 변수이름;
int age; // 정수(integer)타입의 변수 age를 선언
3. 변수에 값 저장하기 ( ‘=‘는 등호가 아니라 대입 연산자 )
1) 변수에 값 저장하기
int age; // 정수(integer)타입의 변수 age를 선언
age=25; // 변수 age에 25를 저장
int age=25; // 위에 두줄을 간단하게 한줄로 표현
2) 변수의 초기화 - 변수에 처음으로 값을 저장하는 것
cf. 변수에는 클래스 변수, 인스턴스 변수, 지역 변수가 있는데 지역 변수는 꼭! 초기화해야함
int x=0; // 변수 x를 선언 후 0으로 초기화
int y=0; // 변수 y를 선언 후 0으로 초기화
int x=0, y=0; // 위에 두 줄을 간단하게 한 줄로 표현
4. 변수의 값 읽어오기 - 변수의 값이 필요한 곳에 “변수의 이름”을 적는다
int year=0, age=14
year=age+2000;
-> year=14+2000;
-> year=2014;
age=age+1; // 변수의 값을 1 증가시키는 방법
-> age=14+1;
-> age=15;
System.out.println(age);
-> System.out.println(15);
// >>> 변수타입을 이용해서 +, -, *, / 시도해보기
public class VarEx1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int x=3, y=1;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
5. 변수의 타입 (저장할 값의 유형에 따라 변수의 타입이 달라져야함)
ex) int age=3.14 -> 타입은 정수인데, 값이 실수라서 제대로 나타나지 않음.
저장할 값의 타입과 일치하는 타입으로 변수를 선언해야함.
값의 타입⎾ 문자 - char(2byte) (cf. 1byte = 8bit)
(8가지) ├ 숫자 ⎾ 정수 - byte(1byte), short(2byte), int(4byte), long(8byte)
│ ⎿ 실수 - float(4byte), double(8byte)
⎿ 논리 - boolen(1byte) (False, True)
n비트로 표현할 수 있는 값의 개수 : 2의 n제곱
n비트로 표현할 수 있는 부호 없는(0,양수) 정수의 범위 : 0~2의 n제곱 -1
ex) 1byte = 8bit, 0~255
n비트로 표현할 수 있는 부호 있는(음수,양수) 정수의 범위 : -2의 n-1제곱 ~ 2의 n-1제곱 -1
ex) 1byte=8bit, -128~127
6. 기본형과 참조형
1) 기본형(Primitive type)
- 오직 8개 (boolean, char, byte, short, int, long, float, double)
- 실제 값을 저장
2) 참조형(Reference type)
- 기본형을 제외한 나머지 (String, System 등)
- 메모리 주소를 저장(4 byte or 8 byte)
- 참조형 변수에 객체의 주소를 저장하기 위함
7. 변수, 상수, 리터럴
- 변수(variable) : 하나의 값을 저장할 수 있는 공간
- 상수(constant) : 한 번만 값을 저장 가능한 변수
- 리터럴(literal) : 그 자체로 값을 의미하는 것(흔히 아는 상수)
int score = 100;
score = 200;
-> score 값이 200으로 변함
final(붙여야 상수가 됨) int MAX = 100; // MAX는 상수
MAX = 200; // 에러
char ch = ‘A’;
String str = “abc”;
// >>> 변수, 상수
public class VarEx2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int x=1000;
x=2000;
System.out.println(x); -> x의 값 2000으로 나옴
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
final int // x=1000;
x=2000;
System.out.println(x); <- 에러뜸, 상수의 값을 두개로 줬기 때문! 둘중 하나를 주석처리해줘야함
}
char txt='A'; // char는 한글자만 인식함 ''
txt='B';
System.out.println(txt);
String str="Hello"; // String은 나열이라고 생각하면 됨, 한글영문 다 가능 ""
str="NTY";
System.out.println(str);
8. 리터럴의 접두사와 접미사
- 접두사랑 접미사는 대소문자 구별 안함!
- 실수형의 경우 f랑 d밖에 없기 때문에 d는 생략이 가능함
- 정수형의 byte, short는 접미사가 붙지 않음.
- byte는 -128부터 127까지 가능하고, 그 이상을 byte로 쓸 시 에러 나타남.
- int가 20억정도까지 표현 가능한데 그 이상을 나타낼 때는 long을 쓰며 접미사 붙여줌.
boolean power = true; or false; long l = 10_000_000_000L; //_은 값이 클 때 붙여줌.L필수
char ch = ‘A’; long l = 100; // int값으로 접미사 생략가능, OK
String str = “abc”; float f = 3.14f; // 접미사 필수
byte b = 127; double d = 3.14; // 생략 가능
bute b = 128; // 에러 10. -> 10.0 double
int i = 100; // 10진수 .10 -> 0.10 double
int oct = 0100; // 8진수 10f -> 10.0 float
int hex = 0x100; // 16진수 1e3 -> 1000.0 double (e=10의 제곱이면서 실수형/ 10의 3제곱x1)
int score = 0b0101; // 2진수
9. 변수와 리터럴 간의 타입 불일치
1) 범위가 ‘변수 > 리터럴’인 경우, OK!
int i = ‘a’; // int > char
long l = 123; // long > int
double d = 3.14f; // double > float
2) 범위가 ‘변수 < 리터럴’인 경우, 에러!
int i = 3_000_000_000; // int의 범위(20억) 벗어남
long l = 3.14f; // long < float
float f = 3.14; // float < double
3) byte, short 변수에 int리터럴 저장가능
(단, 변수의 타입의 범위 내여야 함)
byte b = 127; // OK. byte의 범위 내 (-128~127)
bute b = 128; // 에러. byte의 범위를 벗어남
** 문자형 char < 정수형 int < long < 실수형 float < double **
10. 문자와 문자열
char ch = ‘A’;
char ch = ‘AB’; // 에러
String s = “ABC”;
String s = “A”;
String s = “”; // 빈문자열
char ch = ‘’; // 에러
String s1 = “AB”;
String s2 = new String(“AB”); // 둘은 거의 유사한 의미이지만 거의 위에 문장대로 씀
String s1 = “A” + “B”; -> “AB”
“” + 7 + 7 -> “77”
7 + 7 + “” -> “14
11. 두 변수의 값 교환하기(tmp이용)
// >>> 두 변수의 값 교환하기
public static void main(String[] args) {
// TODO Auto-generated method stub
int x=10, y=20;
x=y; // y의 값을 x에 저장 x=20
y=x; // x의 값을 y에 저장 y=20
System.out.println(x);
System.out.println(y);
} -> 20, 20 출력
public static void main(String[] args) {
// TODO Auto-generated method stub
int x=10, y=20;
int tmp; // 빈 컵
tmp=x; // x의 값을 tmp에 저장 tmp=10
x=y; // y의 값을 x에 저장 x=20
y=tmp; // tmp의 값을 y에 저장 y=10
System.out.println(x);
System.out.println(y);
} -> 10, 20 출력
'자바' 카테고리의 다른 글
자바 - String 객체에 대해서 알아보기 (0) | 2023.01.10 |
---|---|
자바 - Math.round(), 나머지, 비교, 논리, 삼항, 대입 연산자 (0) | 2022.12.30 |
자바 - 연산자, 형변환 (0) | 2022.12.29 |
자바 - Printf() 출력, Scanner 활용 (0) | 2022.12.28 |
자바 설치, 프로젝트 만들기, 단축키 (0) | 2022.12.26 |