안녕하세요 땅카입니다

자바의 제어문인 조건문, 반복문과 분기문에 대해서 정리 시작할게요!!

 

제어문은 프로그램을 구성하는 코드가 실행될 때 코드의 처리 순서를 변경할 수 있는 문장입니다. 

명령의 흐름 처리 방법을 지정할 때 사용합니다. 

  • 조건문 : if~else, switch // 조건에 따라 처리하는 명령을 달리하는 문장
  • 반복문 : for, while, do~while // 일정한 조건이 충족될 때까지 동일한 명령을 반복적으로 처리하는 문장
  • 분기문 : break, continue, return //  강제로 명령의 처리 순서를 바꾸는 문장

여기서 퀴즈 !

분기문은 강제로 명령을 종료하는 문장일까요?

더보기

정답은 아니요! 처리 순서를 바꾸는 문장입니다

 

조건문에는 if문이 있습니다. 

if문의 조건식이 참이면 코드가 실행됩니다.

 

if~else문은 if문과 else문을 함께 사용하여 조건식의 결과에 따라 특정 코드 또는 코드 블록의 실행을 선택하는 조건입니다. 

 

if~else if문은 if~else문과 유사하지만 else문이 서로 다른 if문의 조건식과 쌍을 이루는 조건문입니다.

else if문 코드 블록 마지막에 else문의 코드 블록을 추가할 수 있습니다.

위의 조건에서 참이 나오지 않으면 아래로 내려가면서 조건을 따집니다. 

그래도 참이 나오지 않으면 else문을 실행합니다.

 

중첩 if~else문은 if문 또는 else문 코드 블록 내에 다른 if문, if~else문, if~else if문 등이 포함된 조건문입니다. 

외부 if문의 조건식이 참이면 내부 if문의 코드 블록을 실행합니다.

 

삼항 연산자는 조건식을 확인한 다음 조건이 참인지 거짓인지에 따라 값을 반환합니다. 

ex. String message = (age > 10) ? " 투표할 자격이 있습니다." : "투표할 자격이 없습니다.";

                                     조건식    ?       조건식이 참이면            :      조건식이 거짓이면

 

switch문은 if~else if문처럼 많은 선택 사항이 있고 각 선택 사항에 대해 특정 코드 또는 코드블록을 실행하는 조건문입니다.

ex. switch (연산식 또는 변수) {

                  case 값1  :

                              // 실행코드
                              break; //필수

                  case 값2  :
                              // 실행코드

                              break;

}

 

여기서 퀴즈!

할당 연산자인 ++과 --는 if문의 조건식에서 사용할 수 있을까요?

더보기

정답은 X

 

 

반복문은 일정 횟수만큼 어떤 코드를 반복하여 실행하는 제어문입니다. 

반복적으로 실행되는 동작을 루프(loop)라고합니다. 

 

for문은 특정 횟수만큼 실행해야하는 루프를 효율적으로 쓸 수 있는 반복문입니다.

작업을 반복하는 횟수를 알고 있을 때 유용합니다.

ex. for(초기화식; 조건식; 증감식) {} // 참일 때만 실행됩니다.

 

for~each문은 배열 또는 컬렉션 요소를 순회하는 데 사용하며 증가 또는 감소 연산자가 필요하지 않습니다.

ex. for(자료형 변수: 배열 또는 컬렉션) {  // 해당 배열이 끝날 때까지 코드를 실행해라

            // 반복 실행 코드

}

 

while문은 조건식이 참이면 루프를 계속 반복하는 반복문입니다. 

무한 반복을 피하기 위하여 조건식은 대개 비교 또는 논리 연산식입니다.

while문은 반복 횟수가 정해져 있지 않을 때 사용합니다.

while문 안에 증감식을 넣어서 break가 되도록 합니다.

 

do while문은 while문과 for문처럼 조건식에 의해 반복 실행된다는 점은 비슷하지만 조건식을 확인하기 전에 코드 블록의 코드가 한 번 실행된다는 점이 다릅니다. 아래에 있는 while의 조건식 동안 do가 실행됩니다. while의 조건식에 맞지 않아도 최소한 do는 1번 실행됩니다.

ex. do{

            //실행 코드

} while (조건식) ;

 

