2.1 자바 프로그램의 구조
프로그램의 기본적인 5가지 기능
- 입력 : 키보드, 터치스크린, 마우스, 파일 등으로부터 입력 데이터를 받음 (read)
- 출력 : 스크린, 파일, 종이 등으로 데이터를 출력하는 기능 (print)
- 연산 : 더하기, 빼기, 곱하기, 나누기, 논리연산 등의 연산 수행 (= + - *)
- 선택-조건부 수행 : 조건을 판단하여 특정작업을 수행 (if, else)
- 반복 : 동일한 작업을 2회 이상 수행 (for, while, do while)
자바 프로그램의 기본 구조
public class Hello{
}
- 클래스 만들기
- Hello 이름의 클래스 선언
- class 키워드로 클래스 선언
- public으로 선언하면 다른 클래스에서 접근 가능
- 클래스 코드는 { } 내에 모두 작성
public static void main(Strin[] args) {
}
- main() 메소드
- 자바 프로그램은 main()에서 실행 시작
- public static void으로 선언
- String[] args로 실행 인자를 전달 받음
- 메소드
- C/C++에서의 함수를 메소드로 지칭
- 클래스 바깥에 작성할 수 없음
System.out.println("Hello"); // "Hello" 문자열 출력
- 화면 출력
- println()은 여러 타입의 데이터 출력 가능
- println()은 출력 후 다음 행으로 커서 이동
- System.ou.print()를 사용하면 출력 후 다음 줄로 넘어가지 않음
2.2 식별자
식별자란?
- 클래스, 변수, 상수, 메소드 등에 붙이는 이름(=네이밍)
- 식별자의 원칙
- ‘@’, ‘#’, ‘!’와 같은 특수 문자, 공백 또는 탭은 식별자로 사용할 수 없으나 ‘_’, ‘$’는 사용 가능
- 유니코드 문자 사용 가능. 한글 사용 가능 (웬만하면 영어 사용 권장)
- 자바 언어의 키워드는 식별자로 사용불가
- 식별자의 첫 번째 문자로 숫자는 사용불가
- ‘_’ 또는 ‘$’를 식별자 첫 번째 문자로 사용할 수 있으나 일반적으로 잘 사용하지 않음
- 불린 리터럴(true, false)과 널 리터럴(null)은 식별자로 사용불가
- 길이 제한 없음
- 대소문자 구별
2.3 자바의 데이터 타입
자바의 데이터 타입
- 기본 타입 8개
- boolean, char, byte, short, int, long, float, double
- 레퍼런스 타입 1개 (자세한 내용은 나중에)
기본 타입
- 특징
- 기본 타입의 크기는 CPU나 운영체제에 따라 변하지 않음
문자열
- 문자열은 기본 타입이 아님
- String 클래스로 문자열 표현
- 문자열 리터럴 - "JDK", "한글", "계속하세요"
String toolName = "JDK"
- 문자열 연산 (문자열이 섞인 + 연산) : 문자열을 연결해주는 역할
변수 선언
- 데이터 타입에서 정한 크기의 메모리 할당 예) int price;
리터럴과 정수 리터럴
- 리터럴(literal)
- 프로그램에서 직접 표현한 값. 정수, 실수, 문자, 논리, 문자열 리터럴 있음
- 그냥 변수나 함수에 붙는 값으로만 이해. 리터럴이라는 용어 안 쓰임
- 정수 리터럴은 int 형으로 컴파일
- long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙여 표시
- 예) long g = 24L;
실수 리터럴
- 실수 타입 리터럴은 double 타입으로 컴파일
double d = 0.1234;
double e = 1234E-4; // 1234E-4 = 1234*(10^-4) 이므로 0.1234와 동일
- 숫자 뒤에 f(float)나 d(double)을 명시적으로 붙이기도 함. 숫자 뒤에 f나 d를 붙이면 float 타입으로, double 타입으로 강제 변환할 수 있음
float f = 0.1234f; // f = 0.1234로 하면 컴파일 오류. 0.1234는 본래 double 타입
double w = .1234D; // .1234D와 .1234는 동일 -> 이 줄 잘 모르겠음.
문자 리터럴
- 단일 인용부호(' ')로 문자 표현
char a = 'W';
char b = '글';
char c = \uae00; // '글'의 유니코드 값(ae00) 사용
- 특수문자 리터럴은 백슬래시(\)로 시작
논리 타입 리터럴
- 논리 값 표시
- true 또는 false 뿐
- boolean 타입 변수에 치환하거나 조건문(while(true))에 이용
boolean a = true;
boolean b = 10>0; // 10>0이 참이므로 b값은 true
boolean c = 1; // 타입 불일치 오류. C/C++와 달리 자바에서 1, 0을 참 거짓으로 사용 불가
null 리터럴
- 기본 타입에 사용 불가
int n = null; - String str = null; // 기본타입이 아니라 null 값 대입 가능
문자열 리터럴 (스트링 리터럴)
- 이중 인용부호(" ")로 묶어서 표현
- 문자열 리터럴은 String 객체로 자동 처리
String str = "Good";
상수
- 상수 선언은 final 키워드 사용
- 선언 시 초깃값 지정
- 실행 중 값 변경 불가
- 예) final double PI = 3.141592; // 상수 이름은 주로 대문자 사용
타입 변환
- 한 타입의 값을 다른 타입의 값으로 변환
- 자동 타입 변환
- 컴파일러에 의해 원래의 타입보다 큰 타입으로 자동 변환 (작은 통에서 큰 통으로)
- 치환문(=)이나 수식 내에서 타입이 일치하지 않을 때
long m = 25; // 25는 int 타입 25가 long 타입으로 자동 변환
double d = 3.14*10; // 실수 연산 위해 10이 10.0으로 자동 변환
- 강제 타입 변환
- 개발자의 의도적 타입 변환
- ( ) 안에 개발자가 명시적으로 타입 변환 지정
- 강제 변환은 값 손실 우려 (큰 통에서 작은 통으로 변환시킬 때)
int n = 300;
byte b = (byte)n;
2.4 자바의 키 입력
System.in
- 키보드와 연결된 자바의 표준 입력 스트림 객체
- 키 값을 바이트 정보로 바꾸어 제공하는 저수준(low-level) 스트림 객체
Scanner를 이용한 키 입력
- 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴
- 객체 생성
import java.util.Scanner; // 임포트 문 필요
...
Scanner a = new Scanner(System.in); // Scanner 객체 생성
Reference
명품 자바 에센셜(황기태)
'Programming Languages > Java' 카테고리의 다른 글
[2장] 자바 조건문 (0) | 2021.03.24 |
---|---|
4주차 스터디 인증 (0) | 2021.03.23 |
[2장] 자바 연산자 (0) | 2021.03.23 |
[1장] 자바 시작 (0) | 2021.03.22 |
3주차 스터디 인증 (0) | 2021.03.21 |