자바 프로그램 기초 - accidentlywoo/java GitHub Wiki

자바 프로그램 기초


자바 주석문

  • 프로그램 작성 일자나 버전, 작성자, 작성 목적, 그 밖의 프로그램 내의 부분적인 요소들에 대한 설명이 필요할 때 사용
  • 주석문은 컴파일 시 프로그램 코드로 인식되지 않음 -> 컴파일 결과로 얻어낸'.class'파일의 크기에는 영향이 없음
  1. // : 단일행
  2. /* */ : 다중행
  3. /** */ : javadoc형태의 주석 처리

자바 애플리케이션 구조

  • 자바 애플리케이션은 바이트 코드로 번역된 후에 바로 실행할 수 있는 일반 프로그램
  • 클래스 내에 'java'라는 명령어로 프로그램을 실행할 때 자동으로 호출되어 프로그램을 시작하는 main() 메서드를 가지고 있어야 함.

식별자

클래스, 변수, 메서드에 주어지는 이름으로 각 요소의 식별을 가능하게 함

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

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

예약어

시스템에서 일정 특성을 가진 언어로 등록된 것으로 데이터 타입이나 프로그램 정의를 위해 사용됨. 자바의 모든 예약어는 소문자로 이루어짐

abstract, assert, boolean, break, byte, cast, catch, char, class, const(x), continue, default, do, double, else, extends, false, final, finally, float, for, goto(x), if, implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, throw, throws, transient, true, try, void, volatile

-> const,goto는 현재 사용되고 있지 않으며, 식별자로도 사용할 수 없음 -> C/C++의 sizeof예약어는 자바에서 더 이상 사용되지 않음.

데이터 타입

데이터 타입:데이터의 성격을 규정 <- 변수

기본 데이터 타입을 종류

  • 논리값 : boolean : 참이나 거짓을 나타내는 값 1bit : true/false라는 두 리터럴값이 있음 int 형과 boolean형은 서로 형변환 불가능.
  • 단일 문자 : char : 16bit의 유니코드(다른 언어는 8bit 영어문자만 가능.) 문자 데이터 2byte '\u0000'~'\uffff'
  • 정수 : byte : 부호가 있는 8bit의 정수 -2^72^7-1 : short : 부호가 있는 16bit의 정수 -2^152^15-1 : int : 기본 : 부호가 있는 32bit의 정수 -2^312^31-1 : long : 부호가 있는 64it의 정수 -2^632^63-1 맨앞값이 0이면 양수 1이면 음수
  • 실수 : float : 부호가 있는 32bit의 부동소수점 실수 : double : 기본 : 부호가 있는 64bit의 부동소수점 실수 실수형 포맷은 표준인 IEEE 754를 채택하여 자바를 플랫폼 독립적인 언어로 만듦

데이터 타입의 범위 초과 시 발생하는 오류

  • 변수 초기화 시 데이터 타입의 범위를 초과하는 값을 저장하면 컴파일 시에 오류 발생
  • +, -등의 연산결과로 값의 범위를 초과하는 경우에도 오류 발생

변수 및 변수 선언

변수

실제 데이터를 의미하는 변수를 통해 메모리상의 데이터에 접근 가능함.

  • 한 가지 유형의 데이터만을 저장할 수 있고, 각 변수가 저장할 수 있는 데이터 유형이 정해져 있음
  • 기본형(Primitive Type)과 참조형(Reference Type)두 가지 변수가 존재함.

변수 선언

자바 가상 머신(JVM)에게 데이터를 저장하기 위한 메모리 할당을 요청하는 것 -> 데이터가 필요로 하는 크기의 메모리 할당을 위해 데이터 타입을 명시해야 함.

변수 선언 int var; : 선언된 변수에 값을 대입 변수 초기화 var = 25 : 변수에 처음 값이 할당되는 과정

-> 한번에 표현 int age = 25;

자바에서는 변수에 값을 할당하지 않은 경우 자동으로 초기화된다. 변수의 값이 자동으로 초기화되는 것은 Default 초기화라고 하며, 각 데이터 유형별로 할당되는 기본값(Default Value)이 존재합니다. 앞으로 학습하게 될 메서드(함수) 안에서 선언된 변수인 지역변수는 자동으로 초기화되지 않는다는 점도 알아두시길 바랍니다.

  • byte : 0
  • short : 0
  • int : 0
  • long : 0L
  • float : 0.0F
  • double : 0.0D
  • char : '\u0000' (null)
  • boolean : false
  • 참조형 : null

지역(Local)변수와 전역(Global)변수

전역(Global)변수

  • 클래스 선언부 밑에 선언된 변수 -> 여러 메서드에서 공통으로 사용가능

지역(Local)변수

  • 메서드 선언부 밑에 선언되 변수
  • 메서드 메개변수로 선언된 변수 -> 해당 변수가 선언된 메서드 내에서만 사용 가능.

데이터 타입의 변환 = 형변환

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

작은 데이터타입 --> 큰 데이터타입 : Promotion : 묵시적 형변 -> 데이터 손실의 우려가 없어 자동 캐스팅

큰 데이터타입 --> 작은 데이터타입 : Demotion : 명시적 형변환 -> 데이터 손실의 우려로 명시적 캐스팅

묵시적 형변환 (Promotion)

형변환 연산자를 사용하지 않아도 자동으로 형변환이 이루어지는 경우(자동 형변환)

int age = 35;
double avgAge = age; // double avgAge = (double)age

-> 형변환 연잔자인 (double)생략

  • 묵시적 형변환의 규칙? byte --> short --> int --> long --> float --> double char --> int --> long --> float --> double

명시적(Demotion) 형변환

더 작은 범위를 나타내는 데이터 타입으로 변환되는 경우(축소 형변환) -> 데이터 타입이 축소되어 변환된 후에도 해당 값을 표현할 수 있어야 함.

객체지향 프로그램에서 가장 중요한 핵심 개념은 객체(Obejct)입니다. 객체는 변수와 메서드로 구성되며, 이 객체를 추상화하여 소스 형태로 표현한 것이 클래스입니다. 결국 자바 프로그램은 클래스를 정의하고 클래스로부터 객체를 생성하여 실행시키는 것입니다.

객체를 추상화 하여 만든 클래스는 당연히 객체에 포함된 변수와 메서드를 적절히 선언해야 하며, 해당 클래스를 실행하기 위해서는 main() 메서드를 반드시 포함하고 있어야 합니다. 이번 실습은 클래스의 구조와 클래스를 구성하는 요소들을 이해하고 각 요소들이 어떻게 선언되는지를 확인하는 실습입니다.