중첩 반복문은 반복문 안에 또 다른 반복문을 원하는 만큼 포함한 것입니다.

외부 루프의 첫 번째 반복이 시작된 후 내부 루프가 시작됩니다. 

순환같네요.

 

중첩 반복문으로 역삼각형을 만들어 보았습니다.

package review;
import java.util.Scanner;
public class Loop04 {
//별표로 역삼각형 만들기
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		System.out.print("길이를 입력해주세요 : "); //몇 줄을 만들고 싶느냐 였어 진짜 길이가 아니었네 ㅋㅋ
		int len = scan.nextInt();
		
		for(int i = 0; i < len; i++) {
			for(int j = 0; j < i; j++) {
				System.out.print(" ");
			}
			for(int j = 0; j < (2*len) -1 -(i*2); j++) {
				System.out.print("*");
			}
			System.out.println("");
		}
	}

}

여기서 퀴즈!

for( int x; x < 5; x--)은 맞는 문법일까요?

더보기

정답은 X!  저 조건식이면 무한 루프에 빠지게 됩니다. x++이어야 for문이 끝날 수 있어요!

 

분기문은 원할 때마다 반복문에서 벗어나거나 반복문을 시작하도록 실행 흐름을 직접 제어할 수 있는 제어문입니다.

 

break문은 원할 때마다 반복문의 실행을 중지하거나 종료할 수 있습니다.

 

continue문은 특정 조건을 건너뛰고 나머지를 계속 실행하려는 경우에 사용합니다.

반복문의 블록 내부에서 for문의 증감식 도는 while문의 조건식으로 이동하는 역할을 합니다.

 

여기서 퀴즈!

break문은 얼마나 반복해야 하는 지 알 수 없거나 특정 조건에 따라 반복문을 종료할 때 사용할까요?

더보기

정답은 O! 


북 마켓 프로젝트


연습문제

 

1. 제어문, 조건문, 반복문 ② 분기문, break, continue

2.

3.

4.

5. ①, ②

6.

7.

8.

9.

10. ① //return은 즉시 메소드를 종료시킵니다.

안녕하세요 땅카입니다

오늘도 정리하러 왔어요!

CHAPTER02 변수와 자료형

변수는 박스입니다. 데이터를 담아주죠.

변수가 컵이라면 데이터는 물이나 주스가 될 수가 있습니다.

자바에서 변수의 선언은

자료형 변수명;  
int myVar;

의 형식을 가집니다.

자세히 보자면 myVar에는 int형의 자료만 넣을 수 있는 것이죠

그리고 변수명은 메모리 주소를 대신하는 메모리 주소의 이름을 지정합니다.

자료형이 동일하면 여러개의 변수를 동시에 선언할 수 있습니다.

변수명은 생성 규칙을 따라야 오류가 나지 않습니다.

  • 변수명은 영문자(대, 소문자), 숫자, 밑줄(_), $로만 구성할 수 있다
  • 변수명은 숫자로 시작할 수 없다
  • 변수명에는 공백을 포함할 수 없다
  • 예약어를 변수명으로 사용할 수 없다

변수는 지역 변수, 정적 변수, 인스턴스 변수로 구분됩니다.

  • 지역 변수(local variable) : 메서드 내부에 선언된 변수
  • 정적 변수(static variable) : static 키워드로 정의된 클래스 변수
  • 인스턴스 변수(instance variable) : 클래스 내부에 정의되지만 메서드 내부에는 선언되지 않는 변수

상수(constant)는 변수와 마찬가지로 데이터를 저장할 수 잇는 메모리 공간이지만, 프로그램이 실행되는 동안 메모리에 저장된 데이터를 변경할 수 없고 반드시 선언과 동시에 초기화해야합니다. 상수는 final 키워드를 이용하여 선언합니다.

 

상수는 바꿀 수 없는 변수

final을 써서 상수라는 것을 알린 뒤에 자료형을 또 써줘야한다.

 

여기서 퀴즈!

변수명으로 옳지 않은 것은?

①Num1234   ②123Num   ③Num_1234  ④$num1234

 

정답

더보기

2번 변수명을 숫자로 시작할 수 없다

 

자료형

 

정수형 : byte < short < int < long

실수형 : float < double

문자형 : char (딱 문자 하나)

불리언형 : boolean (T or F)

문자열형 : String

 

