2023/12/07
1.간단하다 (Simple)
2.객체 지향적이다 (Object-oriented)
3.인터프리터 언어이다 (Interpreted)
4.강력하다 (robust)
5.안전하다 (Secured)
6.플랫폼이 독립적이다 (Platform independent)
7.멀티 스레드를 지원한다 (Multithreaded)
8.동적이다 (Dynamic)
*참조 자료형 : 포인터
Q1) "돈이 있으면 택시를 타고 가고, 돈이 없으면 걸어간다."
boolean money = true;
if (money) {
System.out.println("택시를 타고 가라");
}else {
System.out.println("걸어가라");
}
비교 연산자
int money = 2000;
if (money >= 3000) {
System.out.println("택시를 타고 가라");
}else {
System.out.println("걸어가라");
}
AND/OR/NOT 연산자
Q2) "돈이 3000원 이상 있거나 카드가 있다면 택시를 타고 그렇지 않으면 걸어가라"
int money = 2000;
boolean hasCard = true;
if (money>=3000 || hasCard) {
System.out.println("택시를 타고 가라");
} else {
System.out.println("걸어가라");
}
contains
:List 자료형에 해당 아이템이 있는지 조사하는 메서드
Q3) "만약 주머니에 돈이 있으면 택시를 타고, 없으면 걸어가라"
ArrayList<String> pocket = new ArrayList<String>();
pocket.add("paper");
pocket.add("handphone");
pocket.add("money");
if (pocket.contains("money")) {
System.out.println("택시를 타고 가라");
}else {
System.out.println("걸어가라");
}
*pocket 리스트에 안에 money란 요소가 있으므로 pocket.contains("money")가 참이 되어 ‘택시를 타고 가라’가 출력.
else if
Q4)"지갑에 돈이 있으면 택시를 타고, 지갑엔 돈이 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어가라“
boolean hasCard = true;
ArrayList<String> pocket = new ArrayList<String>();
pocket.add("paper");
pocket.add("handphone");
if (pocket.contains("money")) {
System.out.println("택시를 타고 가라");
}else if(hasCard) {
System.out.println("택시를 타고 가라");
}else {
System.out.println("걸어가라");
}
구조
switch(입력변수) {
case 입력값1: ...
break;
case 입력값2: ...
break;
...
default: ...
break;
}
ex)
public class Sample {
public static void main(String[] args) {
int month = 8;
String monthString = "";
switch (month) { // 입력 변수의 자료형은 byte, short, char, int, enum, String만 가능
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
default: monthString = "Invalid month";
break;
}
System.out.println(monthString);
}
}
구조
while (조건문) {
<수행할 문장1>;
<수행할 문장2>;
<수행할 문장3>;
...
}
Q1) "열 번 찍어 안 넘어가는 나무 없다"
int treeHit = 0;
while (treeHit < 10) {
treeHit++; // treeHit += 1 로도 표현 가능
System.out.println("나무를 " + treeHit + "번 찍었습니다.");
if (treeHit == 10) {
System.out.println("나무 넘어갑니다.");
}
}
무한루프
while (true) {
<수행할 문장1>;
<수행할 문장2>;
...
}
while 문 빠져나가기 - break
int coffee = 10;
int money = 300;
while (money > 0) {
System.out.println("돈을 받았으니 커피를 줍니다.");
coffee--;
System.out.println("남은 커피의 양은 " + coffee + "입니다.");
if (coffee == 0) {
System.out.println("커피가 다 떨어졌습니다. 판매를 중지합니다.");
break;
}
while 문으로 돌아가기 - continue
int a = 0;
while (a < 10) {
a++;
if (a % 2 == 0) {
continue; // 짝수인 경우 조건문으로 돌아간다.
}
System.out.println(a); // 홀수만 출력된다.
}
구조
String[] numbers = {"one", "two", "three"};
for(int i=0; i<numbers.length; i++) {
System.out.println(numbers[i]);
}
for 문으로 돌아가기 - continue
int[] marks = {90, 25, 67, 45, 80};
for(int i=0; i<marks.length; i++) {
if (marks[i] < 60) {
continue; // 조건문으로 돌아간다.
}
System.out.println((i+1)+"번 학생 축하합니다. 합격입니다.");
}
이중 for 문
for(int i=2; i<10; i++) {
for(int j=1; j<10; j++) {
System.out.print(i*j+" ");
}
System.out.println(""); // 줄을 바꾸어 출력하는 역할을 한다.
}
구조
for (type 변수명: iterate) {
body-of-loop
}
*반복 횟수를 명시적으로 주는 것은 불가능, 순차 반복만 사용 가능
ex1)
String[] numbers = {"one", "two", "three"};
for(String number: numbers) {
System.out.println(number);
}
-> for문 예제와 같음
ex2)-ArrayList로 구현
import java.util.ArrayList;
import java.util.Arrays;
public class Sample {
public static void main(String[] args) {
ArrayList<String> numbers = new ArrayList<>(Arrays.asList("one", "two", "three"));
for (String number : numbers) {
System.out.println(number);
}
}
}