a. Final을 사용해서 선언함
b. 상수의 변수명은 전부 대문자와 언더바(_)를 사용하고, 스네이크 표기법을 사용한다.
final int MAX_SIZE = 100;
final int CONST_ASSIGNED;
CONST_ASSIGNED = 12;
MAX_SIZE = 200; //error (상수는 값을 변경할 수 없다)
a. int num=10; 에서 num은 변수명, 10은 리터럴
a. 자료형의 크기가 큰 방향으로, 정수형보다는 실수형으로(소수점 보전) 데이터 타입을 맞춘다
a. int 이하(short, char, ...)에서 연산을 하면 default로 int로 변환된다. 변환되지 않게 하려면 강제 형변환
public static void main(String[] args){
short s1 = 10;
short s2 = 20;
short s3 = (short)(s1+s2); // short 형식으로 강제 형변환
int s4 = s1+s2; // 연산 시 int로 변환됨
}
b. 강제 형변환 예제: 문자의 아스키코드 출력하기
import java.util.Scanner;
public class HelloWorld{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String lett1 = scan.next();
char lett2 = lett1.charAt(0);
int result = (int)lett2;
System.out.println(result);
}
}
a. 우선순위가 높은 연산자를 우선으로
b. 우선순위가 같으면 결합방향에 따라서
c. 현업에서는 우선순위가 높은 경우 괄호를 쳐서 표현
String str1 = "백엔드스쿨"+2.0+"기";
System.out.println(str1); //백엔드스쿨2.0기
String str2 = "백엔드스쿨" + 21+9.0;
System.out.println(str2); //백엔드스쿨219
String str3 = 21+9.0+"백엔드스쿨" ;
System.out.println(str3); //30.0백엔드스쿨
public static void main(String[] args){
int x=1,y=1;
int num1=x++;
int num2=++y;
System.out.println("num1="+a+", num2="+b);
// num1=1, num2=2
}
a. num1=x++ (후위연산): x값이 num1로 할당된 이후에 연산을 함
→ 따라서 num1 값에는 변동이 없고, x값은 1 증가하여 2가 된다.
b. num2=++y (전위연산): 증가 연산을 먼저한 후 num2에 할당함
→ 바뀐 값(증가한 값)이 변수 num2에 할당됨
cf) 관련 내용 링크: https://dojang.io/mod/page/view.php?id=96
||(OR): 앞부분 조건이 true이면 그 다음은 체크하지 않음
&&(AND): 앞부분 조건이 true여도 그 다음 조건을 체크함
public static void main(String[] args) {
int x=10, y=20, z=30;
int max1 = (x>y)?x:y; //x와 y중에 큰 수를 max1으로
int max2 = (max1>z)?max1:z; // max1과 z 중 큰 수를 max2로
System.out.println(max2);
}
while(조건){
실행코드
}
- 조건에 따라 코드가 실행되지 않을 수도 있음
do{
실행코드
} while(조건)
- 무조건 한 번은 실행됨
for((1)int i=0; (2) i<5; (4) i++) {
(3)System.out.println(i);
}
(1) 변수 초기화(한 번만 실행) -> (2) 조건확인 -> (3) 실행 -> (4) 증감식 실행 -> (2) 조건확인 -> ...
public static void main(String[] args){
for (int i=2; i<10; i++){
for (int j=1; j<10; j++){
System.out.println(i+"*"+j+"="+i*j);
}
}
}
메모리 변화: 첫번째 for문 i=2 생성 -> 두번째 for문을 생성하면서 j 생성 -> j 값이 변화 -> 두번째 for문이 끝나면 j가 메모리에서 사라짐 -> i가 2로 바뀜 -> j값이 메모리에서 생성 -> ...
cf) println: 출력을 print한 후 다음 줄에서 실행/ print: 바로 옆에서 다음 내용 출력
a. Break: 반복문 중단
b. Continue: 이번 차례 건너뛰고 다음 차례 실행(python pass와 비슷)
a. 5개의 요소를 담을 수 있는 배열 생성하기
int[] score = new int[5];
b. 배열에 바로 요소 집어넣기: 배열은 중괄호로 선언함
int[] score = {65,74,68,40,12};
import java.util.Arrays;
public class Example{
public static void main(String[] args){
int[] arr1 = new int[10];
int max = 0;
for (int num=0; num<10; num++){
arr1[num] = (int) (Math.random()*100)+1;
}
for (int num: arr1){
if (max>num){
continue;
} else{
max=num;
}
}
System.out.println(max);
System.out.println(Arrays.toString(arr1));
}
}
for문이 돌아갈 때 배열 arr안의 요소를 순서대로 num에 넣는다
int[] arr = {12,40,68,74,65};
int sum = 0;
for (int num: arr){
sum+=num;
}
sum은 배열 arr의 원소 12,40,68,74,65의 합이다.