언어/JAVA

[JAVA] ch02. 자바 기본 프로그래밍

rngPwns 2025. 1. 1. 22:35

*public은 다른 클래스에서 Hello 클래스를 자유롭게 참조할 수 있다는 선언

  • main() 메소드
    • 반드시 public static void로 선언되어야 함.
    • 한 클래스는 2개 이상의 main()을 가질 수 없음
    • 보통 실행을 시작할 클래스에만 main()을 가짐

2.3 자바의 데이터 타입

기본타입: 8개

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

레퍼런스 타입: 1개

  • 배열에 대한 레퍼런스, 클래스에 대한 레퍼런스, 인터페이스에 대한 레퍼런스
    • 레퍼런스: 포인터와 비슷한 개념. 주소값 

문자열

  • 기본타입 x, JDK에서 제공하는 String클래스 이용. 

변수와 선언

  • 변수: 데이터 저장하는 공간. 변수를 선언하면 변수의 타입 크기에 맞는 메모리공간 할당
    • 선언 시 초기값 지정 가능

리터럴

  • 프로그램에 직접 표현한 값
    • 정수리터럴: 10진수, 8진수, 16진수, 2진수 (int)
    • 실수리터럴: 소수점형태나 지수형태로 실수 표현한 값(double, 숫자 뒤에 f나 F 붙이면 float 타입으로, d나 D를 붙이면 double 타입으로 강제변환 가능 
    • 문자리터럴: 단일 인용부호(' ')로 문자를 표현하거나 \u 다음에 문자의 유니코드
    • 논리타입리터럴, boolean 타입

  • 기본타입 이외의 리터럴: null 리터럴(기본타입에 사용될 수 없고 객체 레퍼런스에 대입), 문자열(String) 리터럴-" " 즉 이중 인용부호로 묶어서 표현

var 키워드로 타입 생략하고 변수 선언

  • Java 10부터는 var 키워드를 사용하여 변수타입을 생략하고 간단히 변수를 선언할 수 있다. 컴파일러가 var키워드로 선언된 문장을 추론하여 변수타입을 자동으로 결정한다. 
    • ex. var price=200; var name="kitae";
      • 변수 선언문에 초깃값이 주어지지 않으면 오류 발생, var 키워드는 지역변수에만 한정

상수

  • 리터럴을 상수로 선언하면 변수처럼 표현가능
  • final 키워드를 사용하여 선언 but static키워드를 붙여 선언하는게 더 바람직

타입변환

  • 변수나 상수, 리터럴을 다른 타입으로 변환하는 것
    • 자동타입변환: 치환문(=)이나 수식 내에서 타입이 일치하지 않을 때 컴파일러는 작은 타입을 큰 타입으로 자동변환. 
      • long m=25; // 리터럴 25는 int 타입으로서 long타입으로 자동변환
      • double d=3.14*10; //실수연산을 하기 위해 10 -> 10.0 자동변환
    • 강제타입변환(casting)
      • int n=300; byte b=n; //컴파일 오류, int 타입은 byte 타입으로 자동변환 안 됨.
        • n(300)을 byte타입(0~255범위)로 자동 변환하게 되면 변수 b에 300이 저장되지 않고 44(300%256=44)가 저장되어 손실발생. -> 큰 타입을 작은 타입으로 변환해야 할 때 자동변환 대신 컴파일오류 발생시킴. 손실이 발생한다는 사실을 알고도 변환하기를 원한다면 ()안에 타입 강제지정해야 함.
          • byte b=(byte)n;
        • double d=1.9; int n=(int)d; // 강제타입변환으로 n은 1이 됨. 실수->정수 강제변환으로 소수점 이하 손실 발생

 

2.4 자바의 키 입력

  • System.in: 키보드 장치와 직접 연결되는 표준 입력 스트림 객체. 키값-> 바이트정보로 바꾸어 제공하는 저수준(low-level) 스트림 객체
  • Scanner: 키보드에 입력된 키를 문자나 정수, 실수, 문자열 등 사용자가 원하는 타입으로 변환해주는 고수준(high-level)스트림클래스 
    • 객체생성: Scanner scanner=new Scanner(System.in);
    • Scanner 사용 위해서는 프로그램의 맨 앞줄에 import java.util.Scanner; 라는 import문이 필요. 
      • Scanner 클래스의 경로명이 java.util.Scanner임을 알려줌. 이 import문이 없으면 자바 컴파일러가 Scanner 클래스 코드가 어딨는지 모름
      • 응용프로그램에서 Scanner을 닫는 코드가 없으면 컴파일 시 경고 발생. but 실행에는 특별히 문제 x. 

Scanner사용 종료하려면 scanner.close();로 닫아줌. Scanner 닫는 코드가 없으면 컴파일 시에 경고(warning 발생 but 실행하는 데는 특별히 문제가 없음)

2.5 연산자

 

조건연산(삼항 연산자)

  • condition ? opr2 : opr3
    • int x=5, y=3; int big = (x>y)?x:y; //x가 y보다 크기 때문에 x값 5가 big에 대입된다.

 

 

2.6 조건문

단순 if문

 

if-else 문

switch 문

case문에 지정하는 값은 정수 리터럴, 문자 리터럴, 문자열 리터럴만 허용 **변수나 식을 사용할 수 없음**

 

'언어 > JAVA' 카테고리의 다른 글

ch05. 상속  (0) 2025.03.26
[JAVA] ch04. 클래스와 객체  (0) 2025.01.06
[JAVA] ch03. 반복문과 배열 그리고 예외 처리  (0) 2025.01.03
[JAVA] ch01. 자바 시작  (1) 2024.12.28