contents
자바개념정리
chapter02
명시적 형변환
chapter03
연산자
문제
chapter04
제어문
1.조건문
2.반복문
----------------------------------------------------------------------
chapter02
명시적 형변환
개념 | 응답 | ||
명시적 형변환 | 강제로 바꾸는 것 | (변환하고자하는 타입) 변수명; =>변수 앞에 (바꿀데이터 타입) |
//char --> 숫자(정수 및 실수)로 바꿀수 있다? o //숫자 --> char으로 바꿀 수 있다? x (수동형태변형) |
상수 | 고정된 변수의 값 | final 데이터 타입 상수명 = 값; | cf) 모두 대문자로 연결('_') 선언과 동시에 이루어져야함 >쓸일 거의 없음 |
<Byte>
package ch03;
public class Byte { public static void main(String[] args) { // 수동으로 형변환하기 byte aa = 65; byte a; short b; int c; long d; a = aa; b = aa; c = aa; d = aa; float e; double f; e = aa; f = aa; char g; // 정수 --> 문자로 자동변형하는 것은 허용되지 않음 g = (char) aa; System.out.println(g); } } |
<Short>
package ch03;
public class Short { public static void main(String[] args) { short aa = 65; byte a; short b; int c; long d; a = (byte) aa; b = aa; c = aa; d = aa; float e; double f; e = aa; f = aa; char g; // 정수 --> 문자로 자동변형하는 것은 허용되지 않음 g = (char) aa; System.out.println(g); } } |
<Data type>
package ch03;
public class Datatype { public static void main(String[] args) { //char --> 숫자(정수 및 실수)로 바꿀수 있다? o //숫자 --> char으로 바꿀 수 있다? x (수동형태변형) char t = 'A'; // 문자를 숫자로 자동으로 변환할수 있다면서? 그래서 숫자를 더했더니 //왜 에러가 남? // char re = t+1; 숫자를 문자에 넣음(에러) (x) // char re = (char) (t+1); //66을 수동 전환 연산은 ()할 것! (o) int re = t+1; //(o) int s = t; } } |
<형변환과 우선순위>
package ch03;
public class exam0 { public static void main(String[] args) { //형변환과 우선순위 int a =10; int result; float tt = 3.19f; result = tt+0.5f; //int result = float 왜곡: 데이터 손실때문에 안됨 //1.큰 사이즈->작은x 2.왜곡x ('='했을 때 안되는 이유) => 3.강제형변환(바꾸자하는 변수를 봄: result) ->int result = (int) // 4.변환대상지정(모호하면 안됨)->우선순위 ()지정: 먼저 실행 할 것 result = (int) tt+0.5; //3 + 0.5 => float, tt바꿈:(int)tt 먼저 연산 + 0.5 더해줌 result = (int)(tt+0.5); //3.69 -> int 형변환: 3 => 결과값을 바꿈: 연산을 먼저() =>우선순위 // a+1; // 의미 없음(+하긴 했지만 증명할 방법 없음) => 그 줄에서만 의미있음(남겨두지 않으면 쓸 수 없음: 변수저장) // =a+1; //저장은 대입기호(=)로만 함(연산자) => 순서: (1)a+1; 먼저 (2) = result = a+1; // =() =뒤에 형변환 } } |
chapter03
연산자
개념 |
응답
|
|
||||
연산자 |
특정한 연산을 수행하기 위해 사용하는 기호
|
1)변수에 담긴 데이터를 연산하기 위해 2)변수에 담긴 데이터를 비교하여 제어문 등에서 활용 |
|
|||
산술 연산자 |
기본적인 계산: +, -, *, /, %
|
char -> 문자, 숫자 +, - 사용가능 => '-' 붙으면 문자 역할 x |
cf) / : 몫, %: 값 | |||
연산자 우선순위 |
1순위: [], (), .(최우선 연산자)
8순위: = (대입연산자) cf) a++; -> 9순위 |
|||||
논리 부정 연산자
|
! (= not) | boolean: 제어문의 재료 => 판단 | ||||
비교 연산자 |
근거: 수치화
참(true), 거짓(false) 구하기 => 판단근거가 됨 |
cf) 연산 먼저 수행 한 다음 비교연산함 ex) (a+b) >= c; |
||||
등가비교
연산자 (==, !=) |
숫자 == 숫자 가능
!= (주로 숫자만 사용: 숫자만 가능하다고 생각하면 됨) |
예외) char 숫자 (o) ' ' == ' ' 문자(o) (숫자임) |
String: 숫자(x), 객체 " " == " " 문자열(x) |
|||
논리 연산자 |
여러가지 조건을 동시에 검사할 때
Boolean: true, false => 제어문 |
true: 1 false: 0 &&: x ||: + |
||||
대입 연산자 |
= += -= *= /= %= |
* = (저장) 변수 값은 대입할 때 바뀜(덮어쓰기) |
해당 라인에서 제일 마지막에 수행됨
반드시 왼쪽에 변수가 와야된다. 대입시 타입이 다르면 수동 형변환(): 캐스팅 |
1. = 는 제일 마지막 시행 2. 왼쪽편에 변수 3. 타입이 다르면 수동형변환 |
<단항 연산자 ++>
package ch03;
public class exam1 { public static void main(String[] args) { //단항 연산자 char t = 'A'; //65 int result = 10; // result = -t; //char 숫자, 문자 char x = 숫자(x) => (char) 해줘야함 숫자->문자(x) int s = 0; ++result; //11 ++result; //12 result++; //13 s = result++; //13 -> 14 System.out.println(s); //실행할 때마다 1씩 증가 13 => 담은 값 출력 System.out.println(result); //실행할 때마다 1씩 증가 14 } } |
<비교 연산자>
package ch03;
public class exam2 { public static void main(String[] args) { //비교 연산자 byte a = 10; short b = 2; int c = 5; long d = 15; //보라색 명령어 float e = 1.5f; double f = 5.7; char g = 'A'; String x = "ABC"; //검은색: 명령어x, 기본변수x, 숫자로 못바꿈, 비교할 수 없음(숫자 아니기 때문에) => 만듬: 객체, instance //숫자 ==, != 숫자 char + char+ char+ ... 일일히 문자 더하기 힘듬 -> 새로 생김 } } |
문제
비교연산자 연습
문제 1: a = 5, b = 10일 때, a > 0 && b > 0의 결과는 무엇인가요? 5 > 0 && 10 > 0 1 * 1 1 => true 문제 2: x = 20, y = 15, z = 10일 때, (x < y || y > z)의 결과는 무엇인가요? 20<15 || 15 > 10 0 + 1 1 => true 문제 3: a = 3, b = 7일 때, !(a == b)의 결과는 무엇인가요? !(3 == 7) !(0) 1 =>true 문제 4: isAdult = true, hasPermission = false일 때, isAdult && hasPermission의 결과는 무엇인가요? ture && flase 1 * 0 = 0 => false 문제 5: score = 55일 때, (score < 60 || score > 100)의 결과는 무엇인가요? 55 < 60 || 55 >100 1 + 0 1 => true 문제 6: num1 = 0, num2 = 5일 때, (num1 == 0 && num2 != 0)의 결과는 무엇인가요? (0 == 0 * 5 != 0) (1*1) 1 =>true 문제 7: isRaining = false, isSunny = true일 때, isRaining || isSunny의 결과는 무엇인가요? false + true 0 + 1 1 => true 문제 8: age = 18일 때, (age >= 18 && age <= 65)의 결과는 무엇인가요? (18 >= 18 * 18 <=65) (1 * 1) 1 => true 문제 9: input = "hello"일 때, !(input.equals("world"))의 결과는 무엇인가요? !("hello".equals("world")) !(1) => false 문제 10: a = 10, b = 20, c = 30일 때, (a + b > c && a < c)의 결과는 무엇인가요? (10+20 >30 * 10 <30) (30>30 * 10<30) (0*1) 0 = > false --------------------------------- 문제 1: a = 5, b = 10, c = 15일 때, !(a > b) && (b < c || a + b == 15)의 결과는 무엇인가요? !(5 > 10) * (10 <15 + 5+10 == 15) !(0)*(1 +15==15) 1*(1+1) //1+1 =1 ture 문제 2: x = 25, y = 30, z = 20일 때, (x >= y && y < z) || (z < x && x > 10)의 결과는 무엇인가요? (25>=30 * 30<20) + (20<25 * 25>10) (0*0)+(1*1) 0+1 1 => true 문제 3: isMember = true, hasDiscount = false, isStudent = true일 때, isMember && (hasDiscount || isStudent)의 결과는 무엇인가요? ture * (false+true) 1*(0+1) 1*1 1 = >true 문제 4: score1 = 85, score2 = 90, score3 = 75일 때, ((score1 > 80 && score2 > 80) || score3 < 80) && (score1 + score2 + score3 > 250)의 결과는 무엇인가요? ((85 >80 *90 >80) + 75 < 80) * (85+90+75>250) ((1*1)+1)*(250>250) 1*0 0 => false 문제 5: temperature = 30, isSunny = true, isHoliday = false일 때, (temperature > 25 && isSunny) || (temperature <= 25 && isHoliday)의 결과는 무엇인가요? (30 > 25 * true) + (30 <= 25 * false) (1*1) + (0*0) 1+0 1 = true 문제 6: num1 = 12, num2 = 8, num3 = 4일 때, !(num1 % 2 == 0) && (num2 > num3 || num1 == num3)의 결과는 무엇인가요? !(12%2==0) * (8>4 + 12==4) !(1)*(1+0) 0*1 0 => false 문제 7: isOpen = false, hasKey = true, isGuest = false일 때, isOpen || (hasKey && !isGuest)의 결과는 무엇인가요? false + (true * !false) 0 + (1*!0) 0+ (1*1) 0+1 1 => true 문제 8: age = 25, isEmployed = true, hasDegree = false일 때, (age >= 18 && isEmployed) || (hasDegree && age < 30)의 결과는 무엇인가요? (25 >= 18 * true) + (false * 25<30) (1*1) + (0*1) 1+0 1 = >true 문제 9: input = "java", isLearning = true, isFun = false일 때, !(input.equals("python") && isLearning) || isFun의 결과는 무엇인가요? !("java".equals("python")*true)+false !(1*1)+0 0+0 0 => false 문제 10: a = 10, b = 20, c = 5일 때, ((a + b > c && b - c < a) || (c == 5)) && (a * c > b)의 결과는 무엇인가요? ((10+20 > 5 * 20-5<10) + (5==5)) * (10*5>20) (30>5 * 15<10) +1)*(50>20) ((1*0)+1)*1 (0+1)*1 1*1 1 => true |
chapter04
제어문
개념 | 응답 | |||||
제어문 | 조건문, 반복문 |
공통: true면 내용을 실행 |
||||
조건문 | if문 | if(ture) { 내용 처음 } 실행x => 할까 말까 ex)안전: 엘리베이터 |
if( ){ } else{ 마지막 => 둘 중 하나 실행 } ex)자동차시동: on/off |
if( ) { } else if( ){ x n 중간 =>여러 개 중 하나 } else{ } |
cf) 중첩 if 문: 한번만 가능 if(ture){ if( ){ => false 사라짐(존재할 때만 사용) } }중괄호 안에서만 사용 |
//:프로그램 기본 프로세스 순서 //step 1. 재료 확보 : 변수에 데이터 저장 -> 입력 생략 => 반드시 있어야 함 //step 2. 재료 가공 : 변수에 저장된 데이터를 가공(연산자) => 생략 가능 //정수형 : int, long 실수형 : float, double 문자형: char (산술연산) //논리형: boolean (비교연산) //step 3. 제어 why? 기준(수치화된 변수(재료)): 변수값비교 선택지 고름 -> 목표달성=결과 //step 4. 결과 |
switch문 | 조건에 따라 각각 다르게 실행하도록 만들어 놓은 제어문 | switch(값){ case 값1: //실행문 break; case 값2: //실행문 break; default; //나머지 실행(쓰레기통) } |
숫자 범위 설정 안됨(x) => 정확한 값(매치) *if 재료 = boolean (true, false) 범위설정(o) |
cf) 범위설정: 논리 연산자로 묶어주면됨(switch에서는 사용안함)
|
Data 1.문자 char 2.정수: byte, short, int, long 3,실수: float, double 4.boolean 5.문자열 String |
|
반복문 | for문 | 같은 내용을 반복 | for(초기화; 조건식; 증감식){ System.out.println("조건식이 참일 때 실행되는 부분"); } |
for() => 횟수: 바뀔 수 있다 변수 값에 따라 달라짐(바뀔 수 있음) |
순서
1.초기화: 한번 수행 2.조건식: true면 반복, false면 중단하고 for문을 벗어남 3.실행부분: 참일 때 실행 4.증감식: 변수의 값 증가 또는 감소 |
false 될 때까지 2~4 반복 // 정수, 실수, 논리, 문자, 문자열 => 모두 변수처리 할 수 있음 //int, float, boolean, char, String |
1.조건문
<프로그램 기본 프로세스: 영역>
package ch04;
public class exam15 { //클래스는 구성요소 : 변수, 함수 static int x =10; public static void test() {int y = 10;} public static void main(String[] args) { //:프로그램 기본 프로세스 //step 1. 재료 확보 : 변수에 데이터 저장 -> 입력 생략 => 반드시 있어야 함 int a = 5; //-> main{} 중괄호 //step 2. 재료 가공 : 변수에 저장된 데이터를 가공(연산자) => 생략 가능 //정수형 : int, long 실수형 : float, double 문자형: char (산술연산) //논리형: boolean (비교연산) int x; //생성과 초기화 분리 (o) int x; x = 10; //step 3. 제어 why? 기준(수치화된 변수(재료)): 변수값비교 선택지 고름 -> 목표달성=결과 if(true) { //if(true): 정적 System.out.println("a는 3보다 큽니다."); // int x = 10; // (x) -> if{} 중괄호 선언 x = 10; } //step 4. 결과 System.out.println("검사가 끝났습니다."); System.out.println(x); //? 영역 안에서 선언하면 밖에서는 모름 //class 변수 선언은 가능(영역) // System.out.println(y); (x)-> 영역x //=> 영역 중요!! } } |
<switch문>
package ch04;
public class exam19 { public static void main(String[] args) { //일 년 동안 읽은 책 수에 따라 멘트를 출력합니다. int book = 2; book = book / 10; //정수형 나눗셈: 소주점 이하 버려짐 book = 0; switch (book) { case 0: //10권 미만 System.out.println("조금 더 노력하세요!"); break; case 1: //10권 이상 20권 미만 System.out.println("책 읽는 것을 즐기시는 분이네요!"); break; case 2: //20권 이상 30권 미만 System.out.println("책을 사랑하시는 분이시네요!"); break; default: //30권 이상 System.out.println("당신은 다독왕입니다!!"); } } } |
2.반복문
<반복문 변수처리>
package ch04;
public class test { // 정수, 실수, 논리, 문자, 문자열 => 모두 변수처리 할 수 있음 //int, float, boolean, char, String public static void main(String[] args) { String text = "안녕하세요!"; System.out.println("안녕하세요!"); System.out.println("안녕하세요!"); System.out.println("안녕하세요!"); System.out.println("안녕하세요!"); System.out.println("안녕하세요!"); System.out.println("안녕하세요!"); System.out.println("안녕하세요!"); System.out.println("안녕하세요!"); System.out.println("안녕하세요!"); System.out.println("안녕하세요!"); int test =10; int start = 0; for(int i = start; i <test; i++) { //for(시작값) System.out.println("안녕하세요!"); // } } } |
<반복문 5번 출력>
package ch04;
public class test2 { public static void main(String[] args) { //반복문 5번 출력 System.out.println("[변수의 값을 바꾼 반복문]"); int nums = 2; int max = 7; for (int i = nums; i < max; i++) { System.out.println("안녕하세요!"); } System.out.println("[변수의 값을 바꾸지 않은 반복문]"); for(int i = 0; i < 5; i++) { System.out.println("안녕하세요!"); } } } |
<for문 횟수>
package ch04;
public class test3 { public static void main(String[] args) { //for문 // char i = 'A'; //65 // for(int k = i; k < 75; k = k+1) { //for(시작숫자; 조건식: 멈추는 값; 증감식) // char test = (char)k; // k는 숫자 test 문자 // System.out.println(test); // } // System.out.println(""); // for(int j = 75; j < 80; j = j+1) { // char test2 = (char)(j); // System.out.println(test2); // // } int count = 1; for (int i = 1; i < 10; i = i + 3) { count++; System.out.println(i); } System.out.println(count); } } |
<for문 형변환>
package ch04;
public class test4 { public static void main(String[] args) { //for 문 // 65, 66, 67, 68, 69 String test = "ABCD9E"; System.out.println(test.length()); for (int i = 0; i < 6; i++) { char v = test.charAt(i); //위치 0 012345 0 = A if(v>64&&v<70) { System.out.println("문자입니다"); System.out.println(v); } else { System.out.println("숫자입니다"); System.out.println(v); } } } } |
실행 결과
6
문자입니다 A 문자입니다 B 문자입니다 C 문자입니다 D 숫자입니다 9 문자입니다 E |
'프로그래밍 > java' 카테고리의 다른 글
JAVA 프로그래밍 47일차 (25/1/16) (2) | 2025.01.16 |
---|---|
JAVA 프로그래밍 46일차 (25/1/15) (0) | 2025.01.15 |
JAVA 프로그래밍 44일차 (25/1/13) (0) | 2025.01.13 |
JAVA 프로그래밍 43일차 (25/1/10) (0) | 2025.01.10 |
JAVA 프로그래밍 42일차 (25/1/9) (0) | 2025.01.09 |