학원/JAVA - 학원

자바 - 이론1

수풀속의고라니 2022. 1. 19. 10:37
728x90

<식별자>

- 이름이라고 볼 수 있음(자기 마음대로 만들면 오류가 날 수 있다.)

 

식별자 원칙

- 기본적으로 특수문자는 사용하지 못하지만 '_', '$'는 사용할 수 있음

- 한글도 사용할 수는 있지만 잘 사용하지는 않음

- 숫자는 사용 가능하지만 첫 글자로 숫자가 올 수는 없음(hello3은 가능하지만 3hello는 불가능)

- 대소문자는 구별

식별자 이름

- 앞은 데이터 타입

- 이름에 있어서 길이 제한은 없음

- int barChart와 int barchart는 다른 것(대소문자 구별)

 

좋은 이름을 붙이는 언어 관습

- 너무 축약해서 자신이 혼자 편하게 사용하면 다른 사람들과 협업에서 힘들다

- class를 만들 때는 관습적으로 첫 단어는 대문자로 시작하고, 단어가 바뀔 때도 첫 글자는 대문자(HelloWorld)

- 변수나 메소드를 만들 때는 첫 글자가 소문자고, 단어가 바뀔 때 첫 글자를 대문자로 사용한다.(myAge)

- 상수는 대문자로만 작성(PI와 같이 변하지 않는 값)

 

<변수, 타입, 연산자>

 

변수

- 변하는 수를 뜻하며, 데이터를 저장하는 공간

- 변수는 이름이 붙여진 그릇이며, 데이터는 그 안의 내용물

- 컴퓨터 메모리 공간에 이름이 붙여져서 관리

- 변수명은 자신이 원하는 대로 이름 붙일 수 있음

- 타입(그릇), 변수명(내용물)

- 3.5가 안되는 이유는 int가 정수타입 이기 때문에 실수는 들어올 수 없음

변수 선언 사례

- 변수를 여러개 설정할 때 ,를 사용

- 2. 변수를 설정하면서 담을 내용물 까지 함께 설정 가능(초기값 설정)

- 2. 변수명만 설정 가능, 변수명 설정하면서 a, b, c라는 문자명 설정도 가능

- 3. 사칙연산도 상관없이 들어감

- 3. 사칙연산에 숫자만 들어갈 수 있는 것이 아니라 변수명도 들어갈 수 있음

 

변수 이름 짓기

여러 단어로 이루어진 경우 사용(첫 글자들 대문자)

- 변수명은 영어 권장, 소문자의 명사형 사용이 관례

- 자바의 키워드는 변수의 이름이 될 수 없다.

- 위의 식별자 원칙의 내용

- 변수의 값은 변경 가능

 

변수 활용

상수

- 값은 고정시킨 변수가 상수

- final 키워드를 붙여서 선언

- 대문자와 밑줄로 만드는 것이 관례

orgin 변수 값을 copy 변수로 복사

- 변수는 복사 가능

문자열 연결

- 덧셈 연산은 두 문자열을 연결

문자열과 숫자 연결 - 문자열이 됨

 

-----------

 

타입

- 데이터의 형태

- 그릇에 담길 내용물의 종류라고 볼 수 있음

타입/변수명/메모리 공간

- 논리 타입 : 참, 거짓을 구별하며, 참이면 실행하고 거짓이면 실행하지 않는 식으로 사용

- 정수타입에서는 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으로 출력

언더바가 허용되지 않는 4가지 경우

 

---------

 

타입 변환

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 : 반복문에서 나옴(다음을 가지느냐)

(값이 있으면 참, 없으면 거짓)

728x90