“한줄씩 실행되는 코드”에서 위와 같은 코드가 등장했다.
해당 코드의 구성 요소에 대해서 설명하면 다음과 같다.
int 정수 타입(type)을 나타내는 키워드(keyword). 키워드란 java 언어에서 정한 예약어를 말한다. 앞에서 등장했던 class, public, static, while 과 같은 단어들을 키워드라고 한다.
i : “변수 i” 라고 말한다. 변수는 하나의 값을 가질 수 있는 공간이라고 말한다. 여기서 공간이란 메모리의 어떤 영역을 말한다. i는 변수의 이름, 즉 변수명이라고 말합니다.
1 : “정수 리터럴(literal) 1” 이라고 말한다. 리터럴이란 변수에 입력되는 값을 말한다.
int i = 1; 은 정수 타입 변수 i를 선언함과 동시에 1로 초기화 하였다고 한다.
(변수 i는 4byte 크기의 공간을 확보하고 그 안에 1을 저장한다.)
기본형 타입 : int, short, long, float, double, char boolean
기본형 타입은 메모리를 확보하고, 그 메모리에 값을 저장한다.
기본형이 아닌 타입은 값을 참조하게 됨
예시)
Book b = new Book();
정수 타입은 4byte의 메모리를 사용합니다. 이 4byte 메모리에 숫자 1이 2진수로 저장된다.
1byte | 2byte | 3byte | 4byte |
---|---|---|---|
00000000 | 00000000 | 00000000 | 00000001 |
하나 이상의 글자로 이루어져야 한다.
첫 번째 글자는 문자 이거나 ‘$’, ‘_’이어야 한다.
두번째 이후의 글자는 숫자, 문자, ‘$’, ‘_’ 이어야 한다.
‘$’, ‘_’ 이외의 특수문자 사용은 불가능하다.
길이 제한이 없다.
키워드는 변수명으로 사용할 수 없다.
상수 값을 표현하는 단어 true, false, null 은 변수명으로 사용할 수 없다.
int x;
int y;
int z;
또는
int x, y, z;
정수 타입 변수를 선언할 때 초기값을 넣어주지 않으면 모두 0을 가지게 된다.
int x = 5;
int y = 15;
int z = 15;
또는
int x = 5, y = 10, z = 15;
System.out.printn(정수); 는 정수값을 화면에 출력한다.
IntPrint 클래스를 다음과 같이 작성한 후 실행한다.
public class IntPrint {
public static void main(String[] args) {
int i = 1;
System.out.println(i);
System.out.println(100);
}
}
실행결과
1
100
기본형 타입은 논리형, 문자형, 정수형 실수형이 존재한다.
기본형 타입 중 논리형 타입은 boolean 키워드를 사용한다.
기본형 타입 중 정수형 타입은 byte, short, int, long 키워드를 사용한다.
기본형 타입 중 실수형 타입은 float, double 키워드를 사용한다.
기본형 타입 중 문자형 타입은 char 키워드를 사용한다.
이를 제외한 모든 타입은 레퍼런스 타입이다.
프로그래밍은 어떤 조건에 따라서 다르게 동작하게 코드를 작성하는 경우가 많다.
온도가 30도 이상일 때 동작한다. 가격이 5000원 이하일 때 동작한다. 등의 표현을 보자. 여기에서 “30도 이상”, “5000원 이하”가 조건이라고 말할 수 있다. 이러한 조건의 결과는 참(true)이나 거짓(false)이 나오게 된다.
이러한 참이나 거짓을 저장하는 변수를 논리형 타입 변수라고 한다.
boolean 타입은 true, false 2가지 값중에 하나를 가질 수 있다.
초기하지 않으면 기본적으로 false 값을 가진다, 참고로 메소드 안에서는 변수를 선언한 후 초기화하지 않고 사용하면 java: variable 변수명 might not have been initialized 와 같은 오류가 발생한다.
클래스 안에 선언된 변수는 필드(feild)라 말하고 초기화 하지 않아도 사용 가능하다.
논리형 타입 변수는 논리연산의 결과를 저장할 때 사용한다.
논리연산이란 무엇일까? 예를 들어 a라는 변수가 10보다 크고 30보다 작을 경우라는 조건이 있을 때, 이러한 조건의 결과가 저장되는 변수가 논리형 타입 변수이다.
a가 만약 20이라면 true가 되겠고, a가 5라면 false가 위의 조건의 결과가 된다.
비교연산자와 논리연산자를 이용한 식의 결과는 참이나 거짓이 결과로 나온다.
비교 연산자 : ==, ≠, <, >, ≤, ≥
논리 연산자 : &&, ||, &, |, ^, !
비교 연산자, 논리 연산자와 함께 산술 연산자도 함께 사용될 수 있다. 산술 연산자는 덧셈, 뺄셈등을 말한다.
10은 5보다 크다. 참인가? 거짓인가? 자바에서 표현하면 다음과 같다.
10 > 5
위의 식의 결과를 변수에 저장하고 싶다면? 아래와 같이 표현한다. flag는 노리형 타입 변수로 false로 초기화 된다. 그리고 나서 10이 5보다 크다가 참이라면 flag는 true값을 가지게 된다.
boolean flag = flase;
flag = 10 > 5;
실행해 보기전에 결과를 예상해보자. System.out.println(boolean)은 논리형 값을 출력한다.
package 자바_기본_문법;
public class BooleanTest1 {
public static void main(String[] args) {
boolean flag1 = false;
boolean flag2 = false;
boolean flag3 = false;
boolean flag4 = false;
boolean flag5 = false;
flag1 = 10 > 5;
flag2 = 10 < 5;
flag3 = 10 >= 10;
flag4 = 10 <= 10;
flag5 = 10 == 10;
System.out.println(flag1);
System.out.println(flag2);
System.out.println(flag3);
System.out.println(flag4);
System.out.println(flag5);
}
}
a는 20보다 크고, a는 50보다 작다. 라는 표현은 자바에서 다음과 같이 표현한다.
a > 20 && a < 50
‘a는 20보다 크거나, a는 50보다 작다’ 라는 표현은 자바에서 다음과 같이 표현한다.
a > 20 || a < 50
2가지 조건을 모두 만족해야 하는 경우엔 and 연산자인 &&를 사용하고, 2가지 조건 주 하나만 만족해도 될 경우에는 ||를 사용한다.
&& 대신에 &를 || 대신에 | 를 사용해도 같은 결과가 나온다.
2개의 식의 논리 값이 서로 다를 경우 참이 된다. 아래의 식이 참이려면 한쪽은 참이고, 한쪽은 거짓이 나와야 한다. 예를 들어 a가 31이라는 값을 가질 경우 true & false 가 되니 이때 결과는 참이 나온다.
a > 10 ^ a < 20
논리형 값을 부정한다. true는 false로 바꾸고, false는 true로 바꾼다. 10은 5보다 크다는 참이다. 하지만 그 결과를 부정하게 되니 논리형 변수 a에는 false가 저장되게 된다.
boolean a = !(10 > 5);
package 자바_기본_문법;
public class BooleanTest2 {
public static void main(String[] args) {
boolean flag1 = false;
boolean flag2 = false;
boolean flag3 = false;
boolean flag4 = false;
boolean flag5 = false;
boolean flag6 = false;
// &&는 앞이 거짓이면 뒤는 실생하지 않는다.
flag1 = 10 > 5 && 5 < 20;
flag2 = 10 > 5 & 5 < 20;
// || 역시 앞이 참이면 뒤는 실행하지 않는다.
flag3 = 10 >= 10 || 5 > 6;
flag4 = 10 >= 10 | 5 > 6;
flag5 = 10 == 10 ^ 5 == 4;
flag6 = !flag5;
System.out.println(flag1);
System.out.println(flag2);
System.out.println(flag3);
System.out.println(flag4);
System.out.println(flag5);
System.out.println(flag6);
}
}
불린형 타입은 1byte(8bit)를 사용한다. 사실 1비트로도 참과 거짓은 표현할 수 있다. 0은 거짓, 1은 참으로 표현하면 된다. 하지만 컴퓨터는 자료를 표현하는 최소 단위가 1byte이다. 그렇기 때문에 불린형 타입은 메모리에 1byte를 사용하게 된다.
byte 타입은 1byte 크기의 정수 값을 가질 수 있다.
short 타입은 2byte 크기의 정수 값을 가질 수 있다.
int 타입은 4byte 크기의 정수값을 가질 수 있다.
long 타입은 8byte 크기의 정수값을 가질 수 있다.
리터럴 값인 숫자 5는 int 타입이다.
리터럴 값인 숫자 5L은 long타입이다. (숫자 뒤에 L또는 l이 붙는다.)
byte의 맨 왼쪽 비트는 부호비트, 가장 왼쪽의 비트가 0이면 양수, 1이면 음수를 표현
float 타입은 4byte 크기의 실수 값을 가질 수있다.
double 타입은 8byte 크기의 실수 값을 가질 수 있다.
리럴 값인 숫자 5.2는 double 타입이다.
리터럴 값인 숫자 5.2는 double 타입이.
터럴 값인 숫자 5.2f는 float 타입이. (숫자 뒤에 F또는 f가 붙는다.)
실수형 타입 | 크기 | 값의 범위 | 리터럴 타입 접미사 |
---|---|---|---|
float | 4바이트 | (3.4 X 10^-38) ~ (3.4 X 10^38) | F또는 f |
double | 8바이트 | (1.7 X 10^-308) ~ (1.7 X 10^308) | D또는 d (생략 가능함) |
float과 double의 유효 자릿수 차이
실수형 타입 | 지수의 길이 | 가수의 길이 | 유효 자릿수 |
---|---|---|---|
float | 8 비트 | 23 비트 | 소수 부분 6자리까지 오차없이 표현할 수 있음 |
double | 11 비트 | 52 비트 | 소수 부분 15자리까지 오차없이 표현할 수 있음 |
정수와 실수는 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지구하기(%)를 할 수 있다.
a = 5 + 4;
b = 4 - 3;
c = 3 * 2;
d = 5 / 2;
e = 4 % 3;
a는 9, b는 1, c는 6, d는 2, e는 1의 값을 가진다.
정수를 정수로 나누면 잘림 현상이 발생한다. 2.5가 아닌 2가 d에 저장된다.
나머지 연산자는 앞의 숫자를 나누고 나눈 나머지 값을 구한다.
증가 연산자(++)를 사용하면 1이 증가된다.
감소 연산자(—)를 사용하면 1이 감소된다.
증가 연산자와 감소 연산자는 변수의 앞에 붙으면 전위 증가 연산자와 전위 감소 연산자로 부르고, 변수의 뒤에 붙으면 후의 증가 연산자와 후위 감소 연산자라 말한다.
++a , a++ , --a , a--
a = 5;
a++;
b = 4;
b--;
a++는 a = a + 1 과 같은 뜻이다. a는 6이 된다.
b—는 a = a - 1 과 같은 뜻이다. b는 3이다.
산술 대입 연산자는 +=, -=, *=, /=, %= 가 있다.
a = 5;
a += 3;
b = 4;
b -= 2;
c = 8;
c *= 2;
d = 4;
d /= 2;
e = 5;
e %= 2;
a += 3 은 a = a + 3 을 줄인 식이다. a는 8이 된다.
b -= 2 는 b = b -2 를 줄인 식이다.
괄호가 있을 경우 괄호 안의 내용부터 계산한다.
a = 3;
b = 5;
c = a * (b+5);
d = a * b + 5;
c와 d에 저장된 값은?
int타입과 double타입이 표현할 수 있는 최댓값과 최솟값을 출력한다.
package 자바_기본_문법;
public class NumberExam01 {
public static void main(String[] args) {
int maxInt = Integer.MAX_VALUE;
int minInt = Integer.MIN_VALUE;
double maxDouble = Double.MAX_VALUE;
double minDouble = Double.MIN_VALUE;
System.out.println(maxInt);
System.out.println(minInt);
System.out.println(maxDouble);
System.out.println(minDouble);
}
}
아래의 프로그램은 결과가 얼마가 나올까?
계산 결과가 최댓값을 넘거나, 최솟값보다 작을 경우 음수는 양수로, 양수는 음소로 바뀌는 문제가 발생한다. 이를 오버플로우라고 한다.
package 자바_기본_문법;
public class NumberOverflow {
public static void main(String[] args) {
int value = 10;
int maxInt = Integer.MAX_VALUE;
System.out.println(value + 1);
System.out.println(maxInt + 1);
}
}
실수는 정수를 포함한다.
다음은 가능하다.
이를 묵시적 타입 변환(자동 타입 변환, implicit conversion)이라고 한다.
double d1 = 50;
double d2 = 500L;
int형 리터럴 50, long형 리터럴 500L이 모두 d1, d2에 저장된다.
int형 타입에 실수를 대입하면 오류가 발생한다.
실수는 정수를 포함하지만, 정수는 실수를 포함할 수 없기 때문에 아래의 코드는 컴파일 오류가 발생한다.
int i1 = 50.0;
int i2 = 25.4f;
실수 값을 정수타입의 변수에 저장하려면 정수타입으로 형변환 해야한다. 변환하고자 하는 값 앞에 (int)를 붙인다.
주의해야할 점은 소수점 이하 부분은 잘린다.
이를 명시적 타입 변환(강제 타입 변환, explicit conversion)이라고 한다.
int i1 = (int)50.0;
int i2 = (int)25.6f;
long 타입의 변수는 byte, short 타입의 값을 저장할 수 있다.
int ㅌ입의 변수는 byte, short 타입의 값을 저장할 수 있다.
short 타입의 변수는 byte 타입의 값을 저장할 수 있다.
short s = 5;
int 타입의 변수는 byte, short 타입의 값을 저장할 수 있다.
short 타입의 변수는 byte 타입의 값을 저장할 수 있다.
크기가 큰 타입을 작은 타입에 저장할 때는 오버플로우를 조심해야한다.
package 자바_기본_문법;
public class primitiveCastExam4 {
public static void main(String[] args) {
long x2 = 50;
int i2 = (int)x2;
System.out.println(x2);
System.out.println(i2);
long x3 = Long.MAX_VALUE;
int i3 = (int)x3;
System.out.println(x3);
System.out.println(i3);
}
}
문자는 작은 따옴표로 묶인 문자 하나를 말한다.
문자는 2byte 크기를 가지며 유니코드 값을 가진다.
아래의 위키페이지를 보면 유니코드 값을 확인할 수 있다.
유니코드 65번째 글자는 대문자 A, 97번째 글자는 소문자 a (암기)
문자 타입은 0부터 65535까지 저장할 수 있는 정수 타입이기도 하다.
유니코드 97번째 값은 문자 ‘a’이다. (유니코드 표를 확인하자.)
package 자바_기본_문법;
public class CharExam2 {
public static void main(String[] args) {
char c1 = 'a';
System.out.println((int)c1);
char c2 = (char)97;
System.out.println(c2);
}
}
비트는 컴퓨터가 처리하는 정보의 최소 단위인데, 한 개만으로는 많은 양의 데이터를 나타내기에 턱없이 부족하기 때문에 정보를 표현하는 기본단위로는 8개의 비트를 묶은 바이트(Byte)를 사용한다.
1byte는 정수로 표현하면 0부터 254까지 표현가능하다.
1byte를 16진수로 표현하면 00부터 FF까지 표현가능하다. 4비트는 0부터 15까지 표현가능하기 때문이다.
비트 연산자의 종류로는 &, |, ^, ~, <<, >>, >>> 이 있다.
&는 and, | 는 or, ^는 xor, ~는 not을 의미한다.
<< 는 좌측 시프트(shift), >> 는 우측 시프트(shift), >>>는 우측 양수화 시프트라고 한다.
&, |, ^ 는 논리연산자로도 사용된다.
00000000
& 11111111
------------
00000000
두개의 바이트에 가각 00000000
과 11111111
이 저장되어 있을 떄 2개의 바이트에 대한 and(&)연산의 결과는? 각각의 자리수에 해당하는 비트끼리 and연산을 한 결과가 구해진다.
<<
는 명시된 수만큼 비트들을 전부 왼쪽으로 이동시킨다.
>>
는 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킨다.
정수형 타입을 비트로 표현했을 때, 맨 좌측의 비트를 부호화 비트라고 한다. 맨 좌측의 비트가 1이면 음수, 0이면 양수를 나타낸다.
package 자바_기본_문법;
public class BitOperatorExam1 {
public static void main(String[] args) {
int a = 4;
int b = a >> 1; // 2^1 으로 나눈다.
System.out.println(b);
int c = 4;
int d = c << 1; // 2^1 으로 곱한다.
System.out.println(d);
// 숫자 4를 1byte로 표현하면
// 00000100
// int는 4byte이기 때문에 숫자 4
// 00000000 00000000 00000000 00000100 이 된다. (3의 경우 00000011)
// 우측으로 1 시프트
// 00000000 00000000 00000000 00000010 2가된다.
}
}
>>>
는 그 결과 무조건 양수가 나온.
10000000
>>> 2 를 하게 되면 00100000
가 된다.
10000000
는 음수, 00100000
는 양수이다.
1byte에 10000000
이 저장되어 있다. 정수 값 얼마인가?
정수가 어떻게 저장되는지 알아야 한다. 너무 어려우면 건너뛰는 것도 공부 방법이다.
중괄호 안의 내용을 블록이라고 한다.
if(조건문) {
조건문이 참일 경우 실행되는 블록
}
package 자바_기본_문법;
public class IfExam1 {
public static void main(String[] args) {
int a = 5;
if(a > 4) {
System.out.println("a는 4보다 큽니다.");
}
}
}
if(조건문) {
조건문이 참일 경우 실행되는 블록
} else {
조건문이 거짓일 경우 실행되는 블록
}
a의 값을 변경하면서 실행한다.
package 자바_기본_문법;
public class IFExam2 {
public static void main(String[] args) {
int a = 3;
if(a>4) {
System.out.println("a는 4보다 큽니다.");
} else {
System.out.println("a는 4이하입니다.");
}
}
}
else if 는 여러줄 추가될 수 있다.
if(조건문1) {
조건문1이 참일 경우 실행되는 블록
} else if(조건문2) {
조건문2가 참일 경우 실행되는 블록
} else {
조건문1이나 조건문2에 해당되지 않을 경우 실행되는 블록
}
package 자바_기본_문법;
public class IfExam3 {
public static void main(String[] args) {
int score = 50;
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");
}
System.out.println("프로그램 종료");
}
}
if문장에 중괄호, 즉 블록이 없을 경우는 if문장 다음 문장만 조건에 만족할 경우 실행된다.
“hello”는 무조건 출력된다. (들여쓰기를 잘못한 안좋은 코드의 예)
package 자바_기본_문법;
public class IfExam4 {
public static void main(String[] args) {
int a = 10;
if (a > 5)
System.out.println("a는 10보다 큽니다.");
System.out.println("hello");
}
}
자바에는 항이 3개인 연산자가 하나 있다. 조건식이 참일 경우 반환값 1이 사용되고, 거짓일 경우 반환값2가 사용된다.
조건식 ? 반환값1 : 반환값2
a의 값을 10, 4 등으로 바꿔가면서 실행해보자
package 자바_기본_문법;
public class IfExam5 {
public static void main(String[] args) {
int a = 10;
int value = (a > 5) ? 20 : 30;
System.out.println(value);
}
}
switch는 제어문(control flow statments) 중에 하나이다. switch문은 경우에 따라 if문보다 가독성이 좋을 수 있다.
이론적으로는 switch문이 if문보다 속도가 빠르다고 하지만 의미가 없는 수준이다.
switch 블록 안에는 여러개의 case가 올 수 있다.
switch 블록 안에는 하나의 default가 올 수 있다
break문은 생략할 수 있다.
switch (변수) {
case 값1:
변수가 값1일때 실행된다.
break;
case 값2:
변수가 값2일 때 실행된다.
break;
...
defualt:
변수의 값이 어떤 case애도 해당하지 않을 경우 실행된다.
}
num의 값을 1,2,3,4 로 바꿔가면서 실행해보자
package 자바_기본_문법;
public class SwitchExam1 {
public static void main(String[] args) {
int num = 1;
switch (num) {
case 1:
System.out.println("1입니다.");
case 2:
System.out.println("2입니다.");
case 3:
System.out.println("3입니다.");
}
}
}
num의 값을 1,2,3,4로 바꿔가면서 실행한다.
package 자바_기본_문법;
public class SwitchExam2 {
public static void main(String[] args) {
int num = 1;
switch (num) {
case 1 :
System.out.println("1입니다.");
break;
case 2 :
System.out.println("2입니다.");
break;
case 3 :
System.out.println("3입니다.");
break;
default :
System.out.println("1,2,3이 아닙니다.");
}
}
}
변수 ch의 값을 ‘a’, ‘b’, ‘c’, ‘d’, ‘A’, ‘B’, ‘C’, ‘D’ 로 바꿔가면서 실행한다.
package 자바_기본_문법;
public class SwitchExam3 {
public static void main(String[] args) {
char ch = 'a';
switch(ch) {
case 'a' :
case 'A' :
System.out.println("A입니다.");
break;
case 'B':
case 'b':
System.out.println("B입니다.");
break;
case 'c':
case 'C':
System.out.println("C입니다.");
break;
default:
System.out.println("A,B,C가 아닙니다.");
}
}
}
str의 값을 “감자”, “고구마”, “사과”로 변경하며 실행한다.
JDK 7이상에서만 switch에서 string타입을 사용할 수 있다.
package 자바_기본_문법;
public class SwitchExam4 {
public static void main(String[] args) {
String str = "감자";
switch (str) {
case "감자":
System.out.println("감자입니다.");
break;
case "고구마:":
System.out.println("고구마입니다.");
break;
default:
System.out.println("감자와 고구마가 아닙니다.");
}
}
}
JDK 14, JDK 17에서 switch와 관련된 새로운 문법이 추가되었다. 어떤 내용이 추가되었는가?
while은 반복문(iterator statements) 중에 하나이다.
컴퓨터가 잘하는 일은 반복하면서 일을 처리하는 것이다.
while문은 탈출 조건식
이 false를 반환할 때 while문을 종료하게 된다.
변수의 초기화
while (탈출 조건식) {
탈출 조건석이 참일 경우 실행되는 코드;
변수의 증감식;
}
1부터 5까지 출력하시오.
package 자바_기본_문법;
public class WhileExam1 {
public static void main(String[] args) {
int i = 1;
while (i <= 5) {
System.out.println(i);
i++;
}
}
}
while(true) { …. } 는 무한 루프(loop, 반복문)이라고 한다. 끝없이 반복한다.
i가 11일 경우 while 블록을 빠져나간다.
package 자바_기본_문법;
public class WhileExam2 {
public static void main(String[] args) {
int i = 1;
while (true) {
// break 는 반복문을 빠져나감 continue는 '조건문'만 실행시키지 않고 반복문은 이어서 실행
if(i == 1) break;
System.out.println(i);
i++;
}
}
}
변수 뒤에 후위 증가식이 붙을 경우 변수가 사용된 이후에 값이 증가된다.
i와 10이 비교를 한 후 i가 증가한다.
package 자바_기본_문법;
public class WhileExam3 {
public static void main(String[] args) {
int i = 0;
while (i++ < 10) {
System.out.println(i);
}
}
}
while문에서 continue를 만나면, continue 이하 문장을 실행하지 않고 반복한다.
1부터 10사이에 있는 짝수만 출력하시오.
package 자바_기본_문법;
public class WhileExam4 {
public static void main(String[] args) {
int i = 0;
while (i++ < 10) {
if(i % 2 != 0)
continue;
System.out.println(i);
}
}
}
do/while 문은 탈출 조건식
이 false를 반환할 때 do / while 문을 종료하게 된다.
변수의 초기롸
do {
탈출 조건식이 참일 경우 실행되는 코드;
변수의 증감식;
} while (탈출 조건식);
1부터 10까지 정수를 출력한다.
package 자바_기본_문법;
public class DoWhileExam1 {
public static void main(String[] args) {
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 10);
}
}
do / while 문장은 무조건 한번은 실행된다.
package 자바_기본_문법;
public class DoWhileExam2 {
public static void main(String[] args) {
int i = 1;
do {
System.out.println(i);
i++;
} while (i < 1);
}
}
for문은 반복문(iteration statement) 중에 하나이다.
while문은 변수 선언, 탈출 조건식, 증감식이 3줄로 이뤄지지만, for문은 한 줄에 모두 표현한다.
for (변수의 초기화; 탈출조건식; 증감식) {
탈출 조건식이 참인 경우 실행되는 부분;
}
“*”를 10번 출력한다.
package 자바_기본_문법;
public class ForExam1 {
public static void main(String[] args) {
for(int i=0; i<10; i++) {
System.out.println("*");
}
}
}
1부터 10까지 출력한다.
package 자바_기본_문법;
public class ForExam2 {
public static void main(String[] args) {
for(int i=1; i<=10; i++) {
System.out.println(i);
}
}
}
반복문 안에 조건문이 올 수 있는 것처럼, 반복문 안에 반복문이 올 수 있다.
문자열과 더해지면 문자열이 된다.
문자열 + 정수
“hello” + 1 ——> “hello1”
문자열 + 불린
“hello” + “true” ——> “hellotrue”
문자열 + 실수
“hello” + 50.4 ——> “hello50.4”
package 자바_기본_문법;
public class StringExam {
public static void main(String[] args) {
String str1 = "hello" + 1;
String str2 = "hello" + true;
String str3 = "hello" + 50.4;
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
}
}
package 자바_기본_문법;
public class Gugudan1 {
public static void main(String[] args) {
for(int i=1; i<=9; i++) {
System.out.println("1 * "+i+" = "+(i*1));
}
}
}
package 자바_기본_문법;
public class Gugudan2 {
public static void main(String[] args) {
for(int k=1; k<=9; k++) {
for(int i=1; i<=9; i++) {
System.out.println(k+" * "+i+" = "+(k*i));
}
System.out.println();
}
}
}
break는 현재 반복문을 빠져나가는데 사용한다.
continue는 continue문 아래 부분을 실행하지 않고 다시 반복한다.
그렇다면 중첩반복문을 한번에 빠져나가려면? continie 이하를 실행하지 않고 한번에 중첩 반복문을 반복하려면 어떻게 해야할까?
이럴때 label을 사용한다.
package 자바_기본_문법;
public class LabelExam1 {
public static void main(String[] args) {
outter:
for(int i=0; i<3; i++) {
for(int k=0; k<3; k++) {
if(i==0 && k ==2)
break outter;
System.out.println(i+", "+k);
}
}
}
}
package 자바_기본_문법;
public class LabelExam2 {
public static void main(String[] args) {
outter:
for(int i=0; i<3; i++) {
for(int k=0; k<3; k++) {
if(i==0 && k==2)
continue outter;
System.out.println(i+", "+k);
}
}
}
}
Created by 송바래
✉ gihun3645@naver.com
🚩경기도, 성남시