✿∘˚˳°∘°

4일차 : Operator 본문

국비수업/JAVA

4일차 : Operator

_HYE_ 2022. 12. 6. 00:33

2022/12/01

 

1. 연산자

연산자 종류와 우선순위

 

- 연산자 기본

public void oper1() {
		//대입연산자
		//연산자기준(=)으로 오른쪽의 값을 왼쪽의 공간에 대입
		int num = 100;
		System.out.println("num : "+num);
		num = 200;
		System.out.println("num : "+num);
		num += 100; //현재 num변수에 있는 값과 오른쪽 값을 더해서 num변수에 대입 num = num + 100;
		System.out.println("num : "+num);
		
		num -= 10;//num = num - 10
		System.out.println("num : "+num);
	}
	
	public void oper2() {
		int num1 = 10; //a++
		int num2 = 10; //b++
		
		System.out.println("num1 : "+num1);
		num1++;//현재 자기자신의 값을 +1
		System.out.println("num1 : "+num1);
		num1--;//현재 자기자신의 값을 -1
		System.out.println("num1 : "+num1);
		
		System.out.println("num2 : "+num2);
		++num2; //현재 자기자신의 값을 +1
		System.out.println("num2 : "+num2);
		--num2; //현재 자기자신의 값을 -1
		System.out.println("num2 : "+num2);
		
		
		System.out.println("/////////////////////////");
		
		System.out.println(num1);
		System.out.println(num1++);//후위연산 : 자기할일을 먼저 한 다음 +1(syso를 먼저진행하고 +1)
							 	   //인접연산 수행 후 증가
		System.out.println(num1);
		System.out.println("/////////////////////////");
		System.out.println(num2);
		System.out.println(++num2);//전위연산 : 자기할일을 하기 전에 +1증가시키고 할일(syso)을 진행
								   //증가 후 인접연산 수행
		System.out.println(num2);
		
		System.out.println("//////////////////////////");
		int a = 10;
		int b = (a--)+2; //후위연산이기때문에 인접연산인 a(10)+2=12가 먼저 진행되고 12-1 진행
						 //전위연산(--a)일경우엔 a(10)-1이 먼저진행되므로 9+2=11
		System.out.println(a); //9
		System.out.println(b); //12 
		
		System.out.println("///////////////////////////");
		int x = 10;
		int y = 10;
		int z = (x++)+(++y)+x; // 10+11+11
		//c언어 연산에서는 31(10+11+10) java연산 에서는 32(10+11+11)
		System.out.println(x); //11
		System.out.println(y); //11
		System.out.println(z); //32
	}

 

- 삼항 연산자

	public void oper3() {
	//삼항연산자 테스트
		Scanner sc = new Scanner(System.in);
		
		System.out.print("첫번째 정수를 입력하세요 : ");
		int num1 = sc.nextInt();
		System.out.print("두번째 정수를 입력하세요 : ");
		int num2 = sc.nextInt();
		//int result = num1<num2? num1 : num2;//조건식이 true일 경우  :기준으로 앞(num1)이 출력
											//조건식이 false일 경우 :기준으로 뒤(num2)가 출력
		//System.out.println("결과 : "+result);	
		String str = num1<num2? "num1이 더 작습니다." : "num2가 더 작습니다." ;
		//데이터타입이 꼭 동일할 필요는 없다. 바뀔 수 있음
		System.out.println(str);
	}

 

