Java:Basic

aiden·2023년 8월 17일

Java

목록 보기
2/30

Structure

아래 예시를 보고 자바의 기본 구조를 알아보자.

자바 프로그래밍 작성 시, 클래스를 생성한 후 클래스 내에 모든 요소를 작성해야 한다. 클래스 바깥에는 어떠한 코드도 올 수 없다.

main() 메서드부터 실행이 시작된다. main 메서드 선언 시 public static void 타입으로만 선언해야 한다. 또한 한 클래스에는 하나의 main 메서드만 올 수 있다. 모든 클래스에 main이 필요한 것은 아니다.

자바에서의 함수는 모두 클래스 안에 포함되므로 클래스 내의 요소인 메서드(method)라 부르는 것이 맞다.

메서드 내에서 선언된 변수를 지역변수라 한다. 지역 변수는 메서드 내에서만 사용되며 메서드 실행이 끝나면 소멸된다.

Identifier

자바는 다음의 식별자 규칙을 지닌다.

또한, 대소문자를 구별한다.

클래스 이름

클래스 이름은 대문자로 시작하며 이후는 camel case를 따른다.

Data Type

자바의 자료형은 다음과 같이 9가지이다.

기본 타입

  • boolean
  • char
  • byte
  • short
  • int
  • float
  • long
  • double

레퍼런스 타입

  • 레퍼런스 타입(배열, 클래스, 인터페이스에 대한)

기본 타입 변수의 크기는 다음과 같다.

String

자바 문자열은 기본 타입에 속하지 않으며 String 클래스를 이용한다.

String name = "Aiden";

👉🏻자바에서 문자열과 기본 타입의 + 연산 시, 기본 타입의 값이 문자열로 변환되어 문자열 연결 연산이 수행된다. (파이썬에서는 문자열과 숫자 연산 시 변환되지 않고 오류 발생)

변수 선언

변수 여러개 동시 선언, 변수 선언과 동시에 초기화 가능

리터럴

리터럴은 프로그램에 직접 표현된 값을 말한다. 정수, 실수, 문자, 논리, 문자열 모두 리터럴 표현 가능.

정수 리터럴

정수 리터럴은 다음과 같이 4가지 표현이 가능하다.

long 타입으로 지정하고 싶은 경우 숫자 뒤에 L 또는 l을 붙인다.

실수 리터럴

float 타입으로 지정하고 싶은 경우 숫자 뒤에 F나 f를 붙인다.

문자 리터럴

작은 따옴표로 감싸거나 \u + 유니코드로 표현한다.

특수문자 리터럴

자바에서 사용하는 이스케이프 시퀀스는 다음과 같다.

논리 리터럴

논리 리터럴은 true, false 두 가지 값으로 구성되며 변수에 저장 시 boolean 타입으로 선언한다.

👉그 외에도 객체 레퍼런스에 대입 가능한 null 리터럴, String 객체에 저장할 수 있는 문자열 리터럴이 있다.

상수

상수를 선언하는 방법은 변수 선언 시 final 키워드를 추가하면 된다. 클래스 내에 다음과 같이 선언한다.

final int NUM = 100
final double PI = 3.14

형 변환

자동 타입 변환

= 연산자를 사용한 대입문에서 타입 불일치 시, 컴파일러가 작은 타입을 큰 타입으로 자동 변환한다.

강제 타입 변환(casting)

변수 앞에 자료형을 명시해 타입 변환할 수 있다.

Print

화면 출력 시에는 System.out.println() 또는 System.out.print()를 사용한다.

System.out.println() //출력 후 개행
System.out.print() //출력 후 개행하지 않음

In

키보드로부터 값을 입력받을 때 표준 입력 스트림 객체인 System.in을 이용한다. System.in은 입력받은 키의 바이트 정보를 프로그램에 제공한다. Scanner 클래스를 이용하면 키를 사용자가 원하는 타입으로 변환할 수 있다.

다음과 같이 Scanner 객체를 생성한다.

import java.util.Scanner; //java.util 패키지의 Scanner 클래스를 import

Scanner scanner = new Scanner(System.in);

scanner 객체는 System.in 객체를 이용해 키보드로부터 입력받은 바이트 정보를 원하는 타입으로 변환하여 리턴한다. 다음과 같은 구조를 가진다.

