자바 프로그램의 기본 구조
자바 프로그램은 클래스와 메소드로 구성됨
클래스
class 키워드로 클래스 선언
public으로 선언한 클래스의 경우에는 다른 클래스에서 접근이 가능하다.
메소드
C/C++에서의 함수는 JAva에서 메소드로 지칭한다.
메소드는 클래스 내부에 작성되어야 한다.
main메소드의 경우 public static void 로 선언하게 된다. 또한 인자로 String[] args를 받는다.
Java 프로그램은 main()에서 실행시작된다.
식별자
클래스, 변수, 상수, 메소드 등에 붙이는 이름을 식별자라고 한다.
식별자는 _, $, 대/소문자, 숫자, 유니코드 문자, 한글 제외한 다른 특수문자를 사용할 수 없다.
식별자의 첫번쨰 문자로 숫자를 사용할 수 없다.
_, $와 같은 문자를 첫번쨰 문자로 사용할 수는 있지만, 일반적으로 사용하지 않는다.
자바 언어의 키워드와 boolean, null 리터럴은 식별자로 사용할 수 없다.
자바의 데이터 타입
자바의 데이터 타입은 기본타입과 레퍼런스 타입이 있다.
기본타입은 8개, 레퍼런스 타입은 그 자체로 1개이나, 용도는 3가지이다.
기본타입 8개는 다음과 같다.
레퍼런스 타입은 class, interface, array에 대한 레퍼런스로 사용될 수 있다.
추가로
String class를 활용하여 문자열 표현을 사용할 수 있다.
문자열에서는 + 연산을 통해 문자열을 concat할 수 있다.
변수
변수와 선언
변수는 프로그램 실행 중 값을 임시 저장하기 위한 공간이다. 이 변수 내부의 값은 프로그램 수행 중 변경될 수 있다.
변수를 선언하는 방법은 다음과 같다.
데이터 타입을 먼저 명시하여 해당 데이터 타입에서 정한 메모리 크기만큼 메모리를 할당한다. 뒤에는 식별자(이름)를 통해 변수를 구분할 수 있도록 한다.
리터럴
리터럴은 프로그램에서 직접 표현한 값으로, 정수, 실수,문자, 논리, 문자열 리터럴이 있다.
즉, 자바에는 특정ㅇ 데이터 타입에 대한 정해진 형식으로 표현된 가능한 입력값을 말한다.
각 데이터타입은 특정한 리터럴 표기법이 있고, 우리는 이를 따라서 표현해야 한다.
정수 리터럴
정수 리터럴은 기본적으로 int형으로 컴파일 된다.
만약 long타입을 사용하려 한다면 숫자 뒤 L, l을 붙여 표시한다.
int형 15: int a = 15
long형 15: long b = 15L
int형의 경우 8,16,2진수를 다음 리터럴을 따른다.
8진수 : 0__
16진수 : 0x__
2진수 : 0b__
실수 리터럴
실수 리터럴은 기본적으로 double타입으로 컴파일 된다.
double 타입의 리터럴(float 타임의 경우 F나,f를 붙인다)
double d = 0.1234
double d = 1234E-4
double d = 0.1234D
double d = .1234
double e = 123.0
double e = 123.
문자 리터럴
문자는 단일 임용부호(' ') 혹은 \u유니코드값으로 문자를 표현한다.
특수문자 리터럴의 경우 백슬래시(\)로 시작한다.
논리타입 리터럴
true, false둘 중 하나로 표현한다.
Null 리터럴
기본타입에는 null리터럴을 사용할 수 없고, 레퍼런스에 대입사용한다.
문자열 리터럴(String 리터럴)
이중 인용부호(" ")로 묶어 표현한다. 문자열 리터를은 String 객체로 자동처리된다.
상수
final 키워드를 사용해서 선언한다. 선언할 때는 초깃값을 지정한다.
상수로 선언되면 실행중에 값을 변경 할 수 없다.
var 키워드
기존의 변수 선언 방식은 변수의 타입을 반드시 지정하여야 했다.
Java 10부터는 var키워드를 통해 타입을 생략하고 변수선언이 가능하다. 컴파일러가 초기값을 통해 변수타입을 추론한다.
그러나 초기값이 주어지지 않으면 컴파일 오류가 발생하고, 지역변수 선언에만 한정사용할 수 있다.
타입 변환
타입변환은 한 타입의 값을 다른 타입의 값으로 변환하는 것을 타입 변환이라고 한다.
자동 타입 변환은 컴파일러에 의해서 자동으로 더 큰 사이즈의 타입으로 변환되는 것을 말한다.
치환문이나, 수식 내 타입이 일치하지 않을 경우 발생한다.
강제 타입 변환
개발자가 의도적으로 강제로 타입을 변환하는 것이다. (변환할 타입)을 통해 명시적으로 변환한다.
이때 작은 사이즈로 변환이 가능하기 때문에 이에 따른 손실이 발생할 수 있다.
키 입력
System.in
System.in은 자바의 표준입력 스트림에 해당한다. 이를 통해서 사용자로부터 키보드에서 데이터를 읽을 수 있다.
이는 입력된 키를 바이트로 리턴하는 저수준의 스트림이다.
System.in 을 직접 사용하게 되면 바이트를 문자나 숫자로 변환해야하는 어려움이 있다.
Scanner 클래스
읽은 바이트를 여러 타입으로 변환하여 리턴할 수 있도록 하는 클래스이다.
java.util.Scanner를 임포트 하여 사용한다.
Scanner는 입력되는 키 값을 공백으로 구분되는 토큰 단위로 읽는다. 공백문자는 다음과 같다. (‘\t’,‘ \f’,‘ \r’,‘ ’,‘ \n’)
Scanner 주요 메소드를 통해 사용자가 원하는 타입 값으로 입력받는다.
연산자
조건문
if - else 문
Switch 문
이때 case문의 값으로 실수 리터럴은 허용되지 않는다. 또한 case에는 변수와 수식 사용이 불가능 하다.