변수와 리터럴
변수 : 값을 가질 수 있는 공간(메모리 영역)
타입(int) 변수(i) = 값=리터럴(1)
💡 변수 작명 규칙
- 하나 이상의 글자일 것
- 첫 번째 글자는 문자나 $, _이어야 하고, 두 번째 이후부터 숫자도 포함된다.
- 길이 제한이 없음.
- 키워드, 상수값(true, false, null)은 사용이 불가
package day02;
public class Val Test {
public static void main(String[] args){
int abc =1;
int $abc=1;
int @abc =1; // 특수문자는 $,_만 가능
int class=1; // 키워드라 안됨
int 1test =1; // 맨 처음 글자는 숫자가 불가능
}
📑 예제 : 정수 1~100 출력
package day02;
public class IntTest {
public static void main(String[] args) {
int i=1;
while(i<=100) { //i++<100 가능
System.out.println(i);
i = i + 1; // i++ 가능
}
}
}
논리형 타입과 논리 연산자
💡 논리형 타입
- 기본형 타입
논리형 boolean 정수형 byte, short, int, long 실수형 float, double 문자형 char
- 논리형 타입의 사용
- 조건의 결과가 반영(true, false)될 때 사용한다.
- true, false의 표현은 1 bit로 충분하나 컴퓨터 자료 표현의 최소 단위인 1byte(8bit)로 표현한다.
- 논리형 타입의 사용
- 레퍼런스 타입
- 기본형을 제외한 모든 타입
- 기본형을 제외한 모든 타입
💡 논리 연산자
- and(&&)와 or(||)
- &와 |가 사용되는 경우
boolean boo = false;
byte b=123;
int i = 10;
boo = b >200 && i++>5 ; //&&는 2개 만족, ||는 1개 만족
- 논리 연산자 XOR(^)
a>10 ^ a<20
- 부정 연산자 not !
- 논리형 값을 부정(true ↔ false)
정수와 실수, 산술 연산자
💡 정수와 실수
- 정수형 타입
정수형 타입 | 크기(byte) | 값의 범위 |
byte | 1 | -2⁶ ~ 2⁶ -1 |
short | 2 | -2¹⁵ ~ (2¹⁵ -1) |
int | 4 | -2³¹ ~ (2³¹ -1) |
long | 8 | -2⁶³ ~ (2⁶³ -1) |
- 실수형 타입
실수형 타입 | 크기(byte) | 값의 범위 | 리터럴 타입 접미사 |
float | 4 | (3.4 X 10⁻³⁸) ~(3.4 X 10³⁸) | F or f |
double | 8 | (1.7 X 10⁻³⁰⁸) ~ ( 1.7 X 10³⁰⁸) | D or d (생략 가능) |
💡 산술 연산자
- 증가 연산자(++)와 감소 연산자(--)
package day02;
public class NumberTest {
public static void main(String[] args) {
int a = 10;
/* a++; // 증가 연산자 a=a+1;
++a; // 문장 하나로 끝날 때는 위와 큰 상관 없음.
*/
System.out.println(a++); //10
System.out.println(a); //11
}
}
- 산술 대입 연산자(+=, -=, *=, /=, %=)
package day02;
public class NumberTest2 {
public static void main(String[] args) {
int b = 5;
b+=5; // b= b+5
}
}
- 정수와 실수의 최댓값
package day02;
public class NumberExam01 {
public static void main(String[] args) {
int maxInt = Integer.MAX_VALUE;
int minInt = Integer.MIN_VALUE;
double maxDouble = Double.MAX_VALUE;
double minDouble = Double.MIN_VALUE;
System.out.println(maxInt);
System.out.println(minInt);
System.out.println(maxDouble);
System.out.println(minDouble);
}
}
💡 오버플로우
결과가 최댓값을 넘거나, 최솟값보다 작을 경우 음수↔양수가 바뀌는 현상.
타입의 변환
💡 묵시적 형변환과 명시적 형변환
- 묵시적 형변환
- 작은 타입에서 큰 타입으로는 묵시적 형변환
- 즉, byte→short→int→long→float→double 순으로 '묵시적 형변환'이 가능함.
- 명시적 형변환
- 큰 타입에서 작은 타입으로의 변환은 명시적 형변환 (사람이 직접 지정)
- 이때 실수 ↔ 정수는 불가하고, boolean ↔ 정수도 불가하다. 하지만 정수 ↔문자는 가능하다.
- 이는 문자(chart) 타입이 2byte의 유니코드 값을 가지기 때문이다. (0~65535까지 저장가능한 정수 타입)
package day02;
public class PrintiveCastExam1 {
int i = 10;
long l = i;//형변환 = 작>큰은 묵시적 형변환
i=(int)l; //큰 > 작은 은 명시적 형변환 필요
byte h = 10;
i=i;
b=(byte)i;
flot f = 10f;
l = f ; //오류발생 : 이유는 실수를 저장하는 f와 정수형 long이기 때문에.
boolean boo = true;
// l= (long)boo는 불가하다. 데이터 타입이 다름
char c = 'a';
i=c;
System.out.println(i++);
System.out.println((char)i); // char이 유니코드(정수형)이기 때문에 가능함.
}
삼항 연산자
💡 삼항 연산자
조건 ? 식1 : 식2 ;
public class BitOp {
public static void main(String[] args) {
int x = 5;
int y = 3;
int max = (x > y) ? x : y;
System.out.println(max);
int min = (x < y) ? x : y;
System.out.println(min);
boolean b = (x == y) ? true : false;
System.out.println(b);
String s = (x != y) ? "달라요" : "같아요";
System.out.println(s);
}
}
조건문 if / case/ switch
💡 조건문 if
public class IfExam3 {
public static void main(String[] args){
int score = 70;
if (score >= 90) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B");
} else {
System.out.println("C");
}
}
}
💡 조건문 switch
switch(변수) {
case 값 1:
변수 ==1일 때 실행된다.
break;
case 값 2:
변수 ==2일 때 실행된다.
break;
...
default:
변수가 어떤 case에도 해당되지 않을 경우 실행된다.
}
public class SwitchExam {
public static void main(String[] args) {
String str = "초콜릿"; // JDK 7 이상에서만 switch에서 String 타입을 사용 가능
switch (str){
case "초콜릿" :
System.out.println("통과");
break;
case "사탕" :
System.out.println("반환");
break;
default :
System.out.println("폐기");
break;
}
반복문 while/ do while / for
💡 반복문 while
- 기본
while (탈출 조건식) {
탈출 조건식이 참일 경우 실행되는 코드;
변수 증감식;
}
package day02;
public class WhileExam {
public static void main(String[] args) {
int count = 0;
while (count < 10) { // count ++시 1이 생략됨
System.out.println(count++);
// count++;
}
}
}
- break
- while+ break 사용 시 더 이상 반복하지 않는다.
public class WhileExam2 {
public static void main(String[] args){
int i = 1;
while(true) {
if(i == 11) break;
System.out.println(i);
i++;
}
}
}
- 후위 증감식
- 변수 뒤에 후위 증가식 붙을 경우 변수 사용된 이후에 값이 증가함
public class WhileExam3 {
public static void main(String[] args){
int i = 0;
while(i++ < 10) {
System.out.println(i);
}
}
}
- continue
- continue 이하 문장을 실행하지 않고 반복한다.
public class WhileExam4 {
public static void main(String[] args){
int i = 0;
while(i++ < 10) {
System.out.println(i);
}
}
}
💡 반복문 do while
do/while 문은 무조건 한 번은 실행되며, 탈출 조건식이 false일 경우 종료된다.
변수의 초기화
do {
탈출 조건식이 참일 경우 실행되는 코드;
변수 증감식;
} while (탈출 조건식);
public class DoWhileExam1 {
public static void main(String[] args) {
int i =1;
do {
System.out.print(i);
i++;
} while (i <= 10);
}
}
💡 반복문 for
for (변수의 초기화; 탈출 조건식; 증감식) {
탈출 조건식이 참인 경우 실행되는 부분
1 → 2 → 3 → 4 순으로 진행된다.
// ForExam 1 (*를 10개)
for (int i=0; i<10; i++) {
System.out.println("*");
}
// ForExam 2 (1~10까지)
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
📚 추가 공부 필요한 부분
- 자료 구조
- 정수와 실수는 메모리에 어떻게 저장되는가? (메모리에 저장되는 형태)
- Java에서 강제 형변환 시의 주의점 : 오버 플로우
- JDK 14, 17에서 추가된 switch 문법
- arguments 값 설정(이론 보충)
'🏕 멋사 Java 백엔드 13기 > TIL' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 6일차 (2) | 2024.12.09 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 4일차 (0) | 2024.12.05 |
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 3일차 (1) | 2024.12.04 |
[Java] 패키지, 접근 제한자, 클래스, 메소드 (3) | 2024.12.03 |
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 1일차 (3) | 2024.12.02 |