[Java] 3. 프로그램 기본 구조와 자료형

PYOUNANI·2022년 9월 23일
0

Java

목록 보기
2/14
post-thumbnail

3. 프로그램 기본 구조와 자료형

3-1. Java 기본 구조

자바는 한 개 이상의 클래스로 구성됩니다. 클래스는 한 개 이상의 메서드를 가지고 있습니다. 메서드는 함수와 비슷한 개념으로 프로그램 문장들로 구성됩니다. 이 메소드는 반드시 클래스를 정의한 안에 위치해야 합니다.

자바 응용 프로그램은 main() 메서드를 갖는 클래스로부터 시작됩니다. 이 main() 메서드는 프로그램을 실행 시 JVM에 의해 호출되는 첫 번째 메서드입니다.


3-1-1. 클래스(Class)

클래스란 자바 프로그램을 구성하고 있는 기본 단위입니다. 보통은 클래스 이름은 파일 이름(.java)과 일치해야합니다. 클래스의 이름은 대소문자를 구분하게 됩니다. 즉, HelloWorldApp과 helloWorldApp은 다른 이름으로 구별하게 됩니다. 단, 클래스의 첫 문자는 보통 대문자로 표현합니다. 보통은 소스 코드의 재사용을 위해 하나의 소스 파일에 하나의 클래스를 정의하게 됩니다

클래스는 멤버필드(변수/상수) + 메서드(함수)로 구성되어 있습니다.
자바 응용프로그램 실행 시 JVM에 의해 클래스의 main()메서드가 호출된니다.

//자바의 기본구조 예시
public class HelloWorldApp{

	public static void main(String[] args){
    	System.out.println("Hello World");
    }
}

3-1-2. 키워드와 식별자

키워드란 미리 정의되어 사용하는 단어이다. 이 키워드는 문법적으로 고유한 의미를 가지고 있습니다.

public class HelloWorldApp{

	public static void main(String[] args){
    	System.out.println("Hello World");
    }
}

이 예시에서 살펴보면 class, public, static, void같은 단어들이 키워드라고 볼 수 있습니다.
밑에 표와 같이 여러가지의 키워드들이 있음을 알 수 있습니다.

식별자란 프로그래머가 클래스, 변수, 상수, 메서드 등에 붙이게 되는 이름을 의미합니다.

public class HelloWorldApp{

	public static void main(String[] args){
    	System.out.println("Hello World");
    }
}

다시 이 예시를 보면 HelloWorldApp이 식별자라고 볼 수 있습니다.

식별자를 사용할 때 주의 해야 할 점들이 몇가지 있습니다.

  • 키워드는 식별자로 사용을 불가능합니다.
  • 식별자의 첫 번쨰 문자로 숫자는 사용 불가능합니다.
  • '@', '#', '!'와 같은 특수 문자, 공백 또는 탭은 식별자로 사용할 수 없으나
    '_', '$' 는 사용 가능합니다.
  • 알파벳은 대소문자를 구별합니다.
  • 길이에 제한은 없으나 지나치게 긴 길이는 바람직하지 않습니다.

추가로 식별자들을 정의할 때는 하나 이상의 단어가 합쳐질 때는 각 단어의 첫 문자들만 대문자로 표현해야 합니다.
클래스는 첫 문자는 보통 대문자로 표현을 해야 합니다.

class JavaTest{
	...
}

변수나 메서드의 첫 문자는 보통 소문자로 표현해야 합니다.

String myName;
public void showName(){
	...;
}

상수는 모든 문자를 대문자로 표현을 해야 합니다.

final int JAVA_TEST = 10;

3. 프로그램 기본 구조와 자료형

3-2. 자료형


3-2-1. 변수의 자료형

어떤 값을 저장할 수 있는 메모리 위치에 주어진 이름을 변수라고 합니다.

  • 지역변수
    함수 안에서 선언된 변수입니다.
    함수 내에서는 어디서든 선언이 가능하며 함수가 소멸할 시 같이 소멸되는 변수
  • 매개변수
    함수 정의부에서 선언된 변수이다.
  • 멤버변수
    클래스 정의 안에서 선언된 변수입니다.
    객체가 소멸할 때까지 유지하는 변수

자료형
자료형에는 두가지가 있는데, 기본 자료형과 참조 자료형이 있다.

  • 기본 자료형
    하나의 을 나타내는 데이터의 유형
  • 참조 자료형
    실제 값 혹은 값들의 집합에 대한 참조(위치)를 나타내는 데이터의 유형

    위의 그림처럼 n은 기본 자료형으로 1의 을 저장한다.
    반면 str은 "Hello"에 대한 참조값을 가지고 있다.

3-2-2. 기본 자료형

  • 정수형
    정수형(고정소수점수형)에는 byte, short, int, long가 존재하고 int형이 기본으로 사용이 됩니다.

  • 실수형
    실수형(부동소수점수형)에는 float, double가 존재하고 double형이 기본으로 사용이 됩니다.

  • 문자형
    문자형에는 char로 표현을 하고 16비트 유니코드로 한 문자를 표현합니다. 단, 문자열은 String 클래스를 이용해야 합니다.
    특수문자는 역스랠쉬()와 함께 하나의 문자를 결합하여 표현합니다.

  • 논리형
    참과 거짓의 논리값을 나타내기 위해 사용됩니다. 이때 참과 거짓을 부울 상수를 통해 나타내는데 true, false를 통해 나타납니다. 자바에서는 1과 0으로 논리값을 나타내지 않으므로 주의하셔야 합니다.

