본문 바로가기

Language/Java

Java 기본 문법 Ⅰ - 식별자, 데이터 타입

1. 자바 프로그램의 구조

- class 키워드로 클래스 이름을 선언, public은 다른 클래스에서 Hello 클래스를 자유롭게 참조할 수 있다는 선언

- 주석문

  // : 한 라인(행)이 끝날 때까지 주석으로 처리

  /* */ : 여러 라인 주석.

- main()에서부터 실행 시작

 main()은 반드시 public static void로 선언되어야 한다. 한 클래스는 두 개 이상의 main()을 가질 수 없다. 보통 실행할 클래스에만 main()을 작성하기 때문에 모든 클래스가 main()을 가지는 것은 아니다

- C/C++ 의 함수를 자바에서는 메소드(method)라 부른다. 반드시 클래스 내에 작성되어야 한다.

- System.out.print()은 콘솔창에 출력하는 함수로, 출력 후 다음 줄로 넘어가지 않는다(줄을 뛰우지 않음).

  System.out.println()을 사용하면 자동 줄 띄우기가 된다.

- static은 항상 콜 할때 static이 있어야 한다.

 

 

2. 식별자(identifier)

: 클래스, 변수, 상수, 메소드 등에 붙이는 이름

 

** 식별자 이름 규칙

- 특수문자(%, *, &, @, ^ 등), 공백(tap, space 등)은 식별자로 사용할 수 없으나  '_', '$'는 사용 가능

- 식별자로 한글을 사용할 수 있다. (그러나 잘 하지 않는다)

- if, while, class 등 자바 언어의 키워드는 식별자로 사용할 수 없다.(예약어)

- 식별자의 첫 번째 문자를 숫자로 사용할 수 없다

- true, false, null은 식별자로 사용할 수 없다.

- 대소문자를 구별

- 길이 제한이 없다.

 

 

3. 자바의 데이터 타입(Data type)

: 자바에서 다룰 수 있는 데이터의 종류

 

1) 기본 타입(basic type) : 8개

- boolean, char, byte, short, int, long, float, double

  정수(크기, byte) : byte(1), short(2), int(4), long(8)

  실수 : float(4), double(8)

  문자 : char(2)    **c에서는 1byte

  논리 타입 : boolean(1bit)

- 타입마다 크기가 다르기 때문에 다루는 값의 범위에 따라 적절한 타입으로 선택한다.

- 유니코드(Unicode) 체계를 사용하기에 C, C++에 비해 영어와 한글이 섞인 문자열을 다루기가 쉽다

 

  ** 변수 선언 -> 데이터타입 변수이름;

- 동일한 타입의 변수를 여러 개 선언할 때는 콤마(,)로 분리하여 나열하고, 선언 시에 초깃값을 할당할 수 있다.

아래 예제에서는 c1, c2는 변수 선언만, c3은 'a'로 초기화

 

2) 레퍼런스 타입(reference type) : 1개

- 레퍼런스 타입배열, 클래스, 인터페이스 세 가지 경우로 이용 된다.

- 레퍼런스는 C/C++의 포인터와 비슷한 개념으로 주소 값을 가리킨다고 보면 이해하기 쉽다.

  하지만 실제 주소 값을 가지는 것은 아니다.

  '배열에 대한 레퍼런스' : 배열에 대한 주소 값 정도로 이해

  '클래스에 대한 레퍼런스' : 객체에 대한 주소 값 정도로 이해

 

  3) 문자열

- 기본 타입이 아닌, JDK(Java Develpment Kit)에서 제공하는 String 클래스를 이용한다. 

- 자바에서는 문자열과 기본타입의 + 연산으로 문자열을 연결해 새로운 문자열을 생성할 수 있다.

 

4) 리터럴(literal)

- 소스 코드에서 고정된 값. 즉, 프로그래밍 언어에서 값을 직접적으로 표현한 것.

- 변수나 상수에 값을 할당할 때 사용되는 값 그 자체를 말한다.

 

- 정수 리터럴 (Integer Literals)

  10진수: int x = 42;

  8진수: int x = 052; (앞에 0을 붙임)

  16진수: int x = 0x2A; (앞에 0x를 붙임)

  2진수: int x = 0b101010; (앞에 0b를 붙임)

 

- 실수 리터럴 (Floating-point Literals)

  소수점 표기: double y = 3.14;

  지수 표기: double y = 2.5e3; (2.5 * 10^3)

 

- 문자 리터럴 (Character Literals)

  단일 문자: char ch = 'A';

  이스케이프 시퀀스: char ch = '\n'; (새 줄)

 

- 문자열 리터럴 (String Literals)

  문자열: String str = "Hello, World!";

 

- 불리언 리터럴 (Boolean Literals)

  참/거짓: boolean flag = true; , boolean flag = false;

 

- null 리터럴 (Null Literal)

  null 값: String s = null;

 

5) 상수

- 한 번 값을 설정하면 변경할 수 없는 변수. final 키워드를 사용해 선언

- 상수는 static 키워드를 붙여서 선언하는 것이 바람직하다.

- 보통 대문자를 사용한다.

 

6) 타입 변환

- 변수나 상수 혹은 다른 타입으로 변환하는 것

- 자동 타입 변환 : 치환문(=)이나 수식 내에서 타입이 일치하지 않을 때, 컴파일러는 작은 타입을 큰 타입으로 자동 변환

- 타입 캐스팅 없이 큰 타입에서 작은 타입으로 자동변환을 할 경우 컴파일 오류 발생

 

- 강제 타입 변환( 타입 캐스팅) : 개발자가 손실을 감안하고도 변환을 원할 때, 타입을 강제로 지정한다.

- 타입 캐스팅을 통해 지정해주면, 손실이 발생하지만 컴파일 오류는 발생하지 않는다.

  byte 타입은 8bit 정수 타입으로 -128 ~ 127의 범위를 가진다. 300은 이 범위를 벗어나기에 손실이 발생.

  300을 8bit로 표현 -> 1 0010 1100 ( 9bit 필요 ), 8비트로 잘라내면 0010 1100 -> 10진수로 44 가 저장된다.

 

 

 

 

 

 

 

 

예제 출처 : Java essential_생능출판

'Language > Java' 카테고리의 다른 글

Java 기본 문법 Ⅲ - 반복문, 배열, 예외 처리  (0) 2024.08.08
Java 기본 문법 문제  (1) 2024.07.09
Java 기본 문법 Ⅱ - Scanner, 연산자, 조건문  (0) 2024.07.09
Java의 특징  (0) 2024.06.30