* Comment(주석)
- 소스코드 안에서 개발자가 코드의 설명을 부여하기 위해 정의하는 것.
- compiler(javac.exe)가 해석하지 않는다. -> bytecode에는 주석이 생성되지 않는다. (코드의 실행을 막는 용도)
- Java API Documentation을 작성할 때도 사용.
사용)
- 한 줄 주석: //
: 코드의 부연 설명이 짧거나, 코드의 한 줄 실행을 막아야 할 때.
// 주석으로 설정할 내용
- 여러 줄 주석: /* */
: 코드의 부연 설명이 길거나, 코드의 여러 줄 실행을 막아야 할 때. 코드 내의 일부분을 막을 때
/*
주석으로
설정할 내용
들
*/
- API 주석: /** */ - 정의하는 위치가 결정되어 있다. (단축키: 윈도우-shift+alt+j, 맥-option+command+j)
: API 문서를 생성할 때 사용. (class 위, field 위, method 위에 정의)
/**
API 문서에 들어갈 내용
*/
* DataType(데이터 형)
- 값을 저장하기 위해 저장할 종류(상수)에 따라 이름을 부여해 놓은 것.
- 변수를 선언할 때 사용.
- 기본형 데이터 형(변수 자체에 값을 저장할 목적으로 만들어진 데이터 형 - byte, short, int, long, char, float, double, boolean), 참조형 데이터 형(변수 자체에 주소를 저장할 목적으로 만들어진 데이터 형 - class, String, array) 두 가지를 제공.
* Primitive Type(기본형 데이터 형)
| 데이터 종류 | 데이터 형 명 | 크기(byte) | 범위(range) - Signed Value(음수+양수) - Unsigned Value(양수만) |
사용 예 |
| 정수 | byte | 1 | -128 ~ +127 | byte b = 20; byte b = 128; // error |
| short | 2 | -32768 ~ +32767 | short s = 10; | |
| int | 4 | -2147483648 ~ +2147483647 | int i = 10; | |
| long | 8 | -2^63 ~ +2^63-1 | long l = 10; // 형명시 생략 long l = 3000000000L; // 형명시 |
|
| 문자 | char | 2 | '로 감싼 영문자 한자, 한글, 한자, 숫자 한 자의 unicode 값을 저장 | char c = 'A'; char c = '0'; char c = '가'; 저장되는 값은 unicode값이 저장된다. char c = 'A'; -> 65가 저장 char c = 65; -> 출력하면 unicode에 해당하는 문자가 출력된다. 16진수 할당가능. char c = '\u0000' ~ '\uFFFF' |
| 실수 | float | 4 | 유효연산 7자리 | float f = 12.27F; // 형명시 필수 float f = 12.27f; |
| double | 8 | 유효연산 15자리 | double d = 12.27; // 형명시 생략 가능 double d = 12.27D; double d = 12.27d; |
|
| 불린 | boolean | 1 | true/false만 저장 가능 | boolean b = true; |
- charset: 컴퓨터에서 문자를 사용할 수 있도록 미리 정의해둔 테이블.
- ASCII Code: 1byte - 영어, 숫자, 특수문자
- Unicode: 2byte - 영어, 한글, 숫자, 특수문자
* literal: 코딩 창에서 상수를 사용하면, 상수가 저장되는 메모리 공간을 의미.
int i = 10; // 10이 literal에 저장
- literal은 이름이 없고, literal에 저장된 값은 변수로 할당된다.
- 정수 literal은 4byte이고, 실수 literal은 8byte이다.
int i = 10;
| 0000 0000 | 0000 0000 | 0000 0000 | 0000 1010 |
-> int 4byte
| 0000 0000 | 0000 0000 | 0000 0000 | 0000 1010 |
-> 정수 literal 4byte
1. 상수를 정의한 후, 프로그램이 실행되면 상수는 메모리에 저장된다. -> 리터럴에 저장된다.
2. 그 후 리터럴에 저장된 값이 선언된 변수에 할당된다.
long asset = 3100000000; -> 리터럴은 4byte이기 때문에 -21억~+21억까지만 저장할 수 있다. 정의한 값이 21억을 초과하기 때문에 리터럴에 저장할 수 없어서 error
| 0000 0000 | 0000 0000 | 0000 0000 | 0000 1010 | 0000 0000 | 0000 0000 | 0000 0000 | 0000 1010 |
-> long 8byte
| 0111 1111 | 1111 1111 | 1111 1111 | 1111 1111 |
-> 정수 literal 4byte -> 리터럴이 가질 수 있는 값 최대 2147483647, 더 큰 값은 저장할 수 없다. error
=> 등가(리터럴에 선언된 값이 변수에 할당되려면, 리터럴의 크기와 변수의 크기가 같거나 커야 한다!)
* 형명시(상수 뒤에만 사용가능)
- 리터럴의 크기를 일시적으로 변경해주는 것.
- 정수: L 또는 l을 상수 뒤에 붙여서 리터럴의 크기를 4byte에서 8byte로 변경(크기 늘림)
사용 예)
상수L 또는 상수l
long asset = 3100000000L;
-> 1. 4byte의 리터럴이 8byte로 증가하여 값이 저장되고, 2. 저장된 값이 변수에 할당된다.
-> 리터럴이 늘어나면 최대 9223372036854775807 값을 저장할 수 있다.
* 실수 리터럴 8byte의 기본
- D, d, F, f의 형명시를 사용할 수 있다. (D, d는 생략하여 사용)
- F, f(필수)는 리터럴의 크기를 줄여주는 일.
float f = 12.27; // error: 8byte의 리터럴이 4byte 변수로 할당될 수 없다.
float f = 12.27f;
-> 1. 8byte의 리터럴이 4byte로 축소되어 실수 값이 저장되고, 2. 저장된 값이 변수에 할당된다.
* Promotion(자동 형 변환)
- JVM이 상황에 따라 데이터 형의 크기를 자동으로 변경해주는 것.
- 변수의 값을 할당하거나, 연산할 때 자동 형 변환이 발생한다.
- promotion, demotion 지원
변수에 할당)
byte b = 10; // 4byte literal이 1byte로 줄어들어 할당된다. (demotion)
short s = 10; // 4byte literal이 2byte로 줄어들어 할당된다. (demotion)
연산)
int의 하위 데이터 형이 연산되면 결과는 int로 발생한다. (promotion)
byte + byte = int
short + short = int
byte + short = int (byte가 short로 변환된 후 short끼리 연산되고, 결과는 int로 발생)
short + int = int
byte num1 = 10; // -128 ~ +127
byte num2 = 20;
byte result = 0;
result = num1 + num2; // error!
// int의 하위 데이터형이 연산되면 연산결과가 int(4byte)로 저장되기 때문에
// byte(1byte)형의 result변수로 할당될 수 없다.
* Casting(강제 형 변환)
- 개발자가 필요한 데이터 형으로 일시적인 변환을 하는 것.
- 값 손실이 발생할 수 있다.
- 기본형에서 참조형으로, 참조형에서 기본형으로는 강제 형 변환이 되지 않는다.
- boolean형은 강제 형 변환이 되지 않는다.
문법)
(변환할 데이터형) 값(변수, 상수);
float f = (float)12.27;
// 1. 8byte 리터럴에 저장된 값이
// 2. 4byte로 축소되고
// 3. 축소된 값이 할당된다.
double d = 12.27;
int i = d; // error! 8byte의 값(실수)이 4byte(정수)로 할당될 수 없다.
int i = (int) d;
// 1. 8byte 리터럴에 저장된 12.27 값이
// 2. 4byte의 int형으로 변환되고 (실수가 사라진다.)
// 3. 정수만 할당된다. (12) - 값 손실이 발생한다.
* Constant
- 변수를 상수처럼 사용할 때 사용. (가독성을 향상시키면서, 값을 변경하지 못하도록 만들기.)
- 변수: 변하는 수, 가독성 향상
- 상수: 변하지 않는 수, 가독성 저하
- class field(instance variable, static variable, constant, constructor, method 존재)에만 정의할 수 있다.
- Constant는 정의한 클래스 또는 외부 클래스에서도 사용할 수 있다.
- 프로그램에서 기준 값을 저장하고 사용해야 할 때.
class Test {
// class field(instance 변수, static 변수, constant, method 정의)
public static void main(String[] args){
// local
// Java 코드(출력, 지역변수, 연산, 제어)
// local
}
// class field
}
- API에서는 field에서 정의된 Constant를 찾아볼 수 있다.

