조건문과 배열
[1] if - else if - else 문
JAVA 언어에서 다중 조건을 구현하는데 필요한 구문 중 하나이다.
if (조건식1) {
조건식 1의 결과가 True인 경우 실행함
} else if (조건식2) {
조건식 2의 결과가 True인 경우 실행함
}
else {
모든 조건의 결과가 False인 경우 실행함
}
내부적으로도 조건식의 결과가 true 인 특정 if 또는 else if , else 의 내부 코드만 실행하게 된다.
내부 코드(Code Block)에서는 값 할당, 함수 사용 등 다양하게 구현 가능하다.
else if는 없거나 1번 이상 다중 사용 가능하다.
else는 없거나 1번만 사용 가능하다.
논리 연산자
둘 이상의 조건들을 결합하여 최종 Ture 값 또는 False 값을 도출하는 연산자
- 단일 조건 : 당신은 한국 사람인가요 ?
- 다중 조건 : 당신은 한국사람이"고", 파이썬 프로그래머 인가요? ( 동시 )
당신은 한국사람이"거나", 미국 사람인가요? ( 선택 )
AND 연산자
- 모든 조건이 True인 경우 True를 출력
- 조건 중 하나라도 False 이면 결과는 False
- 자바에서는 AND 연산자를 "&&"기호로 표기한다.
당신은 한국사람이고, 자바 프로그래머 인가요? |
>> 한국사람 AND 자바 프로그래머 ( 두가지의 조건 모두 만족 ) |
당신은 한국 사람이고, 서울에 거주하고, 나이가 20이상이고, 키가 190이하 인가요? |
>> 한국사람 AND 서울 거주 AND 나이 > 20 AND 키 <= 190 |
<예졔 코드>
int x = 10;
int y = 12;
String result = "FAIL";
if ( x>= 10 && y >= 10 ) {
reult = "PASS"
}
>> x가 10이고 y가 12이면 if문 안의 조건식이 논리연산자 True를 도출해서 실행이 된다.
>> 만약 x가 10이 아니었다면, AND 조건식이기 때문에 실행이 되지 않는다.
OR 연산자
- 결합 된 조건 중 하나라도 True이면 True가 됨
- 모든 조건이 False 인 경우에는 결과가 False 됨
- " 하나라도 맞추면 True "
- 자바에서는 "||"를 사용
당신은 자바 프로그래머 이거나 파이썬 프로그래머 인가요? |
>> 자바 프로그래머 OR 파이썬 프로그래머 |
당신은 한국 사람이거나, 미국 사람이거나, 중국 사람인가요? |
>> 국적 == 한국 OR 국적 == 미국 OR 국적 == 중국 |
<예제코드>
String speciality = "JAVA"
int age = 25;
String result = "FAIL";
if (speciality = "JAVA" || age = 2555; )
result = "PASS";
}
>> speciality 가 java 이거나 age 가 2555이라면 내부 코드가 수행된다.
>> 즉 OR 연산에서 speciality의 연산결과가 True이기 때문에 논리연산자는 참이 된다.
NOT 연산자
- 논리 부정 연산자로 True는 False로, False는 True로 조건식의 결과를 반대로 바꾸는 연산이다.
- 자바에서는 "NOT"연산자를 사용한다.
<예제>
boolean isDevice = true;
if (!isDevice) {
System.out.print("Device is not Ready");
} else {
System.out.print("Device is Ready");
}
- !isDevice는 현재 Device의 상태를 역전하여서 조건이 맞는지 살펴본다
- 현재 True이기 떄문에 if-else 조건문 안에서는 False의 값으로 존재하게 된다.
조건문 중첩
조건문은 단일 if-else if-else만 사용하는 것도 가능하지만 , 조건문 안에 새로운 조건문을 포함시켜 중첩하여 사용하는 것이 가능하다.
조건문의 중첩은 코드 가독성을 저하시키는 요인이 될 수 있다.
- 깊은 레벨로 중첩 된 조건문은 코드의 가독성을 저하한다.
- 복잡도를 낮추고 가독성을 높이기 위한 고민이 필요하다.
- 조건을 단순화 하거나 , 다형성을 활용할 수 있을지 고민해본다.
- Clean Code , Clean control Structure 을 사용할 수 있다.
[2] Switch-Case 문
다중 조건식으로 인해 떨어지는 가독성에 대한 문제를 해결 할 수 있는 방법이다.
조건문의 또다른 형태로 경우의 수가 많아지더라도 간결하게 표현가능하고 일반적으로 if-else if문보다 처리속도가 빠르다.
- Switch 문에는 조건식을 기재하고 중괄호{}로 블록을 만든다.
- case 문에는 조건식에 대한 결과 값을 명시하고, 끝에 콜론을 붙인다.
- case 문에는 각각 ㅅ구행할 코드와 끝에 break; (종단점)을 작성한다
- default : 문을 작성한다.
- break문을 통해 cae 문의 코드 실행 영역을 구분할 수 있다.
- break 문은 생략 가능한데, 이 경우 switch가 종료될 때까지 모든 문장을 수행.
- swtich 문의 조건식을 계산한다.
- 결과가 일치하는 case 문을 찾아서 코드를 수행한다.
- break 문을 만나면 switch 문을 빠져나간다.
- 조건식의 ru결과와 일치하는 case문이 없다면 default를 수행한다.
Switch-case의 제한 사항
- switch 조건식의 결과는 정수 또는 문자열이어야 한다.
- case 문에는 정수, 상수, 문자열 상수만 올 수 있다. (변수와 실수는 불가)
- break문이 없다면 그 두의 case 블록이 모두 실행되므로 주의한다.
이는 OR와 같은 경우의 구현에서 이점이 될 수도 있다.
배열
자료구조(Data Structure)
숫자형, 문자형 데이터는 하나의 변수에 1개의 데이터를 저장한다프로그램에서 사용되는 데이터는 복잡할 수 있다.
매분 마다 수집된 하루 주식 가격 데이터 -> 1000개 이상의 변수 사용?
한 사람의 정보를 저장 -> 수십 개의 변수 사용? (이름, 성별 , 키 , 몸무개 .. )
>> 관련 있는 데이터들을 그룹화 하여 하나의 변수에 저장
매분 마다 수집 된 하루 치 주식 => 변수 하나 is [ 345, 333, 323, .. ]
한 사람의 정보를 저장 => {'naem': 'han' , 'gender' : 'male' ... }
Java 배열
데이터를 담을 수 있는 변수 공간이 연결 된 형태로 각 공간은 그룹화 되어있다.
단일 배열에는 동일한 자료형의 데이터만 저장 가능하다.
배열은 길이 속성을 갖고, 길이는 생성 시에 고정 됨
배열은 순서가 존재하며, 0으로 시작하는 이름(번호)를 가지고 있음 => 'index'
JAVA 배열의 선언
- 자료형 뒤에 " [] " 를 붗여서 배열임을 선언 할 수 있다.
- (ex) int[] num_set , float[] num_set2
- JAVA에서 베열은 객체이며, 선언과 동시에 객체 생성이 가능하다.
- new 키워드를 사용한다.
- 생성 시 배열의 길이를 명시한다.
<예시 코드>
int[] todayStockPrices = new int[10];
길이가 10인 int형의 배열을 생성한다.
todayStackPrices 변수에 생성한 배열 객체의 참조를 저장한다.
배열은 객체이고, 배열을 저장하는 변수는 참조 자료형 변수
배열의 선언, 생성 그리고 초기화
다음의 명령어 형식을 통해서 배열의 선언, 생성, 초기화를 동시에 수행 할 수 있다.
배열의 크기는 중괄호 안의 comma로 구분된 값의 개수에 따라 결정 된다.
int[] ages = {34, 12, 33, 34, 15, 53};
배열의 인덱스
배열의 값들은 각자 고유한 번호를 가지고 있고 이를 index라고 한다.
index는 0부터 길이가 -1 까지의 범위를 지정할 수 있다.
index를 활용해서 배열 내부의 값을 사용 가능하다.
<예제>
int[] num = {1, 2, 3, 4, 5};
System.out.println(num[0]) // 1
System.out.println(num[4] - num[2]) // 2
- index를 활용하여 배열의 각 요소에 대해서 호출,수정이 가능하다.
- 배열은 객체이고, 객체는 속성을 가진다.
- 배열 객체는 length라는 속성으로 변수의 길이를 확인 할 수 있다.
- 코드 프레소 처음 시작하는 JAVA 프로그래밍
- 코드 프레소 Java 웹 개발 체험단 활동 중
'EXTERNAL ACTIVITY > Code Presso -웹개발 트랙 체험단-' 카테고리의 다른 글
<코드 프레소 웹 개발 트랙> 처음 시작하는 자바 프로그래밍[4] (0) | 2022.01.13 |
---|---|
<코드 프레소 웹 개발 트랙 > Git 입문 (0) | 2022.01.13 |
<코드프레소 웹 개발 트랙 > 처음 시작하는 Java 프로그래밍[2] (0) | 2022.01.11 |
<코드 프레소 웹 개발 트랙 > 처음 시작하는 Java 프로그래밍[1] (0) | 2022.01.10 |
<코드 프레소 웹 개발 트랙> Git 기본 플로우 이해 (0) | 2022.01.09 |