2.1 자바 프로그램의 구조
``` public class Hello { } ```
public은 접근지정자로 다른 모든 클래스에서 클래스 Hello를 자유롭게 사용할 수 있다는 선언
main() 메소드
- public static void 타입으로 선언되어야 함
- 한 클래스에 2개 이상의 main() 안 됨
- 실행을 시작할 클래스에만 main() 두기
메소드
- 클래스의 멤버 함수를 가리킴
- 매소드 내에 선언되어 사용되는 변수 = 지역변수
화면 출력
- System.out.println() 출력 후 다음 행으로 이동
- System.out.print() 이동 안 함
public class Hi {
public static void main(String[] args) {
System.out.println("Hi");
}
}
2.2 식별자
: 이름을 말함
1. 특수문자 _와 $만 사용 가능
2. 한글 가능
3. 키워드, true, false, null 불가능
4. 첫 문자로 숫자 불가능
5. 대소문자 구별
6. 길이 제한 없음
2.3 자바의 데이터 타입 (9)
기본 타입 | boolean (논리타입, 1b, true or false) |
char (문자타입, 2B) | |
byte (정수타입, 1B, -128~127) | |
short (정수타입, 2B) | |
int (정수타입, 4B) | |
long (정수타입, 8B) | |
float (실수타입, 4B) | |
double (실수타입, 8B) | |
레퍼런스 타입 | 1. 배열에 대한 레퍼런스 2. class에 대핸 레퍼런스 3. interface에 대한 레퍼런스 |
문자 하나는 2B의 유니코드로 저장됨
문자열은 String 클래스 이용
리터럴
정수 리터럴 -> int 타입으로 자동 컴파일됨
15(십진수), 015(8진수, 13), 0x15(16진수, 21), 0b0101(2진수, 5)
long g = 24L; -> l이나 L붙여서 long 타입으로 컴파일
실수 리터럴 -> double 타입으로 자동
0.1234, 1234E-4
0.1234f(f/F로 float), .1234D(d/D로 double)
문자 리터럴 -> char
'w', \u0041
특수문자 리터럴
논리 리터럴
boolean a = true;
boolean b = false;
기타) null 리터럴(기본 타입이 아닌 객체 레퍼런스에만), 문자열 리터럴(형식: "문자", String 객체에 저장)
> 상수
final double PI = 3.141592;
타입 변환
자동 타입 변환 : 작은-> 큰 타입
long m = 25;
강제 타입 변환 : casting, 데이터 손실
byte b = (byte)300; // b=44
(300%256), byte타입은 0~255범위, byte에 저장될 수 있는 수는 -128~127
Q.
(char)0x12340041 ===> 0x0041 => 'A'
(byte)227 => 227(decimal) == 1110 0011(binary) -> 2의 보수에서 220 1101 -> -29
2.4 자바에서 키 입력
System.in
표준 입력 스트림 객체
입력된 키를 바이트 정보로 응용 프로그램에게 제공 -> 다시 변환해야 함
Scanner
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
scanner 객체는 System.in 객체를 이용해 키보드로부터 일련의 바이트 정보들을 입력받고, 이 바이트들을 원하는 타입으로 변환하여 리턴
Scanner 클래스는 공백문자(' ', '\t', '\n')을 기준으로 분리하여 토큰 단위로 읽는다
Scanner scanner = new Scanner(System.in);
String name = scanner.next();
String city = scanner.next();
int age = scanner.nextInt();
double weight = scanner.nextDouble();
boolean isSingle = scanner.nextBoolean();
scanner.close();
nextLine() 공백이 낀 문자열 입력받을 때, 빈 문자열(엔터 키 입력)도 리턴
next()는 공백 전까지, 빈 문자열 리턴 안 함
Scanner 객체는 하나만 생성하는 게 좋음 ∵ 하나뿐인 System.in을 공유해서
2.5 연산
산술
/ 는 몫, & 은 나머지
실수 나누기 10.0/4 == 2.5
증감
논리
a ^ b : XOR, a와 b가 다를 때 true
조건
조건 연산자는 3개의 피연산자로 구성, 삼항 연산자
condition ? opr2 : opr3
true면 왼쪽, false면 오른쪽
비트
비트 논리 연산
&, |, ^, ~
비트 시프트 연산
byte, short, int, long, char 타입만 가능, float, double, boolean X
Ex.
byte a = 5;
byte b = (byte) (a<<2);
0000 0101
0001 0100 // 20
Ex.
byte c = (byte) 0xf8; // 1111 1000 는 0000 1000의 음수= -8
byte d = (byte) (c>>2); // -2
1111 1000
1111 1110 // 0000 0010의 음수는 -2
산술적 오른쪽 시프트(>>)는 1bit 시프트마다 2로 나누는 결과
산술적 왼쪽 시프트(<<)는 1bit 시프트마다 2로 곱하는 결과, 음수(MSB가 -1)를 시프트하여 양수 발생(MSB 0) - 오버플로우 가능성
2.6 조건문
1. if 문
2. if-else
3. switch
'전공 > JAVA' 카테고리의 다른 글
[패스트캠퍼스] Spring 강의 - 학습 후기 및 과제 진행 (0) | 2023.12.31 |
---|