본문 바로가기

Etc../SWExpertAcademy

[Java Programming] 자바언어의 구조와 기본문법 (2)

자바 프로그램 구조 및 데이터 타입

■ 자바 프로그램 기초
  • 자바 프로그램은 하나의 .java 파일에 하나의 클래스를 정의함
  • 클래스 내부에 실행에 필요한 변수나 메서드등을 정의함

클래스 (Class) : 자바 프로그램의 최소 구성단위, 자바 코드는 클래스 블록( {} )안에 작성된다.

public class FirstClass{
    // 실행할 내용
}

public : 자바 예약어로써, FirstClass.java 파일의 클래스를 외부에 공개함

     예약어 : 시스템에서 일정 특성을 가진 언어로 등록된 것, 데이터 타입이나 프로그램 정의를 위해 사용됨
               ex) int, float, if, for, while, super ⋯

주석문 : 작성 일자, 버전, 작성자, 작성목적 등 프로그램 내에 부분적인 요소들에 대한 설명이 필요할 때 사용
파일의 크기는 늘어나지만 컴파일 시 프로그램 코드로 인식되지 않는다.
.class 파일의 크기에는 영향이 없다.

  • // : 단일행 주석 처리
  • /* */ : 다중행 주석 처리
  • /** */ : Javadoc 형태의 주석처리 ( 자바 프로그램의 저작권 등의 형태를 나타내는 데에 사용)

클래스 블록( {} ) : 블록의 시작과 끝이 짝을 이루지 않으면 컴파일 오류 발생
클래스, 메서드, 자바 구문(if, for, try ~ catch)에 사용.

세미콜론( ; ) : 자바 문장이 여러 라인 또는 한 라인으로 이루어질 때 각 문장을 구분

public class JavaApp{
    // 변수 선언

    // 메서드 선언

    public static void main(String args[]){
        //실행될 프로그램 코드
        System.out.println("FirstApp 애플리케이션입니다.");
    }
}

main(String args[]) : 프로그램을 시작하여 특정 작업 수행

도스를 통해서 > javac FirstApp.java를 실행하면 .class파일이 생성된다.

식별자 생성 규칙
  1. 첫 문자는 A-Z, a-z, _, $, 유니코드(Unicode)로 시작해야 함
  2. 특수문자 사용 불가 ex) !, @, #, %, &, * 등
  3. 대소문자를 구별하고, 길이에 제한이 없음
  4. 예약어를 포함할 수 있으나, 예약어만 사용 할 수 없음
  5. 첫 문자에는 숫자 사용 불가

∴ 관례상 클래스 이름은 대문자로, 메서드 이름은 소문자, 변수는 소문자, 상수는 대문자로 시작


■ 자바 데이터 타입과 변수

프로그램 언어에서는 사용할 데이터를 변수에 저장하고 관리함.

정의된 변수를 통해 데이터의 의미를 정확하게 해석하여 사용

데이터 타입 : 데이터의 성격을 규정

  • 논릿값 : boolean
    • true/false
  • 단일 문자 : char
    • 홑따옴표( ' ' ) 안에 넣어서 사용
    • 유니코드 표현 시 \u라고 명시하고 4개의 16진수 값을 표기한 문자 사용
  • 정수 : byte, short, int, long
  • 실수 : float, double

데이터 타입 범위에 초과하는 값을 저장하면 컴파일 시 오류 발생

+, - 등의 연산 결과로 값의 범위를 초과하는 경우에도 오류 발생

변수 : 프로그래머가 메모리상 데이터에 접근하기 위한 방법
한가지 유형의 데이터만을 저장할 수 있고, 각 변수가 저장할 수 있는 데이터 유형이 정해져 있음
기본형(Primitive Type)과 참조형(Reference Type) 두 가지 변수가 존재함

변수 선언시 데이터 타입과 변수명 사이 하나 이상의 공백이 필요

int val; // 변수 선언, 선언된 변수에 값을 대입하는 것을 변수 할당이라 함
val = 25; // 변수 초기화, 처음 값을 할당하는 것을 변수 초기화라 함

기본형의 경우 할당된 메모리에 직접 값이 들어감.

자바에서는 변수에 값을 할당하지 않은 경우 자동으로 초기화됨 (defalut 초기화) .

단, 지역변수는 자동으로 초기화되지 않음

전역(Global) 변수 : 클래스 선언부 밑에 선언된 변수
여러 메서드에서 공통으로 사용 가능

지역(Local) 변수 : 메서드 선언부 밑에 or 메서드 매개변수로 선언된 변수

               해당 변수가 선언된 메서드 내에서만 사용 가능
               변수는 자신이 속한 블록을 벗어나면 사용 불가.
데이터 타입의 변환 = 형변환

변수의 타입을 다른 타입으로 변경하고자 할 때 형변환 연산자를 사용하여 변환 함

Promotion(묵시적 형변환) : 작은 데이터 타입을 큰 데이터 타입으로 변환

                       -> 데이터 손실의 우려가 없어 자동 캐스팅
                       int형의 데이터를 double형 변수에 할당하면 자동으로 전환되어 할당됨

Demotion(명시적 형변환) : 큰 데이터 타입을 작은 데이터 타입으로 변환

                       -> 데이터 손실의 우려로 명시적 캐스팅
                       double형의 데이터를 int형 변수에 할당하기 위해선 (int)라는 형변환 연산자를 사용하여 할당해야 함
package practice;

public class Main {
    public static void main(String args[]) {
        double A = 75;
        System.out.println("int -> double : " + A); // Promotion
        int B = (int)75.072;
        System.out.println("double -> int: "+ B); // Demotion
        int C = 'A';
        System.out.println("char -> int : " + C); // Promotion
        char D = (char)65;
        System.out.println("int -> char : " + D); // Demotion
    }
}

실행 결과

int -> double : 75.0
double -> int: 75
char -> int : 65
int -> char : A

띄어쓰기 열심히 해서 가독성 좋게 해놓고 게시하면 다 증발하고 가독성 개똥망된다.

마크다운 망해라

기초적인 내용이라 전반적으로 쉽게쉽게 배우는 중이지만

방심했다가 뒤통수 맞기 딱 좋을 것 같다.

 

망할

[참고] : SWExpertAcademy