if바로 뒤에 붙는 소괄호에 조건식이 들어가며, 조건식이 true일 경우 중괄호 안의 내용이 실행된다.
조건식이 false일 경우 중괄호 안의 내용이 실행되지 않고 넘어간다
조건식은 비교 연산자를 사용해서 true OR false를 반환하도록 한다
else
if문의 조건이 false일 경우 다른 내용을 실행해 주기 위해 사용한다
if(/*조건식*/) {
//실행내용
} else {
//if의 조건이 false일때 실행되는 부분
}
else문에는 조건이 붙지 않으며 if에서 조건식 부분이 false라면 무조건 else를 실행하고 다음으로 넘어간다.
else의 경우 항상 제일 마지막에 입력해줘야 한다
else if
if외의 조건을 여러 개 설정해주고 싶은 경우 사용할 수 있으며 if와 else사이에 사용된다
if(/*조건식*/) {
//실행 내용
} else if(/*조건 2*/) {
//if문의 조건식이 false일 경우 실행 내용
} else if(/*조건 3*/) {
//바로 위의 else if문의 조건식이 false일 경우 실행 내용
} else {
//위의 모든 if, else if문의 조건식이 false일 경우 실행 내용
}
else if에는 if와 다른 조건을 달아줄 수 있으며, 1개 이상 원하는 만큼 추가할 수 있다.
예제 : 점수(score)를 입력받아 등급을 출력해주는 조건문을 작성해라
int score = 83;
if(score >= 90) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B");
} else if (score >= 70) {
System.out.println("C");
} else if (score >= 60) {
System.out.println("D");
} else {
System.out.println("F");
}
조건문을 작성할때는 항상 좁은 조건에서 넓은 조건으로 작성을 해줘야 원하는 결괏값을 가질 수 있다.
만약 위의 코드에서 처음 if문에 조건을 score >= 60 이렇게 입력을 한다면 첫번째 조건이 먼저 읽히므로 60 이상의 모든 score가 A가 된다. 90 이상만 A를 출력하려고 했지만 60 이상이 모두 A가 된다.
이를 방지하기 위해 좁은 조건에서 넓은 조건으로 잡아주는 연습을 하자.
switch
if문과 같은 조건문입니다. 사용법이 조금 다른데 밑에 코드를 보며 확인해보겠습니다.
switch (/*변수*/) {
case /*값1*/:
//실행문
break;
case /*값2*/:
//실행문
break;
default:
//실행문
}
switch옆의 소괄호에 들어가는 값이 변수입니다. if문의 조건식에서 변수 부분과 같다고 생각하면 되는데 위의 if문 예제에서 score >= 90 이 부분의 score가 switch의 소괄호 부분에 들어가 주면 됩니다.
case는 else if와 같이 생각하면 되는데 case옆에 들어오는 값이 변수와 같을 때 실행문을 실행해 줍니다.
default는 모든 case의 조건이 만족하지 않을때 실행이 되며 if문의 else와 같다고 생각하면 됩니다.
switch case문에서는 ==(양쪽의 값이 같은지) 만 나타낼 수 있으며 변수와 값이 동일하면 true로 실행문을 실행하고 false면 다음 실행문으로 넘어갑니다.
각 case의 끝에는 break를 입력해줘야 합니다. 입력하지 않을시에 default까지 연속적으로 확인하며 체크를 해주기 때문에 case의 조건이 맞고 안의 실행문을 실행했으면 switch문을 나가는 break를 사용해줘야 합니다.
default는 마지막에 break를 사용하지 않아도 된다. default에 온 순간 안의 실행문을 수행하고 switch문을 빠져나가기 때문이다. (if문의 else와 같음)
예제 : 현재 몇층에 있는지 확인하는 switch문을 만드시오
int nowFloor = 3;
switch(nowFloor) {
case 1:
System.out.println("1층 입니다.");
break;
case 2:
System.out.println("2층 입니다.");
break;
case 3:
System.out.println("3층 입니다.");
break;
case 4:
System.out.println("4층 입니다.");
break;
case 5:
System.out.println("5층 입니다.");
break;
default:
System.out.println("어디서 온거에요????");
}
이렇게 작성을 해준다면 nowFloor는 3이기 때문에 첫 번째와 두 번째 case를 지나쳐 세 번째 case에서 프린트를 해주고 switch문을 빠져나간다.
만약 break를 해주지 않았다면 다음 case의 모든 프린트문(4~default)을 출력해주고 switch 문을 빠져나간다.
값을 메모리 어딘가에 저장을 하고 그 메모리의 주소 값을 변수의 이름에 연결을 시키는 방법이기 때문에 값을 저장할 수 있는 이름이라고 한다.
-선언 방법
[type] [variableName] = [value];
이렇게 선언과 초기화가 이루어진다 하나하나 보면
[type] : 변수의 타입을 지정해 줘야 한다.
변수의 타입이란 변수에 저장될 값이 어떤 타입인지를 정해주는 것으로 지정한 타입 외에 값은 들어갈 수 없다. 예를 들어 int타입의 변수를 지정했으면 문자, boolean 등은 들어갈 수 없는 것이다.
컴퓨터의 메모리가 모자랐던 과거의 컴퓨터에서 코딩을 하기 위해서는 변수의 타입이 매우 중요했다. 메모리의 낭비가 있을 경우 작업의 효율이 매우 낮아지거나 작동하지 않을 수도 있었다. 그렇기에 int, double 등의 타입을 나눠서 용량을 정한 후에 용량에 알맞게 넣은 것이다.
하지만 최근의 프로그래밍 언어들 그리고 자바 또한 최신 버전에서는 var라던가 자바스크립트의 const, let 등 타입이 아닌 '변수를 선언할게'라고만 써주면 된다. 컴퓨터의 발전이 프로그래머들을 편하게 해주고 있다
지금은 1.8 버전이고 var과 같은 변수 타입은 지원하지 않으므로 하나하나 익혀보도록 하자
VariableName(변수명)
변수명은 할당한 값을 꺼내 쓰기 위해서 지어주는 이름이다
변수 명 조건
첫 번째 글자는 문자, _(underbar), $ 이렇게 세 가지로만 시작해야 하며 숫자로 시작할 수 없다
변수명 내에 특수문자는 $, _ 두 개만 가능하다
변수명은 대소문자를 구분한다
ex> apple와 aPple는 다른 변수
관례로 CamelCase를 사용한다
길이 제한 없음
예약어를 사용하면 안 된다
예약어란 if, for, int, main 등 자바에서 프로그래밍을 하기 위해 필요한 단어들을 뜻함
-변수 사용
변수를 사용하기 위해서는 초기화를 무조건 해줘야 한다.
초기화를 해주지 않으면 변수를 사용할 수 없는데 여기서 초기화란 변수를 선언
int x;
하고, 선언한 변수에 값을 할당해주는 작업
x = 10;
을 초기화라고 한다.
초기화는 선언과 동시에 할 수 있는데 맨 위에 작성한 부분과 같이
int x = 1;
int y = 10;
int age = 33;
이런 식으로 변수의 선언과 동시에 초기화하는 방법으로 많이 사용되고 있다.
변수를 사용하려면 변수의 이름을 입력하면 된다.
이렇게 사용을 하면 되며 밑의 콘솔에 10이 출력되는것을 볼 수 있다.
-변수의 사용 범위
거의 모든 언어가 비슷할건데 변수는 {} 이런 중괄호 안에서만 사용이 가능하다
조금 더 구체적으로 말하자면
public static void main(String[] args) {
int x = 1;
if(true) {
int y = 2;
x사용 가능
}
while(true) {
int z = 3;
x사용 가능
}
x사용 가능 / y,z사용 불가
}
x,y,z사용 불가