Java 프로그램의 구조
1. 클래스
1) 클래스는 Java 프로그램의 기본 구성단위
- 객체지향 프로그램은 클래스의 집합
- 하나의 클래스는 하나의 .class 파일로 변환됨
- Java 소스의 컴파일 과정에서 나오는 결과물
2) public class의 이름은 파일 이름과 일치해야 함
ex. public class SimpleSum { ... }
- 클래스는 특정 패키지에 저장됨
2. 패키지
1) 패키지
- 클래스와 인터페이스의 관리를 위해 필요함
- 패키지에 클래스, 인터페이스, 서브 패키지가 저장됨
- 클래스-패키지 관계는 파일-폴더 관계와 같다
- 패키지는 계층 구조이다
ex. java.util.ArrayList
- package 구문을 사용해 클래스가 위치할 패키지 지정
- 클래스 파일의 위치를 확인해볼 것
2) 예제
: basic이라는 패키지에 SimpleSum이라는 클래스를 위치시키겠다
프로젝트 > workspace > Java 프로젝트 > src: 자바 소스
프로젝트 > workspace > Java 프로젝트 > bin: 컴파일 결과
프로젝트 > workspace > Java 프로젝트 > src > basic > SimpleSum
프로젝트 > workspace > Java 프로젝트 > bin > basic: basic이라는 패키지 생성
3. 클래스의 구성
1) 클래스: 데이터필드+메소드로 구성
- 메소드는 함수와 같음
- 데이터필드는 인스턴스 변수 또는 클래스 변수(static 변수)
2) 클래스는 (참조) 자료형
- 클래스와 객체의 의미를 구별할 것
public class Data { // 객체
int x; // 데이터필드
int getX() { // 메소드
return x;
}
void setX(int x) { // 메소드
this.x = x;
}
}
- 데이터 필드: 객체마다 개별적으로 가지고 있는 데이터
3) 예제
class Circle {
private int radius; // 인스턴스 변수: 원마다 다른 반지름 설정
public Circle(int a) {
this.radius = a;
}
int getRadius() { //메소드
return this.radius;
}
void getRadius() { // 메소드
this.radius = r;
}
public double getArea() { // 메소드: 원의 면적 계산
return this.radius * this.radius * 3.14;
}
}
public class CircleTest { // 실행 클래스
public static void main(String[] args) {
Circle c = new Circle(2);
System.out.println(c.getRadius());
c.setRadius(10);
System.out.println(c.getArea());
}
}
- 객체.f();
- java에서는 반드시 객체로부터 함수를 실행하게 된다: 함수가 객체를 통해 실행된다
4. 문장과 블록
1) 문장
- 프로그램에서 명령 수행을 지시하는 기본 단위
- 문장은 세미콜론;으로 끝남
2) 블록
- 여러 문장을 중괄호로 묶은 구역
- 클래스 정의나 메소드 정의를 위해 블록을 사용함
- 명령문이 사용되는 임의 위치에서 블록을 만들 수 있다
public static void main(String[] args) { // 메인 메소드를 정의하기 위한 중괄호
int i = 10;
{
int j = 30;
System.out.println(i+j);
} // 여러 개의 문장을 하나의 블록으로 만들 수 있다
// -> 하나의 문장처럼 다룰 수 있다
}
주석(comment)
1. 주석
- 프로그램의 이해를 돕는 설명문으로 실행과 무관함
- 한 줄 주석은 // 이후부타 라인 끝까지
- 여러 줄의 주석은 /* */ 사이에 기입
- /** */ 사이의 주석은 javadoc(실행파일)에서 사용
식별자(identifier)
1. 식별자
- 프로그래머가 작명하는 클래스, 변수, 메소드 등의 이름
1) 작명 규칙
- 대소문자 구분(case-sensitive)
- 길이에 제한 없음
- 영문 대소문자, 한글, 숫자, _, $ 사용
- 첫 글자로 숫자를 사용할 수 없다
- 키워드, true, false, null은 식별자로 사용할 수 없다
2) 잘못 작성된 예
ex1. class: 키워드
ex2. 2022WorldCup: 첫 글자가 숫자
ex3. kim kim: 공백 불가
ex4. World-Cup: - 하이픈 사용 불가
ex5. kim@mail, my#car: @, # 등 사용불가
2. 식별자 관례
1) 변수와 메소드 이름
- 소문자로 작성
- 여러 단어로 구성된 경우, 두 번째 단어부터 단어의 첫 글자를 대문자로
eg. myCar, getArea()
- 자료형을 표시하기 위해 접두어를 붙이는 경우가 있음
eg. nSpeed, sMsg
2) 클래스 이름
- 이름의 첫글자를 대문자로 작성
eg. HelloWorld, String, Car
3) 상수의 이름
- 모든 문자를 대문자로 작성
- 두 단어 이상인 경우 단어 사이에 _ 기입
eg. PI_VALUE, NUM_GEARS
3. 키워드
: 의미가 미리 정해진 단어
- 프로그램에서 정해진 의미로만 사용
- 식별자로 사용 불가
eg. abstract, class, extends, boolean, case, else, if, private, static, etc.
4. 식별자/키워드
- 식별자(클래스 이름, 변수 이름, 메소드 이름 등)와 키워드의 구분
public class HelloApplication { // 클래스
static String szMsg = "Hello, Java!"; // 변수
public static void main(String args[]) { // 클래스
int iTest = 0;
System.out.println(szMsg); // 클래스
System.out.println(iTest); // 클래스
}
}
ex.
- System: 클래스
- System.out: 객체
- println: 메소드
자료형
1. 변수와 상수
1) 변수
- 값을 저장하기 위한 기억 공간
- 프로그램 수행 중에 값이 변경될 수 있음
- 변수를 선언할 때 자료형을 정함
- 변수를 선언하면 기억 공간이 할당됨
- 선언 후 변수를 사용할 수 있음
2) 상수
- 변수의 특별한 경우
- 상수는 선언 후 한번만 값을 저장할 수 있음
2. 자료형
1) 자료형의 의미
- 변수에 저장되는 값의 유형
- 메소드가 반환하는 값의 유형
- 자료형에 따라 적용되는 연산이 다름
2) 기본 자료형
- 기본형 변수는 저장 공간에 값 자체를 저장함
ex. int i = 10;
10 |
3) 참조 자료형
- 참조형 변수는 저장 공간에 참조값을 저장함
- 참조값: 다른 공간의 주소값
- 값은 별도의 공간을 할당받아 저장됨
age | name |
28 | Kim O |
3. 기본형과 참조형
구분 | 종류 | 키워드 | 크기 (byte) |
값의 표현 범위 | 예 |
기본형 | 논리형 | boolean | 1 | true 또는 false | true, false |
문자형 | char | 2 | '\u0000'~'\uFFFF' | 'a', '가', '\uAC00' | |
정수형 | byte | 1 | -128~127 | 1, 10, -34 | |
short | 2 | -32768~32767 | 100, -32000 | ||
int | 4 | -2^31~(2^31-1) | 123456, -65536 | ||
long | 8 | -2^63~(2^63-1) | 10L, 9465465L | ||
실수형 | float | 4 | (+/1)약1.4E-45~3.4E38 | -3.12f, 0.0f | |
double | 8 | (+/1)약4.9E-324~1.8E308 | 10.3, 403d, 2e3, 2.0e+3d | ||
참조형 | 배열 | int[], float[], etc. | |||
클래스 | String, Date, Vector, etc. | ||||
인터페이스 | Runnable, Enumeration, etc. |
4. 숫자 리터럴
- 소스 코드에서 사용되는 실제 데이터 값
1) 정수 리터럴
- l이나 L로 끝나는 리터럴은 long형, 나머지는 int형
- 0으로 시작하면 8진수, 0x로 시작하면 16진수, 0b로 시작하면 2진수
- 숫자 리터럴에서 가독성을 위해 _를 사용할 수 있음
ex. 26, 055, 0x1a, 0b11010, 5L, 0xCAFE_BANANA
2) 실수 리터럴
- 소수점이 있는 숫자
- F나 f로 끝나면 float형, 나머지는 double형
ex. 12.34, 12.34d, 1.234e2, 12.34F
5. 문자 리터럴
1) char형
- 1개의 문자를 표현하는 자료형
- UNICODE를 사용해 인코딩
- char형은 부호 없는 정수로 취급될 수 있음
- 0~65535 사이의 숫자로 산술 연산 가능
ex. char c1=65; // c1='A'와 같음
ex. char c2=54620; // c2='\uD55C'로 '한'을 대입
2) 문자 리터럴
- 단일 따옴표로 표시하고 유니코드 사용 가능
ex. '가', '\uAC00', 'C ', '\u0043', 'd', '\144'
\b | 백스페이스 |
\t | 탭 |
\n | 라인피드 |
\f | 폼피드 |
\r | 캐리지리턴 |
\" | 이중 따옴표 |
\' | 단일 따옴표 |
\\ | 역슬래시 |
'AI > JAVA 프로그래밍 기초' 카테고리의 다른 글
JAVA 프로그래밍 기초 04 연산자, 수식, 문장 (0) | 2025.10.11 |
---|---|
JAVA 프로그래밍 기초 03 Java 기본 문법(2) (0) | 2025.10.11 |
JAVA 프로그래밍 기초 01 Java 개요 (0) | 2025.10.11 |
JAVA 프로그래밍 기초 00 자바 Oracle Java SE + JDK 설치 및 환경설정 (0) | 2025.10.11 |