1. 변수와 자료형
(1) 변수(variable)
- 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간
int level; //정수형 변수 level을 선언
level = 10; //값 10을 level 변수에 대입
int level = 10; //level 변수 선언과 동시에 값을 대입(초기화)
(2) 기본 자료형
- 정수형: byte, short, int, long
- 문자형: char
- 실수형: float, double
- 논리형: boolean
int iNum = 10;
byte bNum = (byte)iNum; //강제로 형을 바꾸려면 바꿀 형을 괄호로 써서 명시해야 함
double dNum = 3.14;
int iNum2 = (int)dNum; //실수 자료형 double을 정수 자료형 int로 형 변환
2. 연산자
(1) 기본 연산자
- 단항/이항/삼항 연산자, 대입 연산자, 부호 연산자, 산술 연산자, 증가/감소 연산자, 관계 연산자, 논리 연산자, 복합 대입 연산자, 조건 연산자
(2) 비트 연산자
- 비트 논리 연산자: &(AND) 연산자, |(OR) 연산자, ^(XOR) 연산자, ~(반전) 연산자
- 비트 이동 연산자: << 연산자(왼쪽으로 비트를 이동), >> 연산자(오른쪽으로 비트를 이동), >>> 연산자(오른쪽으로 비트를 이동, 왼쪽에 채워지는 비트 값이 부호 비트와 상관없이 무조건 0이 됨)
3. 조건문
(1) if문과 if-else문
- 하나의 조건을 만족하는 경우와 그렇지 않은 경우
if (조건식) {
수행문; //조건식이 참일 경우에 이 문장을 수행
}
if (조건식) {
수행문1; //조건식이 참일 경우에 이 문장을 수행
} else {
수행문2; //조건식이 거짓일 경우에 이 문장을 수행
}
(2) if-else if-else문
- 하나의 상황에서 조건이 여러 개인 경우
- if-else문은 하나의 조건을 만족하면 나머지 조건을 비교하지 않고 다음 수행문으로 넘어감
- if문으로만 이루어진 코드는 조건마다 각각 비교
if (조건식) {
수행문1; //조건식1이 참일 경우에 수행함
} else if (조건식2) {
수행문2; //조건식2가 참일 경우에 수행함
} else if (조건식3) {
수행문3; //조건식3이 참일 경우에 수행함
} else {
수행문4; //위의 조건이 모두 해당하지 않는 경우에 수행함
}
수행문5; //if-else if-else문이 끝난 후 수행함
- if-else문은 조건 연산자로도 구현할 수 있음
max = (a > b) ? a : b;
(3) switch-case문
- 조건식의 결과가 정수 또는 문자열 값이고 그 값에 따라 수행되는 경우가 각각 다른 경우
- default문은 if-else if문의 else문 역할을 함(어떤 case에도 해당하지 않으면 맨 마지막 default문 수행)-
- break문은 조건에 맞는 수행문을 수행한 후에 수행을 멈추고 swtich-cases문을 빠져나가도록 함
switch(조건){
case 값1:수행문1;
break;
case 값2:수행문2;
break;
case 값3:수행문3;
break;
default:수행문4;
}
- case문 동시 사용
case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31;
break;
case 4: case 6: case 9: case 11: day = 30;
break;
case 2: day = 28;
break;
4. 반복문
(1) while문
- 조건식이 참이 동안 수행문을 반복해서 수행
int num = 1; //초기화
int sum = 0;
while (num <= 10){ //조건 비교
sum += num;
num++; //증감식
}
(2) do-while문
- { } 안의 문장을 무조건 한 번 수행 한 후에 조건식을 검사
- 조건이 만족하는지 여부를 마지막에 검사
do {
수행문;
...
} while (조건식);
수행문2;
...
(3) for문
- 중첩된 반목문: 외부 for문과 내부 for문이 어떤 순서로 실행되는지 잘 이해해야 함
- continue문: 반복문 안에서 continue문을 만나면 이후의 문장은 수행하지 않고 for문의 처음으로 돌아가 증감식 수행, 특정 조건에서는 수행하지 않고 건너뛰어야 할 때 사용
//홀수일 때만 더하고 짝수일 때는 더하지 않는 프로그램
int total = 0;
int num;
for (int num = 0; num <= 100; num++) { //100까지 반복
if (num % 2 == 0) //num값이 짝수인 경우
continue; //이후 수행을 생략하고 num++ 수행
total += num; //num값이 홀수인 경우에만 수행
}
//변수 num이 짝수일 때는 이후 수행을 생략하고 for문의 증감식으로 돌아가서 num에 1을 더함
//num이 홀수일 때는 계속 진행(continue)해서 total += num; 문장을 수행
- break문
int sum = 0;
int num = 0;
//0부터 시작해서 숫자를 1씩 늘리면서 합을 계산할 때 숫자를 몇까지 더하면 100이 넘는지
for (num = 0; ; num++) { //조건식을 생략하는 대신 break문을 사용
sum += num;
if (sum >= 100) //sum이 100보다 크거나 같을 때(종료 조건)
break; //반복문 중단
}
4.배열
(1) 배열
- 배열: 자료가 연속적으로 나열된 자료 구조
int[] studentIDs = new int[10]; //int형 요소가 10개인 배열 선언
//알파벳 문자와 아스키 코드 값 출력하기
char[] alphabets = new char[26];
char ch = 'A';
for (int i = 0; i < alphabets.length; i++, ch++) {
alphabets[i] = ch; //아스키 값으로 각 요소에 저장
}
for (int i = 0; i < alphabets.length; i++) {
System.out.println(alphabets[i] + "," + (int) alphabets[i]);
}
- 배열 복사하기: for문 반복 복사, System.arraycopy( ) 메서드
System.arraycopy(array1, 0, array2, 1, 4);
// (복사할 배열, 복사할 첫 위치, 대상 배열, 붙여 넣을 첫 위치, 복사할 요소 개수)
- 얕은 복사/깊은 복사
- 향상된 for문과 배열: 배열의 처음에서 끝까지 모든 요소를 참조할 때 사용하면 편리
String[] strArray = {"Java", "Android", "C", "JavaScript", "Python"};
for (String lang : strArray) {
System.out.println(lang);
}
(2) 다차원 배열
- 조건식이 참
(3) ArrayList
- 조건식이 참
6. 클래스와 객체
7. 상속
8. 다형성
9. 추상 클래스
10. 인터페이스
11. 내부 클래스
12. 입출력
13. 예외 처리
14. 컬렉션 프레임워크
15. 람다식
16. 스트림