작성법)
public static final 데이터형 상수명 = 값;
- public: 클래스 외부에서 접근 가능
- static: 모든 메모리에서 접근 가능
- final: 값 변경 불가
- 데이터 형: 기본형 데이터 형, 참조형 데이터 형
- 상수명: 모두 대문자로 기술, 단어를 구분할 때에는 _로 구분한다.
사용)
정의된 클래스 안)
Constant명;
클래스명.Constant명;
class Test{
public static final int MAX_SCORE = 100;
public static void main(String[] args){
MAX_SCORE;
Test.MAX_SCORE;
}
}
외부 클래스)
클래스명.Constant명;
class Temp{
public static void main(String[] args){
Test.MAX_SCORE;
}
}
* Wrapper Class
- 기본형 데이터 형과 이름이 같거나 유사한 클래스들. (Boolean, Byte, Double, Float, Integer, Long, Short, ...)
- 기본형 데이터 형(기능이 없음)을 감싸서 객체로 생성한 후 다양한 기능을 사용하기 위해 만들어진 클랫
- byte: 기본형 데이터 형 - 변수를 선언하고, 값을 저장하고, 사용.
- Byte: 클래스(참조형 데이터 형) - 객체를 생성하고, 객체가 가진 다양한 기능(method)을 사용.
'study > Java' 카테고리의 다른 글
| [sist] 2024.01.02_Java : Operator(연산자), Package(패키지), Compile(컴파일) (2) | 2024.01.28 |
|---|---|
| [sist] 2023.12.28_Java : Operator(연산자), Radix(진수) (7) | 2024.01.28 |
| [sist] 2023.12.26_Java : Java 설치와 실행, 변수 (2) | 2024.01.14 |
| 정석코딩 세미나 자바기초 프로그래밍 3주 - 3주차 후기 (4) | 2023.12.28 |
| 정석코딩 세미나 자바기초 프로그래밍 3주 - 2주차 후기 (1) | 2023.12.19 |