Backend
home

2024. 7. 10

조건문

•
실습 (if ~ else 문)
package condition; public class IfPractice { public static void main(String[] args) { int score = (int) (Math.random() * 30) + 71; // 70 ~ 100까지의 숫자 중 랜덤숫자 반환 System.out.println("점수 : " + score); String grade = "F"; // 중첩 if를 이용하여 문제를 풀 것. // 바깥 if : 90점 이상은 A, 80점 이상은 B, 70점 이상은 C 등급을 부여한다. // 중첩 if : 95점, 85점, 75점을 기준으로 등급에 +를 붙인다. if (score >= 90) { grade = "A"; if (score >= 95) { grade = "A+"; } } else if (score >= 80) { grade = "B"; if (score >= 85) { grade = "B+"; } } else if (score >= 70) { grade = "C"; if (score >= 75) { grade = "C+"; } } System.out.println("학점 : " + grade); } }
Java
복사
•
실습 (switch ~ case)
package condition; public class SwitchExample { public static void main(String[] args) { String id = "990101-1234567"; int genderNum = Integer.parseInt(id.substring(7, 8)); int genderNum2 = id.charAt(7) - '0'; System.out.println(genderNum); System.out.println(genderNum2); switch (genderNum % 2) { case 0: System.out.println("여성입니다."); break; case 1: System.out.println("남성입니다."); break; } } }
Java
복사
•
실습 - 개선된 switch문 (Java 12부터 가능)
package condition; import java.util.Scanner; public class SwitchExample3 { public static void main(String[] args) { // char grade = (char) ((Math.random() * 10) + 'A'); Scanner sc = new Scanner(System.in); System.out.print("등급을 입력하세요: "); char grade = sc.nextLine().charAt(0); System.out.println("등급: " + grade); switch (grade) { case 'A', 'a' -> { System.out.println("훌륭합니다!"); } case 'B', 'b' -> { System.out.println("좋습니다!"); } case 'C', 'c' -> { System.out.println("나쁘지 않습니다!"); } case 'D', 'd' -> { System.out.println("조금 아쉽습니다!"); } case 'E', 'e' -> { System.out.println("나쁩니다!"); } case 'F', 'f' -> { System.out.println("실패했습니다!"); } default -> System.out.println("잘못된 등급입니다!"); } } }
Java
복사
•
개선된 switch 문
◦
스위치된 값을 변수에 바로 대입할 수 있다.
◦
단일 값일 경우 화살표 오른쪽에 바로 값을 기술하면 되고, 중괄호를 사용할 경우에는 yield 키워드를 통해 값을 지정하면 된다.
◦
yield 키워드를 사용할 경우 default가 반드시 존재해야 한다.
◦
코드
package condition; import java.util.Scanner; public class SwitchExample3 { public static void main(String[] args) { // char grade = (char) ((Math.random() * 10) + 'A'); Scanner sc = new Scanner(System.in); System.out.print("등급을 입력하세요: "); char grade = sc.nextLine().charAt(0); System.out.println("등급: " + grade); int score = switch(grade) { case 'A', 'a' -> 100; case 'B', 'b' -> 90; case 'C', 'c' -> 80; case 'D', 'd' -> 70; case 'E', 'e' -> { yield 60; } default -> { yield 0; } }; System.out.println("score: " + score); } }
Java
복사

반복문

•
for문
package loop; public class ForExample { public static void main(String[] args) { // System.out.println("안녕하세요"); for (int i = 0; i < 10; i++) { System.out.println("안녕하세요"); } System.out.println("=======1======"); for (int i = 1; i <= 10; i++) { System.out.println("안녕하세요"); } System.out.println("=======2======"); for (int i = 1; i < 11; i++) { System.out.println("안녕하세요"); } System.out.println("=======3======"); for (int i = 10; i > 0; i--) { System.out.println("안녕하세요"); } System.out.println("=======4======"); for (int i = 10; i >= 1; i--) { System.out.println("안녕하세요"); } } }
Java
복사
•
삼각수
package loop; public class ForExample2 { public static void main(String[] args) { // 삼각수 개념, 변수 두 개 사용 가능 for (int num = 1, tNum = 1; num <= 5; tNum += ++num) { System.out.println("숫자 : " + num + ", 삼각수 : " + tNum); } } }
Java
복사
•
구구단
package loop; public class ForPractice { public static void main(String[] args) { for (int i = 2; i < 10; i++) { System.out.println(); System.out.println(i + "단"); for (int j = 1; j < 10; j++) { System.out.println(i + " x " + j + " = " + i * j); } } } }
Java
복사
•
while문
package loop; import java.util.Scanner; public class WhileExample3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int speed = 0; while (true) { System.out.println("---".repeat(8)); System.out.println("1. 증속 | 2. 감속 | 3. 중지"); System.out.println("---".repeat(8)); System.out.print("선택 : "); int num = sc.nextInt(); if (num == 1) { speed++; System.out.println("현재 속도 = " + speed); } else if (num == 2) { speed--; System.out.println("현재 속도 = " + speed); } else if (num == 3) { break; } else if (num < 0){ System.out.println("속도는 음수가 아닙니다."); } } System.out.println("프로그램 종료"); } }
Java
복사
•
do - while 문
package loop; import java.util.Scanner; public class DoWhileExample { public static void main(String[] args) { System.out.println("메시지를 입력하세요."); System.out.println("프로그램을 종료하려면 q를 입력하세요."); Scanner sc = new Scanner(System.in); String inputStr; do { System.out.print("입력: "); inputStr = sc.nextLine(); System.out.println(inputStr + " 을 입력하셨습니다."); } while (!inputStr.equals("q")); System.out.println("프로그램 종료"); } }
Java
복사
•
break문
package loop; public class BreakExample { public static void main(String[] args) { System.out.println("주사위가 6이 나오면 프로그램을 종료합니다."); while (true) { System.out.println("주사위를 굴립니다."); int num = (int) (Math.random() * 6) + 1; System.out.println(num); if (num == 6) { System.out.println("6이 나왔습니다."); break; } } System.out.println("프로그램 종료"); } }
Java
복사
•
break문 - 중첩 반복문에서 한 번에 빠져나오는 방법
package loop; // for 문 옆에 다음과 같이 작성 public class BreakExample3 { public static void main(String[] args) { Outter: for (char upper = 'A'; upper <= 'Z'; upper++) { for (char lower = 'a'; lower < 'z'; lower++) { System.out.println(upper + " - " + lower); if (lower == 'c') { break Outter; } } } } }
Java
복사

실습

•
실습 1 - 1부터 20까지의 2의 배수, 3의 배수가 아닌 수들의 합 출력
package com.statement.condition; public class Practice1 { public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 20; i++) { if ((i % 2 != 0) && (i % 3 != 0)) { sum += i; } } System.out.println(sum); } }
Java
복사
•
실습 2 - for문과 동일한 while문 구현
package com.statement.condition; public class Practice2 { public static void main(String[] args) { // for(int i = 0; i <= 10; i++) { // for (int j = 0; j <= i; j++) { // System.out.print("*"); // } // System.out.println(); // } int i = 0; while (i <= 10) { int j = 0; while (j <= i) { System.out.print("*"); j++; } System.out.println(); i++; } } }
Java
복사
•
실습 3 - 두 수를 더해 6이 나오는 경우의 수 출력
package com.statement.condition; public class Practice3 { public static void main(String[] args) { int[] box1 = {1, 2, 3, 4, 5, 6}; int[] box2 = {1, 2, 3, 4, 5, 6}; int count = 0; for (int k : box1) { for (int i : box2) { if (k + i == 6) { count += 1; } } } System.out.println(count); } }
Java
복사
•
실습 4 - 세 개의 주사위를 던졌을때,눈의 곱이 3의 배수인 값을 출력하는 프로그램
package com.statement.condition; public class Practice4 { public static void main(String[] args) { for (int i = 1; i <= 6; i++) { for (int j = 1; j <= 6; j++) { for (int k = 1; k <= 6; k++) { if (i % 3 == 0 || j % 3 == 0 || k % 3 == 0) { System.out.println(i + "*" + j + "*" + k + " = " + i * j * k); break; } } } } } }
Java
복사
•
실습 5 - 1부터 100까지 더하는 프로그램 (Scanner로 1자리 정수형 데이터 입력 받은 수의 배수만 더하기)
package com.statement.condition; import java.util.Scanner; public class Practice5 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("한 자리 정수 입력 : "); int inputNum = sc.nextInt(); int sum = 0; for (int i = 1; i <= 100; i++) { if (i % inputNum == 0) { sum += i; } } System.out.println(sum); } }
Java
복사
•
실습 6 - 1부터 100까지 반복하면서 3의 배수는 three, 5의 배수는 five, 7의 배수는 seven 값을 출력
package com.statement.condition; public class Practice6 { public static void main(String[] args) { for (int i = 1; i <= 100; i++) { String result = i + "" ; if (i % 3 == 0) { result += " three"; } if (i % 5 == 0) { result += " five"; } if (i % 7 == 0) { result += " seven"; } System.out.println(result); } } }
Java
복사
•
실습 7
package com.statement.condition; import java.util.Scanner; public class Practice7 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("정수를 입력하세요 : "); int num = sc.nextInt(); while (num < 0 || num == 0) { System.out.println("다시 입력하세요 : "); num = sc.nextInt(); } int sum = 0; for (int i = 1; i <= num; i++) { sum += i; } System.out.println(sum); } }
Java
복사

참조 타입

•
Java의 데이터 타입은 크게 기본 타입(Primitive Type)과 참조 타입(Reference Type) 으로 분류된다.
◦
참조 타입이란 객체의 메모리 주소를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입이 있다.
◦
참조 타입으로 선언된 변수는 객체가 생성된 메모리 주소를 저장한다.
◦
변수들은 모두 Stack 이라는 메모리 영역에 생성된다.
•
메소드 영역:
◦
바이트코드 파일 내용이 저장되는 영역
▪
정적 필드, 상수, 메소드 코드, 생성자 코드 등이 저장된다.
•
힙 영역:
◦
객체가 생성되는 영역
▪
객체의 메모리 주소는 메소드 영역과 스택 영역에서 참조된다.
◦
스택 영역:
▪
메소드 호출할 때마다 생성되는 프레임이 저장되는 영역
•
프레임 내부의 변수 스택에 변수가 생성되고 제거된다.
•
실습
√package com.reference; public class ReferenceExample { public static void main(String[] args) { int[] arr1; int[] arr2; int[] arr3; int[] arr4 = {1, 2, 3}; arr1 = new int[] {1, 2, 3}; arr2 = new int[] {1, 2, 3}; arr3 = arr2; System.out.println(arr1); System.out.println(arr2); System.out.println(arr3); System.out.println(arr4); System.out.println(arr1 == arr2); System.out.println(arr2 == arr3); System.out.println(arr1 == arr3); System.out.println(arr3 == arr4); System.out.println(arr1 == arr4); System.out.println(arr2 == arr4); System.out.println("==============="); System.out.println(arr1.equals(arr2)); System.out.println(arr1.equals(arr3)); System.out.println(arr1.equals(arr4)); System.out.println(arr2.equals(arr3)); System.out.println(arr2.equals(arr4)); System.out.println(arr3.equals(arr4)); } }
Java
복사
package com.reference; public class ReferenceExample2 { public static void main(String[] args) { String name = "minsung"; String noName = null; // 참조 데이터 타입이여도 null과 비교할 때는 비교 연산자로 비교가 가능하다. System.out.println(name == noName); System.out.println(name != noName); // 참조 데이터 타입에서 가장 많이 발생하는 Exception은 NullPointerException이다. // null인 상태에서 접근할 때 발생한다. System.out.println(noName.charAt(0)); } }
Java
복사

String

•
실습
package com.reference.string; public class StringExample { public static void main(String[] args) { String subject = "자바 프로그래밍"; char var = subject.charAt(3); System.out.println(var); } } // ==================================================== public class StringExample { public static void main(String[] args) { String subject = "자바 프로그래밍"; char var = subject.charAt(3); int len = subject.length(); System.out.println(var); System.out.println(len); for (int i = 0; i < subject.length(); i++) { System.out.println(subject.charAt(i)); } } }
Java
복사
package com.reference.string; import java.util.Scanner; public class StringPractice { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("입력한 메시지를 한 글자씩 출력합니다."); System.out.print("메시지를 입력하세요 : "); String msg = sc.nextLine(); for (int i = 0; i < msg.length(); i++) { char var = msg.charAt(i); System.out.println(var); } } }
Java
복사
•
replace
public class StringExample2 { public static void main(String[] args) { String subject = "자바 프로그래밍 : 자바라는 언어를 배웁니다." ; String subject2 = subject.replace("자바", "Java"); // String subject2 = subject.replaceFirst("자바", "Java"); System.out.println(subject); System.out.println(subject2); } }
Java
복사
•
substring
public class StringExample2 { public static void main(String[] args) { String subject = "자바 프로그래밍 : 자바라는 언어를 배웁니다." ; String subject2 = subject.replace("자바", "Java"); // String subject2 = subject.replaceFirst("자바", "Java"); System.out.println(subject); System.out.println(subject2); } } // ======================================================================= package com.reference.string; public class StringExample3 { public static void main(String[] args) { String address = "hms@java.co.kr"; String userId = address.substring(0, 3); String companyName = address.substring(4, 8); String domainAddr = address.substring(4); System.out.println("userId: " + userId); System.out.println("companyName: " + companyName); System.out.println("domainAddr: " + domainAddr); } }
Java
복사
•
indexOf
public class StringExample4 { public static void main(String[] args) { String lyrics = "떳다 떳다 비행기 날아라 날아라"; int flyIndex = lyrics.indexOf("날아라"); System.out.println(flyIndex + "번째 글자: " + lyrics.charAt(flyIndex)); int highIndex = lyrics.indexOf("높이"); if (highIndex < 0) { System.out.println("없는 글자입니다."); } } }
Java
복사
•
contains
package com.reference.string; import java.util.Scanner; public class StringExample5 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("책 제목을 입력하세요: "); String title = sc.nextLine(); if (title.contains("자바") || title.contains("java") || title.contains("Java")) { System.out.println("Java와 관련된 책이군요."); } else { System.out.println("Java와 관련없는 책이군요."); } } }
Java
복사
•
split
public class StringExample6 { public static void main(String[] args) { String rainbow = "빨,주,노,초,파,남,보"; String[] rainbowArr = rainbow.split(","); // System.out.println(rainbowArr[0]); // System.out.println(rainbowArr[1]); // System.out.println(rainbowArr[2]); // System.out.println(rainbowArr[3]); // System.out.println(rainbowArr[4]); // System.out.println(rainbowArr[5]); // System.out.println(rainbowArr[6]); for (int i = 0; i < rainbowArr.length; i++) { System.out.println(rainbowArr[i]); } } }
Java
복사
•
문자열 개념 종합 실습
package com.reference.string; import java.util.Scanner; public class StringPractice2 { public static void main(String[] args) { // Scanner로 주민등록번호를 입력받아라 (991212-2001234) // 만약 자릿수가 맞지 않으면, 계속 입력받아라 // 자리수가 잘 맞다면, 태어난 월이 3~5월이면 "봄", 6~8월이면 "여름", 9~11월이면 "가을" 12~2월이면 "겨울" // 성별도 같이 출력하라 // 연도도 같이 출력하라 (00 ~ 24는 2000~2024, 나머지는 19XX) Scanner sc = new Scanner(System.in); while (true) { String id = sc.nextLine(); String season = ""; String gender = ""; String resultYear; int year = Integer.parseInt(id.substring(0, 2)); while (id.length() != 14) { System.out.println("다시 입력하세요: "); id = sc.nextLine(); } if (id.charAt(7) == '1') { gender = "남자"; } else if (id.charAt(7) == '2') { gender = "여자"; } switch (id.substring(2, 4)) { case "03", "04", "05" -> season = "봄"; case "06", "07", "08" -> season = "여름"; case "09", "10", "11" -> season = "가을"; case "12", "01", "02" -> season = "겨울"; } if (year >= 0 && year <= 24) { if (year == 0) { resultYear = "20" + "00"; } else { resultYear = "20" + year; } } else { resultYear = "19" + year; } System.out.println(resultYear + " - " + season + " - " + gender); break; } } }
Java
복사