변수
변수 ==> 변할 수 있는 값(숫자를 의미하는 것이 아니다.)
단 하나의 값을 저장할 수 있는 메모리 공간.
상수 ==> 변할 수 없는 값
y = f(x)
f: function 기능
x: 입력 값
y: 출력 값
변수란 반드시 하나의 값만 저장할 수 있다.
새로 넣으려면 기존에 있던 것 하나를 빼내야 한다.
두 가지 값을 넣을 수 없다.
변수선언
int age;
변수에 저장될 값이 어떤 타입인지 지정하는 것이다.
변수의 초기화
int age = 25;
변수를 사용하기 전에 처음으로 값을 저장하는 것.
*integer 정수 = int
정수만 들어갈 수 있는데 실수가 들어가 있으니 당연히 오류가 생긴다.
= : 대입 연산자
오른쪽에 있는 것을 왼쪽에 대입하는 역할을 함
아무리 복잡한 식이어도 값은 하나만 나온다.
오른쪽에 값이 올 수도, 연산식이 올 수도, 변수가 올 수도 있다.
Lvalue(변수선언) = Rvalue(변수의 초기값)
String : 문자열
이름, 문자를 입력하고자 할 때
여러 개의 문자들을 엮어놓은 것을 의미
오류가 생김 (name 때문)
정의가 되지 않았으므로 변수는 선언으로만 쓸 수 없다.
변수의 정의 = 변수 선언 + 초기화(초기값을 넣어줌)
★★★ 변수는 "정의"까지 완성되어야만 사용가능하다.
이처럼 변수를 한글로 표기해도 자바는 작동이 된다.
그러나 영어로 하기를 권장한다.
final
System.out.println(); : 메소드이다.
변수 - 영어: variable
Ctrl + / 해당 행 전체 주석처리
Literal리터럴
age = 23;
하드 코딩
literal리터럴: 소스 코드 내에서 직접 입력된 변수의 초기값
언제 값이 바뀔지 모르니 리터럴의 사용은 지양되어야 한다.
변수의 유효범위
변수: 정의 + "유효범위(***)"
일반화 요약:
(1) 변수의 유효범위는 자신이 선언된 블록 내부에서만 유효하다!
(2) 변수는 자신의 유효범위가 끝나는 순간, 메모리에서 '파괴'된다.
변수의 유효범위: 정의된 변수를 사용가능한 범위
오류가 나는 이유
변수의 유효 범위를 넘어갔기 때문.
유효범위 초과라서 var2가 무엇인지 알아내지 못함.
이름은 같지만 완전히 새로운 age가 됨.
사용자 정의 블록은 어디에 두어도 허용되지만 class 범위 밖에서는 허용되지 않는다.
세미콜론: 실행문의 마무리
세미콜론n: 여러 번 써도 상관없음
세미콜론2(;;) : pass = 아직 실행 문장을 완성하지 못하거나, 준비가 안 된다.
빈 { } 으로 놔두면 동료 개발자가 무슨 뜻인지 알 수 없음.
pass (;;)를 해두면 골격만 만들어놓고 아직 준비가 덜 되었다는 것을 알 수 있음.
(파이썬에서는 pass라고 표기)
변수의 구분
(1) 지역변수 Local
(2) 전역변수 Global : 자바에는 없다!
The value of the local(<->global) variable age is not used
if 블록으로 들어갔을 때 v2 값이 선언되었으니 if 블록을 나가는 순간 파괴된다.
if 블록이 끝나면 메소드 블록이 남는데 v1은 메소드 블록에서 선언되어 살아있지만,
v2는 if 블록이 끝나면서 파괴되었기 때문에 존재하지 않는 변수가 되어버린다.
그래서 컴파일 오류가 생긴다.
5는 하드코딩된 리터럴값
에러 메시지가 뜨는 빨간, 노란 줄 옆 노란 포스트잇(풍선)을 반드시 확인해볼 것!
영어라서 모르겠다면 복사해서 번역해보기.
데이터 타입
● 기본타입
1. 정수타입
- byte : 1바이트
- char(character: 문자) : 2바이트
- short: 2바이트
- int (정수): 4바이트
- long: 8바이트
2. 실수 타입(소수점 있는)
- float: 4바이트
- double: 8바이트
3. Logical 논리타입
- boolean(불린): 운영체제(플랫폼)마다 다르다.
참과 거짓의 경우에는 1비트(8비트=1바이트)만 사용.
1 bit ----- 전기적 신호가 흐르면 1, 안흐르면 0
1 byte --- 8개의 bit 모여서 1byte --> 8bits
1 KB -- 1024 bytes
1 MB -- 1024 kbytes
1 GB -- 1024 MB
1 TB -- (Tera Bytes) 1024GB
1 PB -- (Peta Bytes) 1024TB
변수와 타입
정수 중 기본 타입 변수: int
실수 중 기본 타입 변수: double
char: 두 개 이상의 문자는 넣을 수 없다.
아스키 코드 ASCII Code
Keystroke 키를 누르는 행위
Key -> 정수값으로 변환 (Keycode)
문자 집합(Character Set)
ASCII: 영어권 문자밖에 표현 못 함
UTF-8: 다국어 문자 표현 가능
Encoding: 문자 > 키 코드(정수)로 변환
Decoding: 키 코드(정수) > 문자로 변환
개발은 MS949로 해서는 안 된다.
UTF-8이 표준이므로 이클립스 환경 설정(Window-Preference-General-Workspace)에서 고치기
형 변환
데이터 타입을 다른 타입으로 변환하는 것
byte <-> int
int <-> double
종류
자동(묵시적) 타입 변환: Promotion
강제(명시적) 타입 변환: Casting
자동 타입 변환
프로그램 실행 도중 작은 타입은 큰 타입으로 자동 타입 변환
byte < short < int < long < float < double
* 실수 타입이 정수 타입보다 크다.
byte 타입의 표현 범위: -128 ~ +127
범위를 초과하여 컴파일 에러가 발생한다.
코끼리를 냉장고에 넣으려고 하니 생기는 오류라고 생각하면 편하다.
10진수를 주로 기억하기!
16진수는 보안에서 쓴다.
int는 정수 타입이므로 문자가 출력되지 않고 가지고 있던 정수를 출력하게 만든다.
long의 그릇이 크기 때문에 작은 리터럴이 들어가는 데 이상이 없음
int의 범위를 초과하는 큰 숫자더라도 long이 수용가능할 수준임
The literal 1000000000000 of type int is out of range
:: int 유형의 리터럴 1000000000000이 범위를 벗어났습니다.
리터럴은 형 변환 대상 자체가 아니다.
long은 큰 숫자라서 자주 쓰이지는 않는다.
정수 타입 < 실수 타입
정수 - > 실수 타입으로 자동 형 변환 가능
실수 - > 정수 타입으로 형 변환은 어려워 강제로 변환해야 함
UTF-8에 따르면 "가"의 유니코드 키코드 값이 44032라는 것
필수적이진 않지만 궁금하면 위와 같이 해볼 수 있음
"가의 유니코드="문자열 리터럴: String
intValue: int
기본 타입(정수... 실수... ) < 참조 타입(String)
참조 타입이 더 크므로 정수 값을 변환할 수 있다.
대부분의 자바 프로그램은 참조 타입으로 하는 것이다.
문자열("") => type:String
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 난수Random Number (0) | 2022.03.13 |
---|---|
[JAVA] 연산자 (0) | 2022.03.13 |
[JAVA] 이클립스에서 프로젝트 만들기 / 실행진입점 Entry Point (0) | 2022.03.13 |
JAVA 개발도구 설치하기 (0) | 2022.02.27 |
자바JAVA, 이클립스Eclipse 설치하는 법 (윈도우 64bit 기준) (0) | 2022.01.29 |