* byte는 -128~127의 값을 가진다. 만약 이 값을 넘어가면 다시 -128의 값으로 돌아간다.

원형큐같네

 

* long 자료형은 초기화할 때 값의 끝에 L을 붙인다 ex. 0L; , 65465465L;

 

*float 자료형은 초기화할 때 값의 끝에 f를 붙인다. ex. 12.25f;

 

*double 자료형은 초기화할 때 값의 끝에 d를 붙인다. ex. 12345.23547d;

 

*char자료형은 문자 상수를 쓸 수 있다. 작은따옴표로 값을 묶어 표현한다. ex. 65 = 'A' != "A"

 

여기서 퀴즈!

문자열 자료형은 string으로, 문자열을 저장하는 데 사용한다. (O, X)

정답

더보기

X string이 아니라 String이다. 좀 치사한 문제

 

자바에서 출력을 하려면 print()메서드를 사용한다. 

 

메서드 설명
System.out.print() 따옴표 안의 문자열, 변수 값을 출력
System.out.println() 출력 후 커서를 다음 행의 시작 부분으로 이동
System.out.printf() c언어처럼 문자열 형식화를 제공 (아직 모르겠음)

 

두 문자열을 함께 출력하려면 + 연산자 사용하기!

이스케이프 문자 설명 이스케이프 설명
\b 백스페이스 \" "
\t \' '
\n 줄 바꿈 \\ \
\r 캐리지 리턴    

여기서 퀴즈!

"Java               Program"을 출력하려면?

정답

더보기

System.out.print(""Java               Program\"");


온라인 서점 프로젝트2

내 탭이 왜이러지?


연습문제 

01. ① 변수, 상수

      ② 지역변수, 정적변수, 인스턴스 변수

 

02.  ③  //런타임 에러는 프로그램이 실행되면서 생기는 오류, 이건 실행조차 되지 않는다

 

03. ③

 

04. ②

 

05.  ①, ④ //소수점을 사용하거나 f를 붙여야 한다

 

06. ②

 

07. ③ // 오류가 나긴하지만 저자가 원하는 답은 3인 것 같다. 

 

08. ②

 

09.

 

 

안녕하세요 땅카입니다 

보기 좋게 정리하는 게 아니라 먼저 죄송하다는 말씀을 먼저 드립니다 하핫

자바 프로그래밍 정리를 시작합니다 

 

CHAPTER01 자바 첫걸음 

1995년 썬마이크로시스템즈가 출시한 자바는 다양한 플랫폼에서 사용할 수 있는 객체지향 프로그래밍 언어이다. 

c나 c++과 비슷하지만 모든 플랫폼에 독립적이다. 

 

자바는 컴퓨터 언어에 이식성과 보안 기능을 높이기 위해 만들어졌다.

 

자바는 인터프리티드 언어(interpreted language)이다. 동시통역인 셈이다. 

(*C, C++은 컴파일된 언어, 미리 번역된 언어라고 생각하면 된다)

 

여기서 퀴즈!

자바는 C언어처럼 포인터가 있을까요~ 없을까요~?

더보기

정답은 X 자바는 포인터를 사용하지 않는다.

 자바같은 고급 프로그래밍 언어들은 기계어로 바꿔줘야하는데 이런 기능은 자바 개발 키트(Java Development Kit, JDK), 자바 런타임 환경(Java Runtime Environment, JRE), 자바 가상 머신(JVM) 내에서 발생한다.

 

자바 개발키트 (JDK) > 자바 런타임 환경(JRE) > 자바 가상 머신(JVM) 

의 관계를 가진다.

 

개발 키트안에 런타임있고 런타임 안에 가상 머신이 있다.

 

자바 개발 키트는 정말 개발을 위한 소프트웨어 개발 환경이다. 컴파일러와 자바 앱 실행기, 애플리뷰어가 있다. 컴파일러는 자바로 작성된 코드를 바이트코드로 변환한다.

 

자바 런타임 환경은 다른 소프트웨어를 실행하도록 설계된 소프트웨어이다. 이 안에 런타임 라이브러리, 클래스 로더, JVM이 포함된다. 자바 프로그램을 실행하려면 JRE가 필요하다. 프로그래머가 아니면 JDK를 설치하지 않아도 된다. JRE만 있으면 다 돌아가니까. 대신 개발은 못함.

 

