if (조건식) {
조건식이 참일때 실행되는 문장;
}
if (조건식) {
조건식이 참일때 실행되는 문장;
} else {
조건식이 거짓일때 실행되는 문장;
}
if (조건식1) {
조건식1이 참일때 실행되는 문장;
} else if (조건식2) {
조건식1이 거짓이고 조건식 2가 참 일때 실행되는 문장;
} else {
조건식이 거짓일때 실행되는 문장(위의 어느 조건도 참이 아닐때);
}
if (조건식1) {
조건식1이 참일때 실행되는 문장;
if (조건식 2) {
조건식1과 조건식2가 모두 참일때 실행되는 문장;
} else {
조건식1이 참이고 조건식2가 거짓일때 실행되는 문장;
}
} else {
조건식 1이 거짓일때 실행되는 문장;
}
여러 문장을 하나로 묶어주는 것.
if에서 실행할 문장이 하나라면 if (조건식) 명령문;
이렇게 {}가 생략가능.
switch (조건식) {
case 값1:
조건식의 결과가 값1과 같을때 실행되는 문장;
break;
case 값2:
조건식의 결과가 값2와 같을때 실행되는 문장;
break;
...
default:
조건식의 결과와 일치하는 case 값이 없을 때 실행되는 문장;
}
switch는 시작할 지점을 찾겠다는 개념으로 이해해야!!!!
break이 없다면 해당 case 밑으로 쭉 다 실행!!
처리하는 경우의 수가 많을 때 유용. default는 생략가능.
break;을 안쓰면 switch문 끝까지 실행. break;을 만나면 switch문 전체를 빠져나감.
if는 조건식 결과가 t/f일때, switch는 조건식 결과가 정수나 문자열.
switch문 조건식의 결과는 정수 of 문자열이어야 한다.
case문의 값은 정수, 상수, 문자열만 가능하고 중복되면 안된다. (변수나 실수 불가능!!)
for (초기화; 조건식; 증감식) {
조건식의 결과가 참인동안 반복적으로 실행되는 문장;
}
for (초기화; 조건식1; 증감식) {
조건식1이 참인동안 반복적으로 실행되는 문장;
for (초기화; 조건식2; 증감식) {
조건식2가 참인동안 반복적으로 실행되는 문장;
}
}
for (타입 변수이름 : 배열or컬렉션) {
배열or컬렉션의 길이만큼 반복적으로 실행하고자 하는 문장;
}
Math.random() : 0.0 <= x < 1.0
사이의 임의의 double 값 반환.
1~10 사이 난수 20개 출력 + -5~5 사이 난수 20개 출력
for (int i = 0; i < 20; i++) {
// System.out.println(Math.ranmdom()*10) // 0 <= x < 10.0
// System.out.println(Math.random()*10+1) // 1 <= x < 11.0
System.out.println((int)(Math.random()*10+1)) // 1 <= x < 11 (1,2,3,..,10)
}
for (int i = 0; i < 20; i++) {
System.out.println((int)(Math.random()*11)) // 0 <= x < 11
System.out.println((int)(Math.random()*11)-5) // -5 <= x < 6 (-5,-4,..5)
}
while (조건식) {
조건식의 결과가 참인동안 반복적으로 실행되는 문장;
}
순서 : 1)조건식 2) 조건식이 참인경우 문장수행 3) 조건식이 거짓이 될 때 까지 반복
0부터 정수들 합이 <= 100이 될때 까지 더하는 반복문
int sum = 0;
int i = 0;
while (sum <=100) {
System.out.println("i = " + i);
System.out.println("sum = " + sum);
sum += ++i // i가 1씩 늘어나면서 sum에게 합을 저장함.
}
do {
조건식의 결과가 참인동안 반복적으로 실행하고자 하는 문장;
} while (조건식);
break : 자신이 포함된 하나의 반복문을 벗어난다. 반복문 자체를 끝내버림
continue : 자신이 포함된 반복문의 끝으로 이동한다. 뒷문장들 실행 안하고 다음 반복으로 넘어감
특정 조건시 반복 건너 뛸 때 유용.
반복문에 이름을 붙여서 break 반복문이름; 으로 활용할 수도 있다.
ex) allloop: for (int i = 0; i <10; i++){if (i == 5){break allloop;}}
배열 : 같은 타입의 여러변수를 하나의 묶음으로 다루는 것.
선언 : 타입[] 변수이름;
이나 타입 변수이름[];
배열생성 : 타입[] 변수이름 = new 타입[길이];
참조 변수와 배열이 연결되고 참조변수를 이용해 배열을 다룬다.
인덱스 : 각 요소(저장공간)에 자동으로 붙는 일련번호!
범위 : 가장 왼쪽 0 ~ 가장 오른쪽 '배열길이 -1' 까지
배열의 길이 : 배열이름.length. 배열은 한번 생성되면 그 길이를 바꿀 수 없다!!
배열을 생성하면 연속적인 메모리 공간을 찾아 주소를 배정하기 때문에 크기를 바꿀 수 없다.
배열 크기가 부족하면 새로 배열을 만들어 기존 배열 값을 복사해 넣는다.
배열의 초기화 : 배열의 각 요소에 처음으로 값을 저장하는 것
기본적으로는 타입의 기본값으로 자동으로 초기화.(boolean은 false, 정수는 0, 참조형은 null)
선언과 동시에 초기화 방법 타입[] 변수이름 = {1, 2, 3, ...}
초기화 방법
int[] num = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] num2 = {1, 2, 3, 4, 5, 6}; //선언과 초기화 동시에 하면 new int[] 생략가능!!!
int[] num3; // 먼저 선언하고 초기화를 따로하면
// num3 = {1, 2, 3, 4}; // <<이렇게 생략 불가능!!
num3 = new int[]{1, 2, 3, 4} // << 초기화만 할꺼면 new int[] 반드시 붙여야
배열의 출력 : 그냥 배열 변수명을 출력하면 이상한 값이 출력.(char배열 제외)
for (int i = 0; i < arr.length; i++) {
system.out.println(arr[i]
); } 이렇게 반복문으로 출력하거나
Arrays.toString(배열이름) 을 써서 메서드로 출력.
Arrays.deepToSting(이차원배열이름) 을 쓰면 2차원 배열도 출력 가능
배열의 총합과 평균 : sum 변수 만들고 반복문으로 배열값 sum += 배열이름[i]
로 합하기.
평균은 sum값 구하고 나서 .length(배열길이)로 나누기.
배열의 최대 최소값 : min max 변수를 배열의 첫 값으로 초기화 하고 반복문으로 배열 값 하나씩 비교해서 변수에 저장.
String 클래스 : 기본형처럼 사용 가능한 참조형. 내용 변경할 수 없고 대신 새로운게 생성.
String 클래스의 주요 메서드
char charAt(int index) : 문자열에서 해당 위치(index)에 있는 문자를 반환.
int length() : 문자열의 길이 반환
String substring(int from, int to) : 문자열에서 범위의 문자열 반환(from <= x < to)
bollean equals(Object obj) : 문자열 내용이 같으면 true, 다르면 false
char[] toCharArray() : 문자열을 char 배열[]로 반환.
String str = "ABCDEFG";
char ch = str.charAt(3); // ch에 D(str에서 index 3인 값) 삽입.
String str2 = str.substring(1,4); // str2 = bcd index1~4값 문자열로 반환
String str3 = str.substring(1); // str3 = bcdefg index1부터 끝까지 값 문자열로 반환
char[] chArr = str.toCharArray(); // chArr = {A, B, C, D, E, F, G}
String s2 = new String(chArr); // s2 = "ABCDEFG" char array를 문자열로 다시 합치기
테이블 형태의 데이터를 저장하기 위한 배열. 엑셀처럼 가로세로 표.
2차원 배열의 선언과 생성
: int[][] score = new int[4][3]
4행 3열 2차원 배열 score 생성
score[0][0] = 88; 1행 1열에 88을 저장
2차원 배열의 초기화
: int[][] score = new int[][]{{}, {}, {}, {}}; 로 하던가
int[][] score = {{}, {}, {}, {}}; 로 new int[][]
: 1차원 배열 Arrays.toString(배열이름) / 2차원배열 Arrays.deepToString(이차원배열이름)
: 1차원 비교 Arrays.equals(Arr1[0], Arr2[0]) = t/f로 결과나옴
: 2차원 비교 Arrays.deepEquals(Arr1, Arr2) = t/f로 결과나옴
int[] arr2 = Arrays.copyOf(배열이름, 길이); 배열이름의 배열을 길이만큼 카피.
범위가 넘어가는 복사는 초기화 값이 들어감
int[] arr3 = Arrays.copyOfRange(배열이름, from, to); from<= x < to 인덱스 값까지 복사
Arrays.sort(배열이름); 배열이름을 오름차순으로 정렬
Arrays.sort(배열이름, Collections.reverseOrder()); 내림차순으로 정렬
Arrays.sort(배열이름, from, to) from<= index < to 값 까지만 정렬.