3-2-3. 참조 자료형

참조 자료형은 메모리상 배열의 주소나 객체가 저장이 된 주소를 갖고 있는 데이터형입니다. 배열형, 클래스형, 인터페이스형은 참조 자료형을 씁니다.

읽어보면 C언어의 포인터와 굉장히 비슷하다고 생각할 수 있다. 이에 대한 내용은 아래에 링크에 따로 저장해두겠습니다.

https://velog.io/@pyounani/Java-C언어-포인터-VS-Java-참조-자료형

3-2-4. 리터럴 상수

리터럴 상수란 값 자체를 사용하는 상수이다. 기본 자료형의 리터럴 상수를 우선 보자.

  • 정수형 상수
    0, 01564
  • 실수형 상수
    3.14545, 10.
  • 문자형 상수
    'A', '\n'
  • 논리형 상수에
    true, false

이제는 참조 자료형의 리터럴 상수에 대해 보자. null리터럴과 문자열 리터럴이 존재한다.

  • null리터럴
    유효한 참조값을 갖고 있지 않음을 의미하여 표시한다.
  • 문자열 리터럴
    이중 따옴표로 "Hello"와 같은 문자열을 저장하는데 자동으로 String 객체로 처리된다.

이런 상수를 반복해서 사용을 할 때 우리는 기호 상수를 이용해서 간편하게 상수를 이용해볼 수 있습니다.

//기호상수 예시
static final double PI = 3.14592;

상수라는 것을 나타내기 위해 final이라는 키워드를 사용했습니다. 그 뒤에 기호상수의 자료형과 함께 기호상수의 이름을 적습니다. 기호상수의 이름은 모두 대문자로 사용을 하는 것으로 합니다. 보통 기호 상수는 클래스 멤버 필드 영역에 선언이 되기 때문에 static을 같이 사용합니다.

3. 프로그램 기본 구조와 자료형

3-3. 자료형의 형변환

한 자료형을 다른 자료형으로 변환하는 것을 형변환이라고 한다.


3-3-1. 표현식

표현식이란 하나의 결과값을 가진 식을 의미한다. 보통은 피연산자과 연산자의 조합으로 구성되어 있다.
피연산자는 상수, 변수, 반환값등이 있고 연산자는 비교연산자, 논리연산자등이 있다.

3-3-2. 묵시적 형변환

표현식 안에 서로 다른 자료형인 수가 피연산자로 나타날 경우, 더 넓은 범위를 표현할 수 있는 자료형으로 자동적으로 형변환되는 것을 묵시적 형변환이라고 한다.

  • char형과 short형은 int형으로 변환
  • float형은 double형으로 변환
  • 대입문에서는 대입되는 변수(등호 왼쪽)의 변수형으로 변환

3-3-3. 명시적 형변환

프로그래머가 강제적으로 이미 지정된 자료형을 다른 자료형으로 바꾸고자 할 경우를 명시적 형변환이라고 합니다.

  • cast 연산자 사용
    (새로운자료형) 표현식 ex) (double) sum
    기존의 표현식 자체의 자료형이 바뀌지 않고, 결과값을 새 자료형으로 변환

3-3-4. 확대 형변환 / 축소 형변환

  • 확대 형변환
    target type이 source type 보다 더 넓어 값의 손실이 발생되지 않고 저장되어 컴파일러에 의해 오류없이 묵시적으로 변환되는 경우
  • 축소 형변환
    확대 형변환의 반대
    데이터의 훼손이 일어날 수 있으므로 명시적인 형변환 구문이 필요하다.

3. 프로그램 기본 구조와 자료형

3-4. 콘솔 입출력


3-4-1. 콘솔 출력

콘솔에 출력하기 위해서는 java.lang 패키지의 System 클래스 중 static 객체인 out의 멤버 메서드를 사용하여 콘솔에 출력합니다.

System.out.println(...);
System.out.println(...); = System.out.print("\n");

3-4-2. 주석

주석은 소스코드의 기능이나 동작을 설명하기 위해 사용됩니다. 주석은 실제 프로그램에 영향을 주지 않습니다. 한 줄을 주석 처리하기 위해서는 //를 여러 문장을 주석 처리하기 위해서는 /* */를 사용합니다.

3-4-3. 콘솔 입력

키보드를 통해 입력을 받습니다. System.in 객체에 의해 바이트 단위로 읽혀집니다. 바이트 단위로 읽기 때문에 속도가 느려 Scanner라는 객체를 이용해서 입력받습니다. Scanner 객체는 여러 데이터 유형들의 입력 값을 원하는 자료형으로 편하게 읽기 위한 메서드를 제공합니다.

Scanner s = new Scanner(System.in);

Scanner 클래스가 제공하는 메서드들을 사용하기 위해 아래의 코드를 작성해줘야 합니다.

import java.util.Scanner;

Scanner 클래스의 주요 메서드

위의 하나의 메서드를 이용해서 입력문을 완셩시켜보면 아래의 코드와 같습니다.

//입력 예시
Scanner s = new Scanner(System.in);

System.in.print("학번을 입력하세요 : ");
int num = s.nextInt();

0개의 댓글