<배열과 메모리>
1) 배열은 인덱스를 이용해 자료형이 같은 데이터를 관리하는 것이다.
2) 배열의 선언 및 초기화
배열도 변수와 마찬가지로 선언과 동시에 초기화를 할 수 있는데, 자바는 배열의 크기를 정하면 수정이 불가능하다.
// 배열 선언 후 초기화
int []arr1 = new int[5];
arr[0]=100
arr[1]=200
arr[2]=300
// 배열 선언과 동시에 초기화
int [] arr2 = {1,2,3,4};
3) 베열의 메모리 크기는 배열을 구성하는 데이터의 자료형에 따라 배열의 메모리 크기가 결정된다.
4) 배열을 가리키는 배열의 이름
= 기본 자료형 데이터를 담고 있는 변수와 달리 배열 변수는 배열 데이터의 주소를 담고 있다.
5) 배열의 기본 속성
= 기본 자료형 데이터를 담고 있는 변수와 달리 배열 변수는 배열 데이터의 주소를 담고 있다.
6) 다차원 배열
= 행렬연산을 생각하면 편함
<조건문>
조건문은 조건식과 문장을 포함하는 블럭{}으로 구성되어 있는데, 조건식의 연산결과에 따라 실행할 문장이 달라져 프로그램의 실행흐름을 변경할 수 있다. 조건문은 if문과 swich문 2가지가 있는데, 양자택일 문제에서는 if문을, 다자택일에서는 switch 문을 주로 사용한다. 다자택일에 사용하는 switch문은 if문보다 제약이 많다.
1. if문
1) 일반적인 if 문
if(조건식){
조건식이 참(true)일 때 수행될 동작들
}
2) if문의 변형인 if-else 문
if(조건식){
조건식이 참(true)일 때 수행될 동작들
}else{
조건식이 거짓(false)일 때 수행될 동작
}
<예시>
if(input==0){
System.out.println("A");
}
if(input!=0){
System.out.println("B");
}
이러한 문장을 if-else문으로 변경하면 다음과 같다.
if(input==0){
System.out.println("A");
}else[
System.out.println("B");
}
if문의 변형인 if-else문에는, 말 그대로 'else'는 '또 다른' 혹은 '그 밖의 다른'으로 조건식의 결과가 참이 아닐 때, 즉 거짓일 때 else 블럭의 문장을 수행하게 된다. if문을 여러개 중첩해서 사용이 가능한데, 데이터가 많아질수록 성능이 저하된다는점 기억해야한다.
2. switch문
if문을 생각해보면 if문은 조건식의 결과 값이 참 or 거짓 값만 있기에 경우의 수가 많아질수록 else-if를 계속해서 추가해야해서 조건식이 많아져 복잡해지고, 여러개의 조건식으로 인해 처리시간도 많이 걸린다. 이러한 if문과 달리 switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있고 표현이 간결해 알아보기 쉽다.
그래서 처리해야할 경우의 수가 많다면 switch문을 사용하는게 좋다. 그리고 if문처럼 여러개의 switch 문을 중첩할 수 있다.
(다만, switch문은 제약조조건이 있어, 경우의 수가 많아도 if문을 사용하는 경우도 적지않게 있다.)
동작 원리는 다음과 같다.
1. 조건식을 계산
2. 조건식의 결과와 일치하는 case문으로 이동
3. dlgndml answkdemfdmf tngod
4. break문이나 switch문의 끝을 만날 경우 switch문 전체를 빠저나간다.
1) 일반적인 switch 문법
switch(socre){
case 100:
case 90:
System.out.println("수");
break;
case 80:
System.out.println("우");
break;
case 70:
System.out.println("미");
break.
}
2) switch 문법 풀이
switch(조건식){
case 값1:
break;
case 값2:
break;
default:
조건식과 일치하는 결과 값이 없을 때 수행될 문장
}
※위에서 언급한 switch문의 제약조건
1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.
<반복문>
반복문은 프로그램 진행을 특정 조건에 따라 반복적으로 진행하는 것으로 for, while, do-while문이 있다.
반복문인 for문과 조건문인 switch문은 조건에 따라 한 번도 실행되지 않을 수 있는데, do-while문에 속한 문장은 무조건 최소한 한 번은 수행될 것이 보장된다.
1. for문
1) 일반적인 for문의 형태
for(int i=0, i<n; i++){
Sysytem.out.println("hello");
}
2) for문의 해석
for(초기화; 조건식; 증감식){
조건식이 참일 때 수행될 코드
}
3) 향상된 for문?(for-each)문법
for(int tmp : arr){
System.out.println(tmp);
}
4) 향상된 for문 해석
for(타입 변수명 : 배열 또는 컬렉션, 컨테이너){
반복할 문장
}
결국 조건식을 통해 참일 경우 반복해서 코드를 실행하고, 거짓이 되면 루프를 탈출한다. 조건문과 마찬가지로 반복문도 중첩해서 사용이 가능하다. 일반적인 for문에 비해 향상된 for문인 for-each문이 더 간결해 가독성이 좋지만, 배열이나 컬렉션을에 저장된 요소들을 읽어오는 용도로만 사용이 가능하다는 제약이 존재한다.
2. while문
for문에 비해 구조가 간단하며, if문처럼 조건식과 블럭{}으로만 이루어져 있다. 다만 if문과 달리 while문은 조건식이 참(true)인 동안, 즉 조건식이 거짓이 될 때까지 블럭{}의 코드를 실행한다.
1) 일반적인 while문
int i=0;
while(i<=10){
System.out.println(i);
i++;
}
2) while문의 해석
while(조건식){
수행될 문장;
}
while문의 조건식은 생략이 불가능해 조건식이 항상 참이 되도록 하려면 반드시 참(true)를 넣어야 한다.
(무한 반복문은 반드시 블럭{}안에 조건문을 넣어서 특정 조건을 만족하면 무한 반복문을 벗어나도록 해야한다.)
3. do-while문
do-while문은 while문의 변형으로 기본적인 구조는 while문과 비슷하나 조건식과 블럭{}의 순서를 바꿔놓은 것이다. 그래서 while 문과 반대로 블럭{}을 먼저 실행하고 조건식을 평가하는데, while문은 조건식의 결과에 따라 블럭{}이 한 번도 수행되지 않을 수 있지만, do-while문은 최소한 한번은 수행디ㅗㄹ 것을 보장한다.
1) 일반적인 do while문의 예제로 1~100사이의 정수를 입력받고 임의의 숫자를 맞추는 예제
int input =0, answer=0;
answer = int(Math.ramdom()*100)+1;
Scanner scanner = new Scanner(System.in);
do{
System.out.print("1과 100사이의 정수를 입력하세요.");
input=scanner.nextInt();
if(input>answer){
System.out.println("더 작은 수로 다시 시도");
} else if(input<answer){
System.out.println("더 큰 수로 다시 시도");
}
while(input!=answer);
System.out.println("정답입니다.")
}
2) do-while문의 해석
do{
조건식의 연산결과가 참일 때 수행될 문장들을 적는다
}while(조건식);
조건식이 계속 참일때까지 프로그램을 반복 진행하되, do{}내부의 프로그램은 1회 수행한다.
'Language > Java' 카테고리의 다른 글
클래스 메서드(static)와 인스턴스 메서드 (static은 무엇일까) (0) | 2022.01.20 |
---|---|
장독에 지식 채우기 (모를때마다 와서 추가)-(2022.01.17ver) (0) | 2022.01.17 |
Java의 이해(객체와 메모리) (0) | 2022.01.17 |
1) 객체 지향 프로그래밍 및 클래스 제작과 객체 생성 그리고 변수와 메서드) (0) | 2022.01.17 |
기본적인 자바코드의 이해 (변수와 메인, 메인메서드, 자료형과 연산자) (0) | 2022.01.16 |