자바 - 이론1
<식별자>
- 이름이라고 볼 수 있음(자기 마음대로 만들면 오류가 날 수 있다.)
식별자 원칙
- 기본적으로 특수문자는 사용하지 못하지만 '_', '$'는 사용할 수 있음
- 한글도 사용할 수는 있지만 잘 사용하지는 않음
- 숫자는 사용 가능하지만 첫 글자로 숫자가 올 수는 없음(hello3은 가능하지만 3hello는 불가능)
- 대소문자는 구별
- 앞은 데이터 타입
- 이름에 있어서 길이 제한은 없음
- int barChart와 int barchart는 다른 것(대소문자 구별)
- 너무 축약해서 자신이 혼자 편하게 사용하면 다른 사람들과 협업에서 힘들다
- class를 만들 때는 관습적으로 첫 단어는 대문자로 시작하고, 단어가 바뀔 때도 첫 글자는 대문자(HelloWorld)
- 변수나 메소드를 만들 때는 첫 글자가 소문자고, 단어가 바뀔 때 첫 글자를 대문자로 사용한다.(myAge)
- 상수는 대문자로만 작성(PI와 같이 변하지 않는 값)
<변수, 타입, 연산자>
변수
- 변하는 수를 뜻하며, 데이터를 저장하는 공간
- 변수는 이름이 붙여진 그릇이며, 데이터는 그 안의 내용물
- 컴퓨터 메모리 공간에 이름이 붙여져서 관리
- 변수명은 자신이 원하는 대로 이름 붙일 수 있음
- 타입(그릇), 변수명(내용물)
- 3.5가 안되는 이유는 int가 정수타입 이기 때문에 실수는 들어올 수 없음
- 변수를 여러개 설정할 때 ,를 사용
- 2. 변수를 설정하면서 담을 내용물 까지 함께 설정 가능(초기값 설정)
- 2. 변수명만 설정 가능, 변수명 설정하면서 a, b, c라는 문자명 설정도 가능
- 3. 사칙연산도 상관없이 들어감
- 3. 사칙연산에 숫자만 들어갈 수 있는 것이 아니라 변수명도 들어갈 수 있음
변수 이름 짓기
- 변수명은 영어 권장, 소문자의 명사형 사용이 관례
- 자바의 키워드는 변수의 이름이 될 수 없다.
- 위의 식별자 원칙의 내용
- 변수의 값은 변경 가능
변수 활용
- 값은 고정시킨 변수가 상수
- final 키워드를 붙여서 선언
- 대문자와 밑줄로 만드는 것이 관례
- 변수는 복사 가능
- 덧셈 연산은 두 문자열을 연결
-----------
타입
- 데이터의 형태
- 그릇에 담길 내용물의 종류라고 볼 수 있음
- 논리 타입 : 참, 거짓을 구별하며, 참이면 실행하고 거짓이면 실행하지 않는 식으로 사용
- 정수타입에서는 int를 가장 많이 사용
*범위 : 1바이트는 8비트로 2의 8승인 256의 범위를 가진다(-128~127까지 표현 - 중간에 0도 포함)
*범위 : 2바이트는 16비트, 2의 16승인 65536의 범위를 가진다
- 너무 범위가 커지면 long이나 double타입을 사용
- 바이트에 따라 적정한 메모리 공간을 사용하기 위해서 각 타입이 가지는 범위를 파악해서 사용
(int를 일반적으로 많이 쓰는 이유)
- 레퍼런스는 참조라는 의미로, 타입 뒤의 내용은 참조변수라고 이름 붙임
(String(타입)/bookTitle(참조변수))
- string : 문자열로 길이에 제한 없음
- 배열 : 데이터 집합
- 클래스 : 객체를 만들기 위한 틀
- 인터페이스 : 클래스의 설계 부분(인터페이스>클래스>객체)
*프로젝트(현차)>패키지(쏘나타, 아반떼, 그랜저)>인터페이스(각 차의 종류)>클래스
문자열
- 문자열에 실수를 더하면 문자열이 됨(정수를 더해도 마찬가지)
----
리터럴(literal)
- 값이라고 볼 수 있음
- int apple = 5; 혹은
- int apple;
apple = 5;
- float f = 0.1234f;에서 뒤의 f는 float를 표시하는 리터럴
- double w = .1234D;에서 뒤의 D또한 double을 표시하는 리터럴
- 기본적으로 int로 인식하기 때문에 리터럴로 무슨 타입인지 표시 해줘야 한다.
문자 리터럴
- 백슬래시는 \누르면 됨
- 나중에 찾아서 적어넣기
- 유니코드 : 전세계 문자를 모두 담은 것
논리 리터럴과 boolean 타입
- 참, 거짓
- 값이 없는 것은 string타입을 사용해야 함.
- 기본타입으로 null을 사용하면 오류
- 숫자에 '_'를 사용 가능 : 컴파일러는 _를 빼고 출력
ex)int price=20_999 : 20999으로 출력
---------
타입 변환
1. 숫자 연산의 결과 타입
- 정수와 정수 연산 = 정수(뒤에 나오는 소수점은 표기x)
- 정수와 실수 연산 = 실수
- 실수 타입이 크기 때문에 실수를 따라가서 실수가 나오게 됨
2. 타입 불일치
- 대입할 값과 변수 타입이 다를 경우 오류가 생긴다
- 위에서 오류가 생긴 이유는 정수 타입에 문자열을 집어 넣었기 때문
- 오류를 해결하기 위해선 대입할 값은 정수로 바꾸거나, 문자열 타입을 사용해야 한다.
3. 타입 변환과 캐스팅
자동 타입 변환 : 암묵적으로 타입이 변화
- 작은 타입 데이터가 같은 범주의 큰 데이터로 변환 (정수 -> 실수)
강제 타입 변환
- a:10 , b:11, c:12 ~~~
- 위에 32비트가 300을 16진수로 표시한 것
(1*16의 2승) + (2*16의 1승) + (10*16의 0승) = 300
- 300이 44가 되는 이유는 타입이 작아지면서 2자리만 남기고 잘려나가서 그렇다
캐스팅
- 강제 타입 변환은 다운 캐스팅으로 볼 수 있음
4. 문자열과 숫자 간 타입 변환
- 문자열에 정수나 실수를 더하면 문자열
---------------
Scanner 클래스
- 스캐너를 사용하는 방법이 import
- new를 사용해서 스캐너 객체를 생성하여 사용
(a라는 이름이 스캐너 객체를 가르키며, 스캐너에 System.in이 있고, 이 친구가 키보드에서 입력한 값을 변환)
- a가 참조하는 타입이 Scanner라는 타입이고, 이 참조변수 a(이름, 객체)가 new Scanner객체를 가르킴
(a = new Scanner / a가 이름이고 new 객체가 그 이름을 가진 사람이라고 생각하면 편함)
토큰
- 주민등록 번호에서 -를 뗀 순수 값, 시간에서 :를 뗀 순수 값 등을 뜻함
Scanner를 사용한 이용하여 키 입력
- 입력하는 System.in을 가진 Scanner객체를 new를 통해서 생성
- next : 문자열 가져옴
- nextInt : 정수 가져옴
- nextDouble : 실수 가져옴
- nextBoolean : 참, 거짓 가져옴
스캐너 주요 메소드
- boolean hasNext : 반복문에서 나옴(다음을 가지느냐)
(값이 있으면 참, 없으면 거짓)