복습 순서 | 잘 안되는 부분 |
ch02 >ConstantTest.java TypeConversion.java ch03 > MainTest1,2,7,3,4,5.java ShortCircuitTest.java MainTest6.java OperaterEx1.java |
강제 형변환: 오른쪽에서 왼쪽 읽기 관계, 논리 연산자는 예약어 boolean을 쓰는 것 |
상수 예제
package ch02;
public class ConstantTest {
// 메인 함수 (코드의 시작점)
public static void main(String[] args) {
// 상수(constant)
final int MAX_NUM = 12; // 상수를 선언과 초기화를 동시에
final int MIN_NUM; // 상수선언
MIN_NUM = 1;
System.out.println(MAX_NUM);
System.out.println(MIN_NUM);
// MAX_NUM = 100;
// 상수에 한번 초기화된 공간에는 값을 변경할 수 없다.
final int MY_COUNT = 100;
// 1.위에서 상수는 어디를 말하는 걸까요?
// MY_COUNT
// 2. 예약어는 어디 어디를 말하는 건가요?
// final, int
// 3. 100은 무엇인가요?
// 리터럴,값
}// end of main
}// end of class
데이터 형변환
package ch02;
public class TypeConversion {
// 메인함수_코드의 시작점
public static void main(String[] args) {
// 데이터의 형변환
//int 자료형을 double로 변경하거나
//double 자료형을 int로 변경하는 것을 말한다.
int iNum1 = 100;
System.out.println(iNum1);
//자동 형변환
double dNum1 = iNum1;
System.out.println(dNum1);
//강제 형변환
double dNumber = 1.12345;
// int iNumber = dNumber;
//int는 4byte double은 8byte
//작은 것에서 큰걸 담으려니까 에러
//개발자가 컴파일럭야 괜찮으니깐 그냥 강제로 넣어
int iNumber = (int)dNumber;
System.out.println(iNumber);
//연습
double aValue;
int bValue;
aValue = 0.5;
bValue = (int)10.1;
System.out.println(bValue);
}// end of main
}// end of class
대입연산자
package ch03;
//1
public class MainTest1 {
// 메인함수_코드의 시작점
public static void main(String[] args) {
// 대입 연산자( = ) 오른쪽에서 왼쪽으로 대입하기
//10은 number
int number = 10;
// = (수학기호와 달리 변수나 값을 대입하는 연산자 입니다.)
// 연산에 방향은 오른쪽에서 왼쪽으로 연산이 됩니다.
int number2 = number;
// 변수에 변수를 대입할 수도 있습니다.
System.out.println(number);
System.out.println(number2);
System.out.println("=================");
// 부호 연산자(+,-)
// 부호를 변경하는 연산자입니다.
// 단 변수에 들어 있는 실제 값을 변경한 상태는 아닙니다.
System.out.println(-number);
System.out.println("number에 현재 값:"+ number);
number = -number;
System.out.println(number);
//변수에 실제 값을 변경하려면
//대입 연산자를 함께 사용해야 한다.
}// end of main
}// end of class
산술연산자
package ch03;
//2
public class MainTest2 {
// 메인함수_코드 시작점
public static void main(String[] args) {
// 산술 연산자 연습(+ - * / %)
int number1 = 5 + 3;
int number2 = 5 - 3;
int number3 = 5 * 3;
int number4 = 5 / 3;
int number5 = 5 % 3;
System.out.println(number1);
System.out.println(number2);
System.out.println(number3);
System.out.println(number4);
System.out.println(number5);
System.out.println("=============");
// 문제
// 1. (12+3)/3 값을 화면에 출력해보세요.
// 단, 변수를 만들어서 담고 출력해주세요
int number6 = (12 + 3) / 3;
System.out.println(number6);
// 2. (25%2)값을 화면에 출력해 보세요.
// 단, 변수 사용 없이 바로 화면에 출력해주세요.
System.out.println(25 % 2);
}// end of main
}// end of class
복합대입연산자
package ch03;
//3
public class MainTest7 {
// 메인함수 _ 코드 시작
public static void main(String[] args) {
// 복합 대입 연산자 (+=, -=, *=, /=, %=)
// 대입 연산자와 다른 연산자가 함께 사용
int num1 = 1;
// num1 = num1 + 10;
// System.out.println(num1);
num1 += 10;
System.out.println(num1);
int num2 = 1;
// num2 = num2-10;
// 복합 대입 연산자로 변경
num2 -= 10;
System.out.println(num2);
// num2 변수에 값이 현재 -9이다.
// num2 변수에 곱하기 2를 해서 num2 변수 결과값을 담아 주세요
// 단, 복합 대입 연산자를 사용
num2 *= 2;
System.out.println(num2);
num2 = num2 * 2;
// num2 변수에 나누기 2를 해서 num2 변수 결과값을 담아 주세요
// 단, 복합 대입 연산자를 사용
num2 /= 2;
System.out.println(num2);
num2 = num2 / 2;
// num2 변수에 나머지 연산자 2를 해서 num2 변수 결과값을 담아 주세요
// 단, 복합 대입 연산자를 사용
num2 %= 2;
System.out.println(num2);
num2 = num2 % 2;
}// end of main
}// end of class
증감, 감소 연산자
package ch03;
//4
public class MainTest3 {
//메인함수_코드 시작
public static void main(String[] args) {
//증감, 감소 연산자
//++, --
int num1 = 1;
num1 ++;
System.out.println(num1);
int num2 = 1;
num2--;
System.out.println(num2);
//1. 증감 연산자가 뒤에 올 경우
int num3 = 10;
int num4;
// num4 = num3++;
num4 = ++num3;
System.out.println(num4);
System.out.println(num3);
int num5 = 100;
int num6;
//1.num5를 num6 변수에 담아 주세요
// 단 증감 연산자를 사용해서 num6변수를 101로 만들어서 출력
num6 = ++num5;
System.out.println(num6);
//2.num5를 num6 변수에 담아 주세요
// 단 증감 연산자를 사용해서 num6변수를 101로 만들어서 출력
num6 = num5++;
System.out.println(num6);
System.out.println(num5);
//결론 : 증감 연산자는 변수(공간)에 있는 값을 1 증가 시킨다.
//단 앞에 있을 때와 뒤에 있을 때 연산에 순서가 다르다.
}//end of main
}//end of class
관계연산자
package ch03;
//5
public class MainTest4 {
//메인함수 코드시작
public static void main(String[] args) {
//관계연산자
//관찰에 결과가 참, 거짓인지 판별할 때 사용
//결과값은 오직 true, false이다.
int num1 = 5;
int num2 = 3;
boolean value1 = (num1 < num2);
System.out.println(value1);
boolean value2 = (num1 > num2);
System.out.println(value2);
boolean value3 = (num1 == num2);
System.out.println(value3);
boolean value4 = (num1 != num2);
System.out.println(value4);
}//end of main
}//end of class
논리연산자
package ch03;
//6
public class MainTest5 {
// 메인함수 코드의 시작
public static void main(String[] args) {
// 논리 연산자 (&&엠퍼센트, ||버티컬바, !)
// 관계연산자와 혼합하여 많이 사용됨
// 연산에 결과가 true, false
int num1 = 10;
int num2 = 20;
// 1.논리곱 (&&)
boolean flag1 = (num1 > 0) && (num2 > 0); // true
boolean flag2 = (num1 > 0) && (num2 < 0); // false
//둘 다 true(참)일때, true를 반환
// 2. 논리합(||)
boolean flag3 = (num1 < 0) || (num2 > 0); // true
boolean flag4 = (num1 > 0) || (num2 > 0); // true
//둘 중 하나라도 true이면, 연산의 결과는 true를 반환한다.
System.out.println(flag4);
System.out.println("----------------");
//num1 = 10
boolean flag5 = (num1 < 0) && (num2 > 0);
boolean flag6 = (num1 > 0) || (num2 > 0);
System.out.println(flag5);
System.out.println(flag6);
//앞의 식만 보고 true, false 바로 구별
}// end of main
}// end of class
앞의 식만 보고 true, false 바로 구별
package ch03;
//7
public class ShortCircuitTest {
public static void main(String[] args) {
//
int num1 = 5;
int i = 0;
boolean value = ((num1 = num1 + 10 ) < 10) && ( ( i = i + 2 ) < 10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);
value = ((num1 = num1 + 10 ) < 10) || ( ( i = i + 2 ) < 10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);
}
}
삼항연산자
package ch03;
//8
import java.util.Scanner;
public class MainTest6 {
//메인함수 코드시작
public static void main(String[] args) {
//삼항 연산자
//조건식 ? 결과1 : 결과2;
int num1 = (5 > 3)? 10 : 20;
System.out.println(num1);
int num2 = (5 < 3)? 10 : 20;
System.out.println(num2);
//JDK가 만들어진 도구를 이용해 봅시다.
int max;
System.out.println("입력 받은 두 수 중 큰 수를 출력하세요.");
Scanner scanner = new Scanner(System.in);
//ctrl + shift + o
//ctrl + 마우스로 Scanner 클릭, ctrl + w 종료
System.out.println("입력1 : ");
int x = scanner.nextInt();
System.out.println("입력2 :");
int y = scanner.nextInt();
//삼항연산자 식
max = (x > y)? x:y;
System.out.println("큰 숫자는 : "+ max + " 입니다.");
}//end of main
}//end of class
연습문제
package ch03;
//9
public class OperaterEx1 {
public static void main(String[] args) {
int i = 10;
double d = 20.5;
// 1
// 두 수를 덧셈 연산 하여 result1 변수에 담고
// 결과값 30.5를 출력 하세요.
double result1 = i + d;
System.out.println(result1);
// 2
// result1 변수를 정수형으로 강제 형 변환 해서 출력하세요
//단 변수에 저장하지 말고 수행해주세요
System.out.println((int)result1);
// 3
// i 변수의 값을 -1을 뺀 후 출력하세요
// 단, 단항 연산자 사용
// i -= 1;
i--;
System.out.println(i);
// 4
// d 변수에 값을 -20.5로 출력 하세요
// 단, d 변수에 값을 변경하지 마세요(부호연산자를 정확히 알고 있는가?)
System.out.println(-d);
//System.out.println(d);
//d = -d;
// 5
// 변수 i와 d, 관계 연산자를 사용해서 result2 변수를
// 선언하고 변수에 true 값이 담기도록 식을 만들고
// 출력하세요
boolean result2 = (i<d) ;
System.out.println(result2);
int num1 = 10;
int num2 = 30;
// 6
// 변수 result3을 선언하고
// num1과 num2 변수가 숫자 50보다 큰지 논리 연산자를
//사용해서 결과를 담고 출력하세요
boolean result3 = (num1 > 50) && (num2 > 50);
System.out.println(result3);
// 7
// num1과 num2 값 중 큰 수를 삼항 연산자를 사용해서
// max 변수에 값을 담고 출력해주세요
// 단, 선언과 초기화를 동시에 해주세요
int max = (num1 > num2)? num1 : num2;
System.out.println(max);
}
}
수업내용
[출처] https://blog.naver.com/devnote1 작성자 devnote1
상수(constant) 선언하기
상수는 변하지 않는 수
원주률 3.14, 1년 12개월 등
final 예약어를 사용하여 선언
상수를 사용하면 변하지 않는 값을 반복하여 사용할 때 의미있는 문자로 인식하기 쉽고
혹, 변하더라도 선언한 부분만 변경하면 되므로 여러부분을 수정할 필요가 없음
public class ConstantTest {
public static void main(String[] args) {
final int MAX_NUM = 10;
final int MIN_NUM;
MIN_NUM = 0;
System.out.println(MAX_NUM);
System.out.println(MIN_NUM);
// MAX_NUM = 100;
}
}
리터럴(literal)
원래 10, 123, 3.14, 'A'와 같은 값들이 '상수'인데, 프로그래밍에서는 상수를 '값을 한번 저장하면 변경할 수 없는 저장공간'으로 정의하였기 때문에 이와 구분하기 위해 상수를 다른 이름으로 불러야만 했습니다. 그래서 상수 대신 리터럴이라는 용어를 사용한다. 리터럴은 단지 우리가 기존에 알고 있던 '상수'의 다른 이름일 뿐입니다.
형 변환 (type conversion)
묵시적 형 변환(explicit type conversion, 자동 형 변환)과 명시적 형 변환(implicit type conversion, 강제 형 변환)이 있음
바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어 짐
public class TypeConversion {
public static void main(String[] args) {
int iNum1 = 100;
// 자동형변환
double dNum1 = iNum1;
System.out.println(iNum1);
System.out.println(dNum1);
double dNum2 = 1.12315;
// 명시적 형변환
int iNum2 = (int) dNum2;
System.out.println(dNum2);
System.out.println(iNum2);
}
}
* 서로 다른 자료형 간에 연산등의 수행을 위해 하나의 자료형으로 통일하는 것
(묵시적 형 변환(explicit type conversion, 자동 형 변환)과 명시적 형 변환(implicit type conversion, 강제 형 변환)이 있음
* 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어 짐
항과 연산자
● 항(operand) : 연산에 사용되는 값
● 연산자 (operator) : 항을 이용하여 연산하는 기호
대입 연산자 (assignment operator)
● 변수에 다른 변수나 값을 대입하는 연산자
● 이항 연산자 중 우선 순위가 가장 낮은 연산자들
● 왼쪽 변수 = 오른쪽 변수(변수 또는 식, 값)
부호 연산자
● 단항 연산자
● 변수의 부호를 유지 하거나(+) 바꿈(-)
● 실제 변수의 부호를 변경 하려면 대입 연산자를 사용해야 함
● 부호 연산자 예제
public class OperationTest1 {
public static void main(String[] args) {
int num = 10;
// 부호 연산자
System.out.println(-num);
System.out.println(num);
// 실제 값이 변경된 것은 아니다.
// 값을 변경 하려면 대입 연산자를 사용해야 한다.
num = -num;
System.out.println(num);
}
}
산술 연산자
사칙 연산자
복합 대입 연산자
대입 연산자와 다른 연산자가 함께 쓰임
● 복합연산자 예제
public class OperationTest1 {
public static void main(String[] args) {
int num1 = 0;
// num1 = num1 + 2;
num1 += 2;
System.out.println(num1);
int num2 = 0;
// num2 = num2 - 2;
num2 -= 2;
System.out.println(num2);
int num3 = 1;
num3 *= 3;
System.out.println(num3);
int num4 = 10;
num4 /= 2;
System.out.println(num4);
int num5 = 5;
num5 %= 3;
System.out.println(num5);
// ctrl + shift + f : 코드 정렬
}
}
증감, 감소 연산자
단항 연산자
변수의 값을 1 더하거나 1 뺄때 사용
연산자가 항의 앞에 있는가 뒤에 있는가에 따라 연산 시점과 결과가 달라짐
문장(statement)의 끝(;)을 기준으로 연산 시점을 생각해야 함
● 증감, 감소 연산자 예제
public class OprationTest3 {
public static void main(String[] args) {
int gameScore = 10;
int lastScore;
lastScore = ++gameScore;
// lastScore = gameScore++;
// gameScore += 1;
System.out.println(gameScore);
System.out.println(lastScore);
}
}
관계 연산자
● 이항 연산자
● 연산의 결과가 true(참), false(거짓)으로 반환 됨, 비교연산자 라고도 함
● 조건문, 반복문의 조건식으로 많이 사용 됨
public class RealtionalTest {
public static void main(String[] args) {
int num1 = 5;
int num2 = 3;
boolean value = (num1 > num2);
System.out.println(value);
System.out.println(num1 < num2);
System.out.println(num1 >= num2);
System.out.println(num1 <= num2);
System.out.println(num1 == num2);
System.out.println(num1 != num2);
}
}
논리 연산자
● 관계 연산자와 혼합하여 많이 사용 됨
● 연산의 결과가 true(참), false(거짓)으로 반환 됨
public class LogicalTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
boolean flag = (num1 > 0) && (num2 > 0);
System.out.println(flag);
flag = (num1 < 0) && (num2 > 0);
System.out.println(flag);
flag = (num1 > 0) || (num2 > 0);
System.out.println(flag);
flag = (num1 < 0) || (num2 > 0);
System.out.println(flag);
flag = !(num1 > 0);
System.out.println(flag);
}
}
논리 연산에서 모든 항이 실행되지 않는 경우
(short circuit evaluation)
● 논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
-- 앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음
● 논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
-- 앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음
public class ShortCircuitTest {
public static void main(String[] args) {
int num1 = 5;
int i = 0;
boolean value = ((num1 = num1 + 10 ) < 10) && ( ( i = i + 2 ) < 10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);
value = ((num1 = num1 + 10 ) < 10) || ( ( i = i + 2 ) < 10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);
}
}
조건 연산자
● 삼항 연산자
● 조건식의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 결과가 수행됨
● if (조건문)을 간단히 표현할 때 사용 할 수 있음
import java.util.Scanner;
public class ConditionTest {
public static void main(String[] args) {
int max;
System.out.println("입력 받은 두 수중 큰 수를 출력하세요\n ");
Scanner scanner = new Scanner(System.in);
System.out.println("입력1:");
int x = scanner.nextInt();
System.out.println("입력2:");
int y = scanner.nextInt();
max = (x > y)? x : y;
System.out.println(max);
}
}
연산자 우선순위
● 가장 높은 순위 연산자는 () [] .
● 가장 낮은 순위 연산자 =
해보기1 : 복습 완료
해보기2 :연습문제 완료
1. 다음 표의 빈 칸에 8개의 기본형(primitive type)을 알맞은 자리에 넣으시오.
종류 / 크기 | 1 byte | 2 byte | 4 byte | 8 byte |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
2. 주민등록번호(임시)를 숫자로 저장하고자 한다. 단 ‘ - ‘ 은 사용하지 않습니다. 이 값을 저장하기 위해서는 어떤 자료형 (data type)을 선택해야 할까? regNo라는 이름의 변수를 선언하고 자신의 주민등록번호로 초기화 하는 한 줄의 코드를 적으시오.
int regNo = 1234567891234;
3. 다음의 문장에서 리터럴, 변수, 상수, 키워드를 적으시오
int i = 100;
long iNum =100L;
final float PI = 3.14f;
- 리터럴 : 100, 100, 3.14
- 변수 : i, iNum
- 키워드 : int, long, float, final
- 상수 : PI
4. 다음 문장들의 출력결과를 적으세요.
System.out.println( "1" + "2"); -> ( 12 )
System.out.println(true + ""); -> ( true )
System.out.println('A' + 'B'); -> ( 131 )
System.out.println('1' + 2); -> ( 51 )
System.out.println('1' + '2'); -> ( 99 )
System.out.println('J' + "ava"); -> ( Java )
5. 다음 중 변수의 이름으로 사용할 수 있는 것은? (모두 고르시오) a, g
a. $ystem
b. channel#5
c. 7eleven
d. If
f. new
g. $MAX_NUM
h. hello@com
'코리아 IT아카데미 > Java' 카테고리의 다른 글
4일차 | 함수와 메서드 (0) | 2021.10.21 |
---|---|
3일차 | if, for(구구단, 이중for문), while, do while, break, continue (0) | 2021.10.20 |
ddazua_Java | 4강 연산자1 (0) | 2021.10.19 |
ddazua_Java | 3강 변수와 상수 (0) | 2021.10.19 |
1일차 | 데이터 타입 종류, 변수, 문자의 숫자 표현 (0) | 2021.10.18 |