공부 1일차) 변수와 타입
세팅 후 공부한 것을 바로 올렸습니다.
우선 C:\javac\workspace\test1\src\test1 로 들어가면 Hello.java가 생겼을거에요
메모장으로 열면 Eclipse에서 연거랑 똑같이 타이핑이 쳐져 있습니다.
workspace → test1 로가서
얘들을 다 압축시켜 줍니다. C드라이브에 복사해주신 후
다른 workspace나 다른 폴더에 압축을 풀고
Eclipse에서 File → Import → General → Projects from Folder or Archive → Directory
우리가 압축을 풀어놨던 위치를 지정.
대신 이번에는 test1번까지만 해주셔야 합니다.
그러면 다른곳에서 공부해서 들고 있던 파일을 자신의 컴퓨터로 가져올 수 있습니다.
(이건 제가 하지 않았습니다.)
JAVA로 들어가서
1. 실행문이란?
변수 선언, 값 저장, 메소드 호출에 해당하는 코드이고
실행문 끝에는 반드시 세미콜론(;) 을 붙여야합니다.
위에 System.out.println안에 안녕하세요가 있고 밑에는 result값인 3이 들어있어서
안녕하세요. 와 3이 나오게 됩니다.
2. 변수란? (데이터 저장 공간, 1개의 데이터만 저장)
하나의 값을 저장할 수 있는 메모리 공간. 신규 데이터 저장 시 기존데이터는 삭제됩니다.
ex) int age; double value;
위에 int x = 1; 이것도 변수를 선언해준겁니다.
Eclipse로 가서 Package Explorer 빈공간에 우클릭 → new → Java Project → Finish
그 이후 src 우클릭 → new → class
밑에 System.out에 a는 값이 들어있지 않아 실행을 시키면 오류가 떠서 주석처리를 했고
b는 20이라는 값이 들어가 있으니 콘솔에는 20이 뜬다.
a = 10; 을 추가해줘서 a 가 실행되게 해주었고
a, b에 새 값을 넣어서 밑에 a와 b의 값은 각각 100과 200이 나오게 만들었다.
코드를 넣고 실행을 하게되면 위에 a와 b는 각각 100, 200이었으니 c의 값은 300이 나온다.
3. 변수 이름을 위한 명명 규칙이 있는데
작성 규칙 | 예 |
첫번째 글자는 문자이거나 '$', '_'여야 하고 숫자로 시작할 수 없다. (필수) | 가능 : price, $price, _companyName 등 안됨 : 1v, @speed, $#value |
영어 대소문자가 구분된다. (필수) | firstname과 firstName은 다른 변수 |
첫문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫자를 대문자로 한다. (관례) | maxSpeed, firstName, carBodyColor |
문자 수(길이) 제한은 없다. | |
자바 예약어는 사용할 수 없다. (필수) |
자바 예약어는 구글에 자바 예약어를 검색해서 찾아봅시다.
4. 변수의 사용 범위
변수는 중괄호 블록 {} 내에서 선언되고 사용이 됩니다.
쉽게 풀이하자면 var1은 전체 main{} 코드 안에 선언이 되어서 if나 for에서 사용이 가능합니다.
하지만 if문 에서는 var1,2를 사용하고 var3 사용 불가능하고
for문에서는 var1,3은 사용 가능하지만 var2는 사용이 불가능합니다.
5. 타입 변환
데이터 타입을 다른 타입으로 변환하는 것.
ex) byte ↔ int, int ↔ double
2가지 종류
1. 자동 타입 변환 : 작은 → 큰
2. 강제 타입 변환 : 큰 → 작은
첫번째는 자동타입 변환이다.
이렇게하면 bValue1 + bValue2에 에러가 뜹니다.
캡쳐는 할 수 없지만 빨간곳에 마우스를 대고있으면 2 quick이라고 뜨며 byte를 더해달라는 말이 뜹니다.
다시 고쳐서 확인해주시면
오류는 뜨지 않는데 iResult값은 150이 나오는 반면 bResult값이 -106이 나온다.
이유
왜냐하면 byte는 -128~127까지의 값이 나오고
int는 -2의 31승 ~ 2의 31승-1 까지의 값(약20억)이 나오기 때문이다.
따라서 원래는 150이지만 127의 값이 오버가 되어서 -128의 값으로 다시 시작이 된다.
따라서 150-127=23이므로 23차이가 나는 -106이 나오게 된다.
A는 ASCII(아스키) 코드로 보면 값이 65이므로 65값이 나오고
double은 실수 형태로 값이 나오기 때문에 값이 500.0이 나오게 된다.
2번째는 강제 타입 변환이다.
int가 더 큰 데이터이기 때문이다. 따라서
형식을 작은타입의 변수 = (작은 타입) 큰 타입의 데이터
int형으로 변환을 시켰기 때문에 각각 500, 3이 나오게 된다.
다시 복습을 해보자.
작은 타입은 큰 타입으로 자동 타입 변환이 가능하다.
int와 double은 기본타입이다.(제일 많이 씀)
강제타입 변환은
큰 타입을 작은 타입으로 강제적 변환을 해줘야하는 것.
3. 연산식 자동 타입 변환.
연산식에서도 자동타입 변환이 있다.
서로 다른 타입의 피연산자가 있을 때도 있는데
두 피연산자 중 크기가 큰 타입으로 자동 변환이 된다.
말로는 이해하기 어려우니 항상 코드로 보자
수학할 때와 같이 10 + 5.5는 15.5인것 처럼
연산식 자동 타입 변환으로 15.5가 된다.