- 연산자 실습(1)

	//연산자실습_문제1
	public void exam1() {
		//두수를 입력받고 +, -, *, /된 값이 출력되도록 
		//입력받은 두 수는 정수형 변수에 저장하고 나눈 수는 소수점 둘째자리까지 출력
		
		Scanner sc = new Scanner(System.in);
		System.out.println("첫번째 수 입력 : ");
		int num1 = sc.nextInt();
		System.out.println("두번째 수 입력 : ");
		int num2 = sc.nextInt();
		System.out.println("=====결과=====");
		System.out.println("두 수를 더한 수 :"+(num1+num2));
		System.out.println("두 수를 뺀 수 :"+(num1-num2));
		System.out.println("두 수를 곱한 수 :"+(num1*num2));
		System.out.printf("두 수를 나눈 수 : %.2f", ((double)num1/(double)num2));
		//((double)num1/num2) : 실수/정수 연산시 범위가 더 큰 실수로 형변환이 일어나므로
		//형변환은 num1 or num2 둘 중 하나를 해주면 된다.
		//double div = (double)num1/num2;
		//system.out.printf("두 수를 나눈 수 : %.2f", div)
	}
	
	public void exam2() {
		// 다음 코드를 보고 각각 무엇이 출력 될 지 맞추어라(결과를 생각한 후 코드를 작성)
		int a = 40, b = 20;
		a += b;
		System.out.printf("a의 값 : %d, b의값 : %d \n", a, b); //60 20
		a -= b;
		System.out.printf("a의 값 : %d, b의값 : %d \n", a, b);//40 20
		b *= a;
		System.out.printf("a의 값 : %d, b의값 : %d \n", a, b);//40 800
		b /= a;
		System.out.printf("a의 값 : %d, b의값 : %d \n", a, b);//40 20
	}
	
	public void exam3() {
		// 다음 코드를 보고 각각 첫번째 결과값과 두번째 결과값이 무엇이 출력 될 지 맞추어라.(결과를 생각한 후 코드를 작성)
		int a = 10, b = 20, c = 30, d = 40;
		boolean result1, result2;
		result1 = ((a < 20 && b > 10) && (c == 20 || d == 40));
		result2 = ((a == 10 && b != 2*10) || (c == 30 && d != 40));
		
		System.out.printf("첫번째 결과 값 : %b \n", result1); //true
		System.out.printf("첫번째 결과 값 : %b \n", result2); //false
	}
	
	public void exam4() {
		//나이를 입력 받아 나이가 19세보다 많으면 "성입입니다 어서오세요" 출력 / 19세보다 적으면 "미성년자는 입장불가입니다" 출력
		Scanner sc = new Scanner(System.in);
		System.out.print("나이를 입력하세요 : ");
		int age = sc.nextInt();
		//입력받은 나이가 19세보다 많으면 성인, 아니면 미성년자
		String msg = age>19? "성인입니다.어서오세요.":"미성년자는 입장불가입니다.";
		System.out.println(msg);	
		//System.out.println(age>19?"성인입니다":"미성년자");
		//변수선언을 하지않고 바로 출력가능		 		 
	}

- 연산자 실습(2)

	public void exam1() {
		//국어 영어 수학점수를 입력 받고 합계와 평균을 계산 및 출력 후 합격불합격처리
		//각 점수가 40점이상이며 평균이 60점이상인경우 합격, 그외 불합격
		//합계 : 정수, 평균 : 실수
		Scanner sc = new Scanner(System.in);
		System.out.print("국어 점수 입력 : ");
		int kor = sc.nextInt();
		System.out.print("수학 점수 입력 : ");
		int math = sc.nextInt();
		System.out.print("영어 점수 입력 : ");
		int eng = sc.nextInt();
		
		int sum = kor+math+eng;
		double avg = (double)sum/3; // sum/3.0 도 가능
		boolean bool = kor>=40 && math>=40 && eng>=40 && avg>=60;  
		String msg = bool? "합격":"불합격";
		
		System.out.println("합계 : "+sum);
		System.out.printf("평균 : %.2f \n", avg);
		System.out.println(msg);		
	}
	
	public void exam2() {
		//정수를 입력받고 홀짝 구분
		//짝수의 정의 : 2로 나눴을 때 나누어 떨어지는 수
		//나누어 떨어진다 -> 나머지가 0
		Scanner sc = new Scanner(System.in);
		System.out.print("정수 입력 : ");
		int num = sc.nextInt();
		String str = (num%2) == 0 ? "짝수":"홀수";
		System.out.println(str);
	}

'국비수업 > JAVA' 카테고리의 다른 글

6일차 : Break, Continue, Random  (0) 2022.12.06
5일차 : 제어문  (0) 2022.12.06
3일차 : Scanner, 연산자  (0) 2022.12.06
2일차 : 기본코드, 숫자와 문자, 변수  (0) 2022.12.06
1일차 : OT  (0) 2022.12.05
Comments