Programming Languages/Java

[2장] 자바 기본 프로그래밍

마크투비 2021. 3. 22. 14:42

2.1 자바 프로그램의 구조

프로그램의 기본적인 5가지 기능

  1. 입력 : 키보드, 터치스크린, 마우스, 파일 등으로부터 입력 데이터를 받음 (read)
  2. 출력 : 스크린, 파일, 종이 등으로 데이터를 출력하는 기능 (print)
  3. 연산 : 더하기, 빼기, 곱하기, 나누기, 논리연산 등의 연산 수행 (= + - *)
  4. 선택-조건부 수행 : 조건을 판단하여 특정작업을 수행 (if, else)
  5. 반복 : 동일한 작업을 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