- 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 키워드는 지역변수에만 한정
- ex. var price=200; var name="kitae";
상수
- 리터럴을 상수로 선언하면 변수처럼 표현가능
- 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이 됨. 실수->정수 강제변환으로 소수점 이하 손실 발생
- n(300)을 byte타입(0~255범위)로 자동 변환하게 되면 변수 b에 300이 저장되지 않고 44(300%256=44)가 저장되어 손실발생. -> 큰 타입을 작은 타입으로 변환해야 할 때 자동변환 대신 컴파일오류 발생시킴. 손실이 발생한다는 사실을 알고도 변환하기를 원한다면 ()안에 타입 강제지정해야 함.
- int n=300; byte b=n; //컴파일 오류, int 타입은 byte 타입으로 자동변환 안 됨.
- 자동타입변환: 치환문(=)이나 수식 내에서 타입이 일치하지 않을 때 컴파일러는 작은 타입을 큰 타입으로 자동변환.
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.
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 문
'언어 > JAVA' 카테고리의 다른 글
ch05. 상속 (0) | 2025.03.26 |
---|---|
[JAVA] ch04. 클래스와 객체 (0) | 2025.01.06 |
[JAVA] ch03. 반복문과 배열 그리고 예외 처리 (0) | 2025.01.03 |
[JAVA] ch01. 자바 시작 (1) | 2024.12.28 |