변수
- 프로그램 실행 중 값을 저장하기 위한 공간
- 메모리 공간의 활용을 위한 도구
- 변수 값은 프로그램 수행 중 변경될 수 있음
데이터 타입
- 기본 타입
종류 | 크기 | 타입 |
byte | 1바이트 | 정수 타입 |
short | 2바이트 | |
int | 4바이트 | |
long | 8바이트 | |
char | 2바이트, 유니코드 | 문자 타입 |
float | 4바이트 | 실수 타입 |
double | 8바이트 | |
Boolean | 1비트, true 또는 false | 논리 타입 |
- 참조 타입
- 클래스 타입
- 배열 타입
- 인터페이스 타입
상수
프로그램 실행 중 변경할 수 없는 데이터를 담은 변수
상수 이름은 변수와 구분하기 위해 모두 대문자로 표기
반드시 final 키워드로 지정하여 사용해야 함.
final double PI = 3.141592;
문자열
기본 타입이 아님
String 클래스로 문자열 표현
"" 기호로 값 표현
String s1 = "Hello";
String s2 = new String("World");
형 변환
- 자동 형 변환
자료형의 크기가 큰 방향으로 형 변환 일어남
자료형 크기에 상관 없이 실수 자료형 >> 정수 자료형
double n1 = 3; // int 타입 3이 double 타입으로 자동 변환
double n2 = 3.4 * 10; //실수 연산을 위해 정수 10이 실수 10.0으로 자동 변환
- 명시적 형 변환
자동 형 변환 규칙에 부합하진 않지만 형 변환이 필요한 상황에 사용자가 강제 형 변환 가능
byte n1 = (byte) 3.14;
//double 타입 3.14를 byte 타입으로 강제 형 변환했기에 데이터 손실이 일어남.
//출력 시 3.14가 아닌 3이 출력됨
기본 입출력
System.out
System.in
println(): () 내부의 내용을 출력 후 행을 바꿈
print(): () 내부 내용 출력 후 행 바꾸지 않음
printf(): 포맷을 지정하여 출력
int num1 = 10;
float num2 = 3.14;
System.out.printf("%d, %f", num1, num2);
//출력 결과: 10, 3.140000 (float 타입은 소수 6자리까지 출력)
System.in은 바이트를 다른 타입으로 변환해줘야 한다. 그리하여 고수준 클래스인 Scanner 클래스를 사용한다
Scanner 클래스
읽은 바이트를 문자, 정수, 실수 등 다양한 타입으로 변환하여 리턴
// Scanner 클래스의 경로 이름을 컴파일러에게 알림
import java.util.Scanner;
// System.in 객체와 연결된 Scanner 객체 생성
Scanner in = new Scanner(System.in);
// Scanner 클래스가 제공하는 메서드를 이용하여 입력 받음
int x = in.nextInt(); // 정수를 읽어 변수 x에 대입
Scanner는 입력되는 키 값을 공백으로 구분되는 토큰 단위로 읽음
공백문자: '\t', '\f', '\r', ' ', '\n'
주요 메서드 (자주 쓰는건 빨간 볼드체로 표시)
메서드 | 반환 타입 |
String next() | 문자열 |
byte nextByte() | byte |
short nextShort() | short |
int nextInt() | int |
long nextLong() | long |
float nextFloat() | float |
double nextDouble() | double |
String nextLine() | '\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지만 문자열로 리턴 |
Void close() | Scanner 사용 종료 |
연산자
산술 연산자
연산자 | 설명 |
+ | 두 피연산자의 값을 더한다. |
- | 왼쪽 피연산자에서 오른쪽 피연산자 값을 뺀다. |
* | 두 피연산자의 값을 곱한다. |
/ | 왼쪽 피연산자 값을 오른쪽 피연산자 값으로 나눈다. (몫) |
% | 왼쪽 피연산자 값을 오른쪽 피연산자 값으로 나눴을 때의 나머지를 반환한다. (나머지) |
비트연산자 &, | 과 같이 1개 사용
논리 연산자는 &&, || 과 같이 2개로 표현
시프트 연산자
연산자 | 설명 |
<< | a<<b일 때, a의 모든 비트를 왼쪽으로 b만큼 이동. 이동할 때마다 최하위 비트를 0으로 채움 곱셈효과 산술적 왼쪽 시프트(Arithmetic Left Shift, ALS) 2^b를 곱한 결과와 동일 |
>> | a>>b일 떄, a의 모든 비트를 오른쪽으로 b만큼 이동 이동할 때마다 최상위 비트(부호 비트)와 동일한 비트(양수:0, 음수:1)로 채움 나눗셈 효과 산술적 오른쪽 시프트(Arithmetic Right Shift, ARS) 2^b를 나눈 결과과 동일 |
>>> | a>>>b일 때, a의 모든 비트를 오른쪽으로 b만큼 이동 이동할 때마다 최상위 비트를 0으로 채움 산술적 효과가 없기 때문에 논리적 오른쪽 시프트(Logical Right Shift, LRS) |
조건식 ? 연산식1 : 연산식2
조건식의 결과가 true이면 연산식 1 반환, false이면 연산식2 반환
'프로그래밍 > Java' 카테고리의 다른 글
[Spring] 스프링 삽질일지 4일차 - 게시판 작성 기능 구현(2) (0) | 2021.05.03 |
---|---|
[Spring] 스프링 삽질일지 3일차 - 게시판 작성 기능 구현(1) (0) | 2021.05.02 |
[Spring] 스프링 삽질일지 2일차 - 한글 깨짐 문제 해결, mariaDB 설치, 스프링과 데이터베이스 연동 (0) | 2021.04.30 |
[Spring] 스프링 삽질일지 1일차 - STS3 설치 및 pivotal 4 서버 설정 (0) | 2021.04.29 |
[Java] 1. 자바 개요 (0) | 2021.04.19 |