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 |