자바 가상 머신은 자바 코드 또는 앱을 구동하기 위한 런타임 환경을 제공하는 엔진이다. 자바 바이트 코드를 기계어로 변환한다. 이 JVM이 있음으로서 플랫폼 독립적인 자바 소스 코드 실행 방법을 제공한다. 자바 소스 코드를 저수준 기계어로 변환하는 JIT 컴파일러와 함께 제공된다. 

 

자바가 돌아가는 과정은 아래와 같다.

① .java 파일(소스파일)을 만든다

② javac.exe 명령어로 .java 파일을 자바 컴파일러가 컴파일한다 

③ 디스크에 바이트코드로 .class 실행 파일이 생성된다 (* 기계어로 변환되기 전까지 class 파일인거임)

④ java.exe 명령어로 바이트 코드를 기계어로 변환하여 JVM이 있는 모든 플랫폼에서 실행이 가능하다

 

여기서 퀴즈!

1. JVM은 무엇의 일부인가?

2. JVM은 런타임 환경을 제공하는 엔진이 맞는가?

3. JVM은 자바 소스 코드를 어떤 수준의 기계어로 변환하는가?

4. JVM은 자바를플랫폼 독립적으로 만드는가?

더보기

1. JRE의 일부다. JRE는 자바 런타임 환경의 준말이다

2. 맞다

3. 저수준의 기계어로 변환한다

4. 맞다 

여기서 퀴즈!

1. 자바 코드를 작성하려면 자바 개발도구인 JDK가 반드시 설치되어 있어야 한다 (O, X)

2. 자바 코드를 작성하고 이를 컴파일하여 오류를 검사하고 실행 결과를 확인할 수 있는 통합 개발 환경으로 이클립스를 사용한다. (O, X)

3. 자바 설치위치는 반드시 C:\Program Files\java 폴더여야 한다. (O, X)

4. java -version 명령어로 JDK의 버전을 확인할 수 있다. (O, X)

더보기

1. O

2. O

3. X 그냥 내가 정할 수 있음

4. O


첫 클래스 생성하기

F11을 누르면 콘솔창에 코드가 돌아간다(디버그)

 

 

 

자바 프로그램은 하나 이상의 클래스로 구성된다. 

소스파일명 = 클래스명 이어야한다 

 

소스파일은 

패키지 > 클래스 > 메서드 > 처리문(실행문)

의 구조를 가진다

 

패키지는 서로 관련된 클래스의 모음

클래스는 객체지향 언어에서 프로그램을 개발하는 단위

메서드는 수행할 작업을 나열한 코드의 모음, 꼭 하나는 있어야 한다

처리문은 작업을 지시하는 변수 선언, 값 저장, 메서드 호출 등의 코드

 

예약어들을 keyword라고 한다.

얘네들은 오류가 나기 때문에 내가 함부로 똑같이 못쓴다. 

 

static은 클래스의 객체가 존재하지 않더라도 메서드에 엑세스하고 사용할 수 있음을 의미하는 예약된 키워드

void는 메서드에서 아무것도 반환되지 않음을 선언. 메서드는 모든 기본 요소 또는 개체를 반환할 수 있다.

*어렵군!

 

Sytem.out.println()은 항상 큰따옴표를 사용해야한다.

 

여기서 퀴즈!

주석은 실제로 프로그램의 일부로 컴파일 되는가?

더보기

정답 X! 되면 큰 일이지~


온라인 서점 프로젝트 1

public static void main(String[] args){} 에서 main이 메서드이다 

 

.java 파일을 찾고 싶으면 workspace를 검색해서 들어가면 된다.

만약 제출하고 싶은 자바 파일이 있으면 workspace 내부에 원하는 클래스 네임 폴더에 들어가서 찾으면 된다.


연습문제

01. ① 객체지향 ② JRE, JRE, JVM

 

02. ①

 

03. ③

 

04. ④

 

05. ②

 

06. System.out.print or System.out.println

 

07. ①

 

08. ① //   ② /**/

 

09. Welcom to Java객체지향 프로그래밍 언어 (개행되지 않는다)

 

10.

Welcom to Java

객체지향 프로그래밍 언어

 

 

 

 

 

 

+ Recent posts