Preview
클래스의 이름 → 대문자 영문자로 시작/ 소스파일의 이름, 생성자의 이름과 같다.
생성자
: new 연산자를 통해 인스턴스를 생성할 때 반드시 호출되고 제일 먼저 실행되는 메소드
→ 자동으로 생성해주기도 하지만, 개발자가 직접 만들어 주어야 한다.
(컴파일러가 알아서 해주는 것을 즐기지 말기)
자바에서 모든 것은 클래스 안에 넣어야 한다. (C++은 클래스 안에 들어오지 않아도 가능)
자바에서 함수는 메소드라 한다.
식별자
: 클래스, 변수, 상수, 메소드 등에 붙이는 이름
[ 식별자의 원칙 ]
( _ 또는 $를 식별자 첫번째 문자로 사용할 수 없으나 일반적으로 사용 X
→ _를 경험적으로 나중에 삭제하는 변수 이름의 용도로 사용 )
⇒ 특수 문자 사용 불가능 !
( 컴퓨터 환경으로 파일 명으로 한글 사용 시, 문제 발생 가능성 ↑ )
⇒ 파일 명의 경우 영어로 쓰고 주석은 한글로 !
⇒ 키워드 사용 불가능 !
( 컴파일러를 만들 때 숫자로 시작할 경우 숫자로 처리하는 방식 진행 )
⇒ 첫 글자는 무조건 영어로 !
→ 키워드 처럼 사용되기에 묶어서 암기
( 귀찮더라도 가능하면 제 3자도 알아볼 수 있게 조금 길게 쓰기 )
시험문제) 식별자는 무엇인지 정의하고 원칙에 대해 설명하여라(요약)
[올바른 이름 설정법]
가독성이 높은 이름 → 자세한 이름을 부여
클래스 이름 : 첫번째 문자는 대문자로 시작, 각 단어의 첫번째 문자면 대문자
ex. AutoVendingType
변수, 메소드 이름 : 소문자로 시작, 이후 각단어의 첫번째 문자는 대문자로 시작
함수 이름 : 동사로 시작 ex. isSingle()
상수 이름 : 모든 문자를 대문자로 표시
시험) 알고리즘의 적정성, 명명 규칙 등도 평가 항목에 포함된다
자바 프로그램의 기본 구조
기본 타입 boolean, char, byte, short, int, long, float, double
레퍼런스 타입
: 프로그램 실행 중에 값을 임시로 저장하기 위한 공간
→ 데이터 타입에서 정한 크기의 메모리 할당 (메모리 주소를 가진다)
→ 변수의 값은 프로그램 수행 중 변경될 수 있다 (상수는 변하지 X)
선언 방식 ) 변수의 타입 다음에 변수 이름을 적어 변수를 선언
※ 상수와 리터럴
리터럴 : 프로그램에서 직접 표현한 값, 정수, 실수, 문자, 논리, 문자열 리터럴 있음
차이점)
상수 → 대문자로 시작하는 식별자를 가지며 값의 변화 X, 메모리 공간 O
리터럴 → 그 자체가 값, 메모리 공간 X
PI = 3.14
var 키워드 : 변수 타입을 자동으로 선택 → 타입 선언 생략 가능 (by 컴파일러)
(c++에서는 auto 키워드) → 사용을 자제, 데이터 타입은 직접 정할 것
final 키워드 : 상수 선언 → 실행 중 값 변경 불가(메모리 O, 값이 들어올 수 X)
자바 기본 프로그램
[키 입력]
system.in : 키 값을 바이트로 리턴 → 바이트 정보를 문자 정보로 변환해줘야 한다
주의) 문자가 아닌 바이트로 리턴
Scanner 클래스 : 키를 읽게 하고, 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 반환하여 리턴, java.util.Scanner 클래스
객체 생성
import java.util.Scanner;
...
Scanner a = new Scanner(System.in);
//new라는 키워드를 사용하여 할당된 변수 a를 클래스 레퍼런스 타입으로 부른다
// Scanner라는 클래스를 생성, 생성자(Scanner)는 함수이다.
// 사람이 읽을 수 있는 데이터 타입으로 변경
// Scanner는 반드시 close 해주어야 한다. (중요 !!)
Scanner에서 키 입력 받기
Scanner 메소드(함수)
nextLine() : \n을 버린 나머지 문자열 리턴
close() : 스캐너 종료 (스캐너 오픈한 다음에 닫는 거 바로 적기)
hasNext() : 입력 여부 확인
→ 입력 개수를 모르니 while문 돌리면서 반복 루프를 돌며 입력값 읽어들임