본문 바로가기

JAVA

240422 자바 기초, if문,for문

JDK 기능

1. compiler 역할 .java ->.class

2. JRE

3. JDB :디버깅

 

중단점 찍고 디버그 -> resume program

 

- public class Main {

- 클래스 정의

- public : 클래스 경로 외부에서 실행시킬 수 있다고 표시해 주는 접근 제어자 입니다.

- 클래스 경로 외부에서 호출 못하도록 막는 접근 제어자는 private (그 외 protected 도 있음)

- class : 객체를 만드는 클래스라고 선언

- Main : 클래스 명

- 파일명과 일치 시켜야 합니다. (다르면 알림 문구가 뜹니다.)

- 그렇게 해야 Java 컴파일러가 바이트코드 변환했을 때의 파일 확장명(.class )과 일치됩니다.

- public static void main(

- main 메서드 정의

- public : 외부에서 실행시킬 수 있다고 표시해 주는 접근 제어자입니다.

- static : Java 컴파일러가 바이트 코드로 변환할 때 미리 정의되는 메서드 표기

- 따라서 앱 실행 시 한 번만 정의되며 static 메서드 또는 변수(데이터) 끼리만 호출할 수 있습니다.

- void : 메서드의 응답 값을 정의하는 곳인데 void는 응답할 값이 없다는 정의입니다.

- int는 정수, char는 문자, string은 문자열 등

- (String[] args)

- 메서드가 시작될 때 넘겨받을 데이터들(변수들)

- String[] : 문자열 여러 개 데이터 타입

- args : 문자열 여러 개 데이터의 이름 (사용자가 정의한 값 아무거나 써도 됨)

 

int number = 10; // 1. 선언과 동시에 값을 저장공간에 저장 (=초기화)

number = 11; // 2. 선언 이후에 다른값을 저장공간에 저장

변수 : 변하는 저장공간

 

논리형 변수 : boolean

True/False 값만 저장합니다.

boolean flag = true; // 1. 논리형 변수 boolean 으로 선언 및 True 값으로 초기화

flag = false; // 2. False 값으로도 저장할 수 있습니다.

 

변수형

문자형 변수 : char

‘A’, ‘1’ 와 같은 문자 하나만 저장합니다.

char alphabet = 'A'; // 문자 하나를 저장합니다.

 

- 정수형 변수 : byte, short, int, long

- 0,1,2,99 와 같은 정수형 숫자 값을 저장합니다.

- 정수형 변수 표현 범위

 

- 실수형 변수 : float, double

- 0.123, 0.99999 와 같은 소수점 실숫값을 저장합니다.

- 실수형 변수의 표현 범위

- float (4byte) : 3.4 * -10^38 ~ 3.4 * 10^38(long 보다 큼) 범위의 숫자 저장이 가능합니다.

- double (8byte) : 1.7 * -10^308 ~ 1.7 * 10^308(long 보다 큼) 범위의 숫자 저장이 가능합니다.

 

참조형 변수

문자열 변수 : String

“Apple”, “텍스트와 같은 문장을 저장합니다.

String message = "Hello World"; // 문자열을 저장합니다.

그 외 : Object, Array, List

객체, 배열, 리스트와 같은 단일 저장공간에 담을 수 없는 값을 저장합니다.

List<int> alphabet = [0,1,2,3]; // 기본형 변수 여러개를 저장합니다.

 

래퍼 클래스(Wrapper Class)라는 말 그대로 기본형 변수를 클래스로 한번 랩핑(감싸는) 변수라고 생각하시면 됩니다.

 

// 숫자 -> 문자(형변환)

더보기

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int asciiNumber = sc.nextInt();

char ch = (char)asciiNumber; // 문자로 형변환을 해주면 숫자에 맞는 문자로 표현됩니다.

System.out.println(ch);

}

}

// 입력 97 // 출력 a

#문자->숫자(형변환)

더보기

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

char letter = sc.nextLine().charAt(0); // 첫번째 글자만 받아오기위해 charAt(0) 메서드를 사용합니다.

int asciiNumber = (int)letter; // 숫자로 형변환을 해주면 저장되어있던 아스키 숫자값으로 표현됩니다.

System.out.println(asciiNumber);

}

}

// 입력 a // 출력 97

 

- 선언 관점에서 차이점

- 문자 (char)

- 문자 한 개만 저장하며 따옴표를 사용하여 값을 지정합니다. (ex. ’A’)

char alphabet = 'A'; // 문자 하나를 저장합니다.

 

