Java

[Java] 02. Java 프로그래밍 언어 개요

Joo.v7 2024. 8. 22. 00:55

Chapter 1: Java 프로그램 구조

  • Hello, World
  • Class
  • main 메소드
  • import 지시문과 java.lang 패키지
  • Demo: Java 프로그램 컴파일 및 실행

Chapter 2: 기초적인 입/출력 동작

  • System 클래스
  • 표준 출력
  • Scanner 클래스

Chapter 3: 권장 사항

  • 주석
  • javadoc
  • 예외 처리
  • Demo: JavaDoc을 사용한 HTML 문서 생성

Chapter 4: 컴파일, 실행, 디버깅

  • 컴파일러 호출
  • Java 프로그램 실행
  • 디버깅
  • JDK 도구

Lab 2-1: 간단한 Java 프로그램 작성

Lab 2-3: 예외처리


Chapter 1: Java 프로그램 구조

Hello, World

public class Hello
{
	public static void main(String[] args)
	{
		System.out.println(“Hello, World!”);
	}
}

 

실행결과

Hello, World!

 

 

Class

  • Java 프로그램은 클래스, 인터페이스, 열거형 및 기타 형식의 집합.
  • Class는 데이터와 메소드들의 집합.
  • Java 프로그램은 여러 개의 파일로 구성 가능하다.
  • 하나의 class는 여러 파일에 나뉘어 존재할 수 없다.
  • 하나의 파일에는 여러 클래스가 존재할 수 있으나, public class는 하나만 존재해야 한다.
  • 파일의 이름과 public class의 이름은 동일해야 한다. ex) 위 코드의 파일 이름은 Hello.java

 

main 메소드

  • Application Entry Point: 응용 프로그램이 시작되는 곳.
  • "public static void main(String[] args)" 와 같이 선언.
  • 여러 개의 클래스가 main 메소드를 가질 수 있다.
  • main 메소드가 종료 or return 하면 프로그램 종료.

 

import 지시문과 java.lang 패키지

  • import: 다른 패키지 안의 클래스를 사용할 때 사용하는 명령어로 Java는 Class 단위로 import한다.
    ex) import java.util; (X) -> import java.util.Scanner; (O)
  • java.lang: 통상적으로 많이 사용되는 유틸리티 클래스들을 포함하는 패키지로 import문 없이 사용 가능하다.
  • java.lang 패키지에 속하는 System 클래스를 이용하면 OS의 일부 기능들을 이용할 수 있다. (입/출력, 응용 프로그램 종료, 메모리 정리, 현재 시간 읽기, 시스템 속성 읽기, 환경 변수 읽기 등)
java.lang.System.out.put.println(“Hello, World!”);

 

 

 

Demo: Java 프로그램 컴파일 및 실행

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

 

(1) 터미널 실행

(2) 원하는 위치에 "mkdir 폴더이름"

(3) " code . " 하면 visual studio code 가 실행된다.

(4) 위 코드 입력 후 터미널에서 아래 명령을 실행하여 HelloWorld.java 를 컴파일한다.

> javac HelloWorld.java

 

(5) 탐색기에서 HelloWorld.class 파일이 생성된 것을 확인한다.

파일 탐색기

 

(6) 터미널에서 아래 명령을 실행하여 Helloworld 프로그램을 실행한다.

> java HelloWorld

 


 

Chapter 2: 기초적인 입/출력 동작

System 클래스

  • System 클래스는 환경과 관련된 속성과 메소드를 가지고 있다.
  • Out과 in을 이용한 표준 입/출력, err를 이용한 에러 출력 기능을 포함
  • System.in: 표준 입력
  • System.out: 표준 출력 - 화면
  • System.err: 오류 - 화면

 

표준 출력

  • System.out의 메소드들로 화면에 정보를 표시.
    • System.out.print : 표준 화면 출력.
    • System.out.println : 표준 화면 출력에 줄 바꿈을 같이 표시.
    • System.out.printf : 출력에 포맷을 지정.
System.out.print("Hello, World!");
System.out.println(“Hello, World!”);
System.out.printf("%d 더하기 %d는 %d", 2, 3, 5); // 출력: 2 더하기 3은 5

 

  • 숫자 포맷 / 시간 포맷

(좌) 숫자 포맷, (우) 시간 포맷

 

아래 코드는 "YYYY-MM-DD 시간:분:초" 형식 값을 화면에 출력한다.

Date date = new Date();
System.out.printf("%tF %tT", date, date); // 출력: 2022-06-07 00:50:24

 

 

Scanner 클래스

  • 문자열을 포함한 기본적인 데이터 타입을 읽기 위한 유틸리티 클래스
  • 문자열을 읽기 위한 Scanner 클래스의 메소드
    • next() : 공백을 기준으로 한 단어를 읽음
    • nextLine() : 개행을 기준으로 한 줄을 읽음.
  • java.util 패키지에 포함되어 있다.