Scanner 클래스는 키보드로 입력받은 값을 공백문자(' ', '\n', '\t') 기준으로 분리해 토큰 단위로 읽는다.

키 입력을 받을 때 다음의 메서드를 사용한다.

scanner 객체의 사용을 마친 경우 scanner.close()와 같이 닫아주면 된다. 이 때, System.in 객체도 함께 닫힌다.

다음 예시를 보자.

import java.util.Scanner;

public class Practice {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String firstName = scanner.next();
        String lastName = scanner.next();
        int year = scanner.nextInt();
        double javaVersion = scanner.nextDouble();

        System.out.println(firstName);
        System.out.println(lastName);
        System.out.println(year);
        System.out.println(javaVersion);
        
        scanner.close()
    }
}

Aiden Lee 2023 11.0
Aiden
Lee
2023
11.0

공백을 포함한 문자열을 입력 받으려면 Scanner 클래스의 nextLine()을 이용하면 된다. 또한 엔터키를 입력 받을 때에도 사용할 수 있다. next()의 경우 엔터를 입력해도 다른 값이 입력될 때까지 대기한다.

연산

자바 연산과 연산자의 종류는 다음과 같다.

연산의 순서에 따라 결과가 달라질 수 있기 때문에, 연산자의 우선순위를 알아두는 것이 필요하다.

증감 연산자 -> 형 변환 -> 산술 연산자 -> 시프트 연산자 -> 관계 연산자 -> 논리 연산자 -> 조건 연산자(? :) -> 대입 연산자 순으로 우선 순위가 낮아진다.

산술 연산

증감 연산

대입 연산

비교 연산

비교 연산의 결과는 true 혹은 false의 논리값으로 반환된다.
❗자바에서 true, false는 숫자로 표현될 수 없음에 주의

논리 연산

논리 연산의 결과는 true 혹은 false의 논리값으로 반환된다.
❗논리 연산자의 피연산자로는 true, false의 논리 값만 가능하다. 산술값을 사용할 수 없다.

조건 연산

조건 연산자는 3개의 피연산자를 가지므로 삼항 연산자라고도 한다. 다음과 같은 구조를 갖는다.

condition ? opt1 : opt2

조건 연산식에서 condition이 true이면 opt1을 반환하고 false인 경우 opt2를 반환한다.

비트 연산

비트 논리 연산

비트 시프트 연산

>>를 이용해 1비트를 시프트 할 때마다 나누기 2, <<를 이용해 1비트를 시프트 할 때마다 곱하기 2의 결과가 나타난다.

조건문

조건문에는 if문, if-else문, switch문이 있다.

if문

if문의 구조는 다음과 같다.

if-else문

if-else문의 구조는 다음과 같다.

주어진 문장을 순차적으로 실행하되, if문이 참인 경우 나머지 else문은 실행되지 않는다.

다중 if-else문

주어진 문장을 순차적으로 실행하되, 참인 조건식을 만난 경우 나머지 else문은 실행되지 않는다.

중첩 if-else문

if-else문은 중첩하여 나타날 수 있다.

switch문

조건문이 많고 조건으로 정수값을 사용할 수 있는 경우, switch문을 사용하면 간결하고 깔끔한 코드를 작성할 수 있다.
다음과 같은 구조를 가진다.

switch문은 {}를 사용하지 않는다.
switch문에 들어가는 조건식은 정수, 문자, 문자열 리터럴이어야 하며 실수값은 불가하다.
조건에 해당하는 case가 없는 경우 default문으로 분기한다. 이 때 default문은 생략 가능하다.

switch문 조건에 맞는 case문으로 분기하며 해당 case문의 실행부를 실행한 후 break를 만나야 switch문을 빠져나온다. break를 작성하지 않으면 그 아래로 계속 실행된다.

이렇게 함으로써 다음과 같은 코드 작성이 가능해진다.


이전에 c나 파이썬에서 공부했던 유사한 개념의 경우 빠르게 넘어가도록 한다.

profile
파인애플 좋아하세요?

2개의 댓글

comment-user-thumbnail
2023년 8월 17일

정보에 감사드립니다.

1개의 답글