AI/JAVA 프로그래밍 기초

JAVA 프로그래밍 기초 02 Java 기본 문법(1)

Ayel 2025. 10. 11. 09:21

 

 

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 캐리지리턴
\" 이중 따옴표
\' 단일 따옴표
\\ 역슬래시