import java.util.Scanner;
…
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine(); // 한 줄의 텍스트를 읽음.
System.out.println(input);

 

 


 

Chapter 3: 권장사항

주석

// 단일 주석
System.out.println(“What is your name?”);
String name = scanner.nextLine();

/* 다중 줄 주석 */
int gCD(int i, int j) { … } // 최대 공약수를 반환한다.

 

 

javadoc

  • Java의 주석을 이용하여 작성된 Java 프로그램을 설명하는 HTML 문서를 생성한다.
  • /** 로 시작하고 */ 로 끝나는 여러 줄 주석을 표시하여 생성될 문서에 표시될 내용을 선언
  • @(어노테이션)을 사용하여 문서 항목 생성
/**
 * @author NHN Academy
 * @version 1.0 2022-03-01
 */
public class Hello {
    /**
     * @param args 프로그램이 실행될 때 주어지는 인자값이 포함된 배열입니다
     */
    public static void main(String args[]) {
        System.out.println("Hello, Worlds!");
    }
}

 

 

class-programming_with_java/Module 02 Java 프로그래밍 언어 개요/contents/14_javadoc.adoc at master · gikpreet/class-pr

Contribute to gikpreet/class-programming_with_java development by creating an account on GitHub.

github.com

 

  • 아래와 같은 방법으로 Javadoc을 사용하여 HTML 문서를 생성할 수 있다.
$ javadoc -d [출력 디렉토리] [대상 파일] // javadoc -d 20240820 hello.java

 

  • 실행 결과

(좌) 파일 탐색기, (우) HTML

 

 

예외처리

    • 예외: 개발자가 예측할 수 있는 오류
    • Syntax Error(문법 오류): 문법적으로 틀린 것.
    • Semantics Error(의미 오류): 개발자의 의도대로 작동되지 않는 것. ex) 오타
    • Java는 try-catch 구문을 사용하여 예외를 처리한다.

try 절 내에 있는 구문이 실행 과정에서 예외가 발생되면 실행은 catch 절로 전송된다.

public class Hello {
    public static void main(String[] args) {
        try {
            System.out.println(args[0]);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 


 

Chapter 4: 컴파일, 실행, 디버깅

컴파일러 호출

  • 일반적인 컴파일 옵션
  • 개발 환경에서 컴파일
  • 명령 줄에서의 컴파일 (아래는 터미널-zsh 에서 입력한 것)

javac: .class 파일 생성 / java: .class(바이트 코드) 실행

  • 오류 표시

 

Java 프로그램 실행

  • 명령 줄에서 실행 (위의 사진 참조)
  • 개발 환경에서 Java 프로그램 실행

 

디버깅

  • Breakpoints와 IDE가 제공하는 디버거 사용

 


 

Lab 2-1: 간단한 Java 프로그램 구현

import java.util.Scanner;

public class Greetings {
    public static void main(String[] args) {
        String myName;

        System.out.print("Enter your name: ");
        Scanner scanner = new Scanner(System.in);
        myName = scanner.nextLine();
        System.out.printf("Greetings %s", myName);

        scanner.close(); // scanner 열고 닫아줘야함
    }
}

 

실행 결과

Enter your name: Joo
Greetings Joo

 

Lab 2-3: 예외처리

import java.util.Scanner;

public class Divide {
    public static void main(String[] args) {
        try{
            Scanner scanner = new Scanner(System.in);

            System.out.println("Enter first Integer: ");
            String temp = scanner.nextLine();
            int i = Integer.parseInt(temp); 

            System.out.println("Enter second Integer: ");
            temp = scanner.nextLine();
            int j = Integer.parseInt(temp);

            scanner.close();

            int k = i/j;

            System.out.printf("%d / %d = %d", i, j, k);
        }
        catch(ArithmeticException e) {
            System.out.println("An Exception was thrown: " + e); // e는 java.lang.ArithmeticException: / by zero 이렇게 출력됨
        }
        catch(NumberFormatException e){
            System.out.println("Please enter a digit");
        }
        catch(Exception e) {  // 모든 오류를 한 번에 처리: Exception 하위에 ArithmeticException, NumberFormatException 등이 있어서 한 번에 다 잡음.
            System.out.println("Exception was occured");
        }
    }
}

// 예측한 오류 2가지: temp에 int로 변환 불가능한 값이 들어왔을 경우, j값으로 0이 들어온 경우(0으로 나눌 수 없음)
// 위처럼 세부적인 오류를 잡을 수 있지만 모든 예외를 하나로 잡으려면 "catch(Exception e)"" 사용

 


 

출처: https://github.com/gikpreet/class-programming_with_java/tree/master

 

GitHub - gikpreet/class-programming_with_java

Contribute to gikpreet/class-programming_with_java development by creating an account on GitHub.

github.com