제어문
1. 조건문 : 조건에 따라 처리하는 명령을 달리하는 문장
2. 반복문 : 일정한 조건이 충족될 때까지 동일한 명령을 반복적으로 처리하는 문장
3. 분기문 : 강제로 명령의 처리 순서를 바꾸는 문장
조건문
- if 문
- if ~ else 문
- if ~ else if ~ else 문
- switch 문
반복문
- for 문
- while 문
- do ~ while 문
분기문
- break
- continue
조건문
1. if 문
형식
if( 조건식 ) {
조건식이 참이면 실행되는 코드
}
예) Ex01
public class Ex01 {
public static void main(String[] args) {
int num = 10;
if (num > 15) {
System.out.println("숫자가 15보다 큽니다.");
}
System.out.println("이 문장은 if문 외부에 있습니다.");
}
}
int num = 10; // 정수형 변수 num에 10을 대입
if (num > 15) { // num 값이 15보다 크면
System.out.println("숫자가 15보다 큽니다."); // 결과가 참일 때 실행
}
System.out.println("이 문장은 if문 외부에 있습니다."); // 참 결과 후 실행, 참이 아닐 때 실행
형식 2 )
if( 조건식 ) {
조건식이 참이면 실행되는 코드
}else {
조건식이 거짓이면 실행되는 코드
}
예 ) Ex02
public class Ex02 {
public static void main(String[] args) {
int num = 70;
if ( num < 50) {
System.out.println("숫자가 50보다 작습니다.");
}
else {
System.out.println("숫자가 50보다 큽니다.");
}
}
}
형식 3)
if( 조건식1 ) {
조건식1이 참이면 실행되는 코드
}else if( 조건식2 ) {
조건식2이 참이면 실행되는 코드
}
...
else if( 조건식n ) {
조건식n이 참이면 실행되는 코드
} else {
조건식1 ~ 조건식n이 거짓이면 실행되는 코드
}
예)
public class Ex03 {
public static void main(String[] args) {
int num = 20;
if (num == 10) {
System.out.println("숫자가 10입니다.");
}
else if (num == 15) {
System.out.println("숫자가 15입니다.");
}
else if (num == 20) {
System.out.println("숫자가 20입니다.");
}
else {
System.out.println("숫자가 존재하지 않습니다.");
}
}
}
문자열 비교
== 비교를 위한 연산자
주소의 값을 비교.(Call By Reference)
주소의 값이란 실제 내용의 값이 아닌 자료의 위치의 값
equals() 메소드
equals() 메소드는 객체끼리 내용 비교.(Call By value)
비교대상변수.equals("비교문자열")
switch 문
형식 1 )
switch ( 연산식 또는 변수 ) {
case 값:
실행코드 ;
break;
case 값:
실행코드 ;
break;
...
case 값:
실행코드 ;
break;
default:
실행문;
}
public class Ex04 {
public static void main(String[] args) {
char grade = 'B’;
switch (grade) {
case 'A’:
System.out.println("매우 우수");
break;
case 'B’:
System.out.println("우수");
break;
case 'C’:
System.out.println("좋음");
break;
case 'D’:
System.out.println("좀 더 열심히");
break;
case 'F’:
System.out.println("미흡");
break;
default:
System.out.println("잘못된 등급");
}
}
}
형식 2)
switch ( 연산식 또는 변수 ) {
case 값 -> 실행코드 ;
case 값 -> 실행코드 ;
...
default -> 실행문;
};
# 반복문
일정 횟수만큼 코드를 반복하여 실행할 때
반복적으로 실행되는 동작을 루프(loop)라고 함
for문, whie문, do ~ while문
반복문 | 설명 | 예 |
for | 반복 횟수가 정해졌을 때 사용 | 1부터 10까지 더하기 같은 고정 반복 |
while | 조건이 참인 동안 반복 | 사용자 입력을 처리하거나 무한 루프 생성 시 |
do-while | 최소 한 번 실행 후 조건 확인 | 조건이 실행 후 결정될 때 |
for-each | 배열/컬렉션 요소를 간단히 순회할 때 | 리스트나 배열의 모든 값 처리 시 |
- break: 반복문을 강제로 종료
- continue: 현재 반복을 건너뛰고 다음 반복 실행
1. for문
for( 초기값 ; 조건식 ; 증감식 ){
실행코드
}
예)
public class Ex01 {
public static void main(String[] args) {
for (i = 1; i <= 10; i++) {
System.out.print(i + " ");
}
}
}
예)
# 중첩 for문
중첩된(for 중첩) 문은 하나 이상의 for 루프를 다른 for 루프 안에 중첩하여 사용하는 것을 말합니다. 중첩된 for 문은 복잡한 패턴을 생성하거나 다차원 배열과 같은 데이터 구조를 반복하는 데 유용합니다. 아래는 중첩된 for 문의 기본 구조입니다
for (initialization; condition; update) {
for (initialization; condition; update) {
// 내부 루프 본문
}
// 외부 루프 본문
}
내부 루프는 외부 루프의 한 반복마다 여러 번 실행됩니다. 외부 루프는 내부 루프가 모두 실행될 때까지 반복됩니다.
for (int i = 0 ; i < 3 ; i++ ) {
for( int k = 0 ; k < 2; k++ ) {
실행문
}
}
2. while문
조건식이 참이면 루프를 계속 반복하는 반복문
반복 횟수가 정해져 있지 않을 때 사용 ( 주로 무한루프 )
형식 )
while( 조건식 ) {
실행코드
}
초기값
while( 조건식 ) {
실행코드
증감식
}
무한루프
while( true ) {
실행코드
증감식
}
예)
public class Exa02 {
public static void main(String[] args) {
int i = 1;
while (i <= 10) {
System.out.print(i + " ");
i++;
}
}
}
3. do ~ while 문
조건식을 확인하기 전에 코드 블록의 코드가 한번 실행
조건에 맞지 않아도 무조건 한 번은 실행
형식 )
do {
실행코드
} while(조건식);
4. 분기문
break : 중단
continue :
특정 조건을 건너뛰고 나머지를 계속 실행하려는 경우에 사용
반복문의 블록 내부에서 for문의 증감식 또는 while문의 조건식으로 이동하는 역할
# Scanner 클래스
Scanner 클래스는 자바에서 사용자 입력을 받는 데 사용되는 유용한 클래스입니다. 이 클래스는 키보드로부터 사용자의 입력을 읽어들이는 데 사용되며, 다양한 데이터 유형의 입력을 처리할 수 있습니다. Scanner 클래스는 java.util 패키지에 포함되어 있습니다.
Scanner 클래스는 Java의 java.util 패키지에 속해 있으며, 표준 입력 스트림(Standard Input Stream)인 System.in에서 데이터를 읽어오는데 사용됩니다. 이것은 사용자가 키보드로 입력한 내용을 프로그램으로 가져올 수 있게 해줍니다.
여기서 Scanner 객체를 생성할 때 System.in을 매개변수로 전달하여, 키보드로부터의 입력을 읽을 수 있도록 합니다.
Scanner 클래스의 주요 메서드:
- next(): 공백이나 개행 문자를 기준으로 다음 토큰을 반환합니다.
- nextInt(): 다음 정수 값을 반환합니다.
- nextDouble(): 다음 double 값을 반환합니다.
- nextLine(): 다음 라인을 읽어들입니다.
- hasNext(): 다음 입력 토큰이 있는지 여부를 확인합니다.
- hasNextInt(): 다음 입력이 정수로 변환 가능한지 여부를 확인합니다.
- hasNextDouble(): 다음 입력이 double로 변환 가능한지 여부를 확인합니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// Scanner 객체 생성
Scanner scanner = new Scanner(System.in);
// 문자열 입력 받기
System.out.print("입력하세요: ");
String str = scanner.next();
System.out.println("입력값, " + str );
// 정수 입력 받기
System.out.print("숫자를 입력하세요: ");
int num = scanner.nextInt();
System.out.println("정수값 " + num );
// Scanner 닫기
scanner.close();
}
}
Scanner 클래스는 사용한 자원을 해제하고 메모리를 반환하기 위해 close() 메서드를 호출해야 합니다.
Scanner 객체는 키보드나 파일 같은 외부 리소스와 연결되어 있을 수 있습니다. 이러한 외부 리소스와의 연결을 종료하지 않으면 자원 누수가 발생할 수 있습니다.
Scanner 클래스를 사용한 후에는 close() 메서드를 호출하여 리소스를 해제
- scanner.next():
- next() 메소드는 입력 스트림에서 공백을 기준으로 다음 토큰을 읽어옵니다. 토큰은 공백을 포함하지 않는 연속된 문자열입니다.
- 예를 들어, "hello world"라는 입력이 있을 때, next()를 호출하면 "hello"만 읽어옵니다. "world"는 다음 호출에서 읽혀집니다.
- 반환값은 다음 토큰을 나타내는 문자열입니다.
- scanner.nextLine():
- nextLine() 메소드는 입력 스트림에서 현재 행의 나머지 부분을 읽어옵니다. 줄 바꿈 문자가 나올 때까지의 모든 문자를 읽어옵니다.
- 따라서 이 메소드를 호출하면 현재 행의 나머지 부분을 모두 읽어옵니다.
- 반환값은 현재 행의 나머지 부분을 나타내는 문자열입니다.
'java' 카테고리의 다른 글
[ JAVA ] class 클래스 (2) | 2024.05.31 |
---|---|
[ JAVA ] 클래스 (0) | 2024.05.17 |
[ java ] Array ( 배열 ) , 메서드 (0) | 2024.01.31 |
[ java ] 자바 프로그램 실행 , 변수와 연산자, 형변환 (1) | 2024.01.08 |
[ java ] 인텔리제이 프로그램 설치 및 설정 (0) | 2024.01.07 |