- 문자열 (String)

- 문자 여러 개를 문장 형태로 저장하며 쌍따옴표를 사용하여 범위를 지정합니다. (ex. “ABCDEFG”)

String message = "Hello World"; // 문자열을 저장합니다.

 

- 저장 관점에서 차이점

- 문자 (char)

- 문자 뒤에 \0(널문자)가 없습니다.

(1 byte만 쓰기 때문에 끝을 알아서 데이터만 저장하면 됩니다.)

- 문자열 (String)

- 문장의 끝에 \0(널문자)가 함께 저장이 됩니다.

(몇 개의 byte를 쓸지 모르기 때문에 끝을 표시해야 합니다.)

 

입력&출력

입력

Java 프로그램에서는 기본적으로 System.in 객체의 next() 명령을 사용해서 입력받습니다.

Scanner sc = new Scanner(System.in); // Scanner 객체를 new 명령어로 생성합니다.

String input = sc.next(); // sc(Scanner).next(); 를 실행하면 input 변수에 입력한 글자를 받을 수 있습니다.

 

출력

Java 프로그램에서는 기본적으로 System.out 객체의 println() 명령을 사용해서 출력합니다.

Scanner sc = new Scanner(System.in);

String input = sc.next();

 

System.out.println("입력값 : " + input); // 입력한 글자를 출력합니다.

// 실행 결과

{입력}

입력값 : {입력}

 

형변환

더보기

double doubleNumber = 10.101010;

float floatNumber = 10.1010

 

int intNumber;

intNumber = (int)doubleNumber; // double -> int 형변환

intNumber = (int)floatNumber; // float -> int 형변환

 

int intNumber = 10;

 

double doubleNumber = (double)intNumber; // int -> double 형변환

float floatNumber = (float)intNumber; // int -> float 형변환

 

ctrl + / : 주석처리

 

조건문

boolean flag = true;

if (flag) {

System.out.println("flag 값은 true 입니다."); // flag 값은 true 입니다. 출력

}

 

조건문 with else

boolean flag = false;

if (flag) {

System.out.println("flag 값은 true 입니다."); // 미출력

} else {

System.out.println("flag 값은 false 입니다."); // flag 값은 false 입니다. 출력

}

 

조건문 with else if

int number = 2;

if (number == 1) {

System.out.println("number 값은 1 입니다."); // 미출력

} else if (number == 2) {

System.out.println("number 값은 2 입니다."); // number 값은 2 입니다. 출력

} else {

System.out.println("number 값은 모르는 값입니다."); // 미출력

}

 

중첩 조건문

더보기

boolean flag = true;

int number = 2;

 

if (flag) {

if (number == 1) {

System.out.println("flag 값은 true, number 값은 1 입니다."); // 미출력

} else if (number == 2) {

System.out.println("flag 값은 true, number 값은 2 입니다."); // flag 값은 true, number 값은 2 입니다. 출력

}

} else {

if (number == 1) {

System.out.println("flag 값은 false, number 값은 1 입니다."); // 미출력

} else if (number == 2) {

System.out.println("flag 값은 false, number 값은 2 입니다."); // 미출력

}

}

 

// 조건문으로 가위바위보 만들기

더보기

 

import java.util.Objects;

import java.util.Scanner;

 

public class Main {

 

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

 

System.out.print("A 입력 : ");

String aHand = sc.nextLine(); // A 입력

 

System.out.print("B 입력 : ");

String bHand = sc.nextLine(); // B 입력

 

if (Objects.equals(aHand, "가위")) { // 값을 비교하는 Obects.equals() 메서드 사용

if (Objects.equals(bHand, "가위")) {

System.out.println("A B 는 비겼습니다."); // A B 의 입력값을 비교해서 결과 출력

} else if (Objects.equals(bHand, "바위")) {

System.out.println("B 가 이겼습니다.");

} else if (Objects.equals(bHand, "")) {

System.out.println("A 가 이겼습니다.");

} else {

System.out.println(" B 유저 값을 잘못 입력하셨습니다.");

}

} else if (Objects.equals(aHand, "바위")) {

if (Objects.equals(bHand, "가위")) {

System.out.println("A 가 이겼습니다.");

} else if (Objects.equals(bHand, "바위")) {

System.out.println("A B 는 비겼습니다.");

} else if (Objects.equals(bHand, "")) {

System.out.println("B 가 이겼습니다.");

}

} else if (Objects.equals(aHand, "")) {

if (Objects.equals(bHand, "가위")) {

System.out.println("B 가 이겼습니다.");

} else if (Objects.equals(bHand, "바위")) {

System.out.println("A 가 이겼습니다.");

} else if (Objects.equals(bHand, "")) {

System.out.println("A B 는 비겼습니다.");

}

}

 

}

}

// /출력 예시

// A 입력 : 가위

// B 입력 :

// A 가 이겼습니다.

 

switch/case

더보기

 

int month = 8;

String monthString = "";

switch (month) {

case 1: monthString = "1";

break;

case 2: monthString = "2";

break;

case 3: monthString = "3";

break;

case 4: monthString = "4";

break;

case 5: monthString = "5";

break;

case 6: monthString = "6";

break;

case 7: monthString = "7";

break;

case 8: monthString = "8";

break;

case 9: monthString = "9";

break;

case 10: monthString = "10";

break;

case 11: monthString = "11";

break;

case 12: monthString = "12";

break;

default: monthString = "알수 없음";

}

System.out.println(monthString); // 8월 출력

 

 for

for(int i=0; i < 4; i++) { // 변수 i 값은 0 ~ 3 까지 반복

System.out.println(i + "번째 출력"); // i 변수와 문자열 합치기

}

// 출력

0번째 출력

1번째 출력

2번째 출력

3번째 출력

 

 향상된 for

int[] numbers = {3,6,9,12,15};

for(int number: numbers) {

System.out.print(number + " ");

}

// 출력

3 6 9 12 15

 

만약 기존 for 문으로 구현한다면?

int[] numbers = {3,6,9,12,15};

for(int i = 0; i < numbers.length; i++) { // 배열에 .length 를 붙이면 길이값이 응답됩니다.

System.out.println(numbers[i]);

}

// 출력

3 6 9 12 15

 

while

int number = 0;

while(number < 3) {

number++;

System.out.println(number + "출력");

}

// 출력

1출력

2출력

3출력

 

do-while

int number = 4;

do {

System.out.println(number + "출력");

} while(number < 3); // 연산을 한번 수행 후 조건문 체크

// 출력

4출력

 

break 명령어

int number = 0;

while(number < 3) {

number++;

if (number == 2) {

break; // 2일때 반복 중단

}

System.out.println(number + "출력");

}

 

// 출력

1출력

 

break 명령 범위

더보기

for (int i = 0; i < 10; i++) {

System.out.println("i: " + i);

if (i == 2) {

break; // i 2일때 가장 바깥 반복문이 종료됩니다.

}

for (int j = 0; j < 10; j++) {

System.out.println("j: " + j);

if (j == 2) {

break; // j 2일때 가장 안쪽 반복문이 종료됩니다.

}

}

}

 

// 출력

i: 0 // 바깥 반복문 부터 수행 시작

j: 0 // 안쪽 반복문 1회차 수행

j: 1

j: 2 // j 2일때 안쪽 반복문 break;

i: 1 // 바깥 반복문은 아직 break; 호출이 안됬으므로 다음 반복수행

j: 0 // 안쪽 반복문 2회차 수행

j: 1

j: 2 // j 2일때 안쪽 반복문 두번째 break;

i: 2 // i 2일때 바깥 반복문도 break; 호출되어 종료

 

continue 명령

int number = 0;

while(number < 3) {

number++;

if (number == 2) {

continue; // 2일때 반복 패스

}

System.out.println(number + "출력");

}

 

// 출력

1출력

3출력

 

구구단

public class W01 {

public static void main(String[] args) {

for(int i=1;i<=9;i++) {

    for(int j=2;j<=9;j++) {

         System.out.println(i+ "곱하기"+j + "" +(i*j)+"입니다");

            }

        }

    }

}

 

선택적 구구단 생성기

Scanner sc = new Scanner(System.in);

int passNum = sc.nextInt(); // 출력제외할 구구단수 값

for (int i = 2; i <= 9; i++) {

if (i == passNum) {

continue;

}

for (int j = 2; j <= 9; j++) {

System.out.println(i + "곱하기" + j + "" + (i * j) + "입니다.");

}

}

// 입력

2

// 출력 - 입력값인 2단은 건너띄고 구구단 출력

3곱하기26입니다.

3곱하기39입니다.

3곱하기412입니다.

... 중략 ...

9곱하기872입니다.

9곱하기981입니다.

'JAVA' 카테고리의 다른 글

JAVA 계산기 만들기  (0) 2024.04.29