자바

JAVA STEP 9. Operator

2023. 2. 6. 18:15
728x90

연산자(Operator)

  • 수학 연산자 > 프로그래밍 연산자
  • 피연산자를 대상으로 미리 정해진 연산(행동)을 한 후에, 연산(행동)의 결과를 반환하는 요소
  • 주로 기호를 많이 사용 + 영단어도 많이 사용

1. 문장, Statement

  • 1개 이상의 표현식이 모여서 문장을 만든다.
  • int sum = 10 + 20;

2. 표현식, Expression

  • 문장을 구성하는 최소 단위
  • int sum
  • 10 + 20
  • sum = 30

3. 연산자, Operator

  • +
  • =

4. 피연산자, Operand

  • +: 10, 20
  • = : sum, 30

5. 연산자 우선 순위

  • 하나의 문장에 속해있는 모든 연산들은, 누가 먼저 실행해야 하는지 순서가 정해져있다.
  • 1 + 2 * 3 = 7

6. 연산자 연산방향

  • 하나의 문장에 속해있는 연산자들 중 우선순위가 동일하면 어느 방향(좌,우)으로 실행해야 하는지 순서가 정해져있다.
  • - 1 + 2 + 3 = 6

7. 연산의 종류

7-1. 행동(목적)

7-1.a 산술 연산자

  • +, -, *, /, %(mod, 나머지)
  • 2항 연산자
  • 피연산자를 숫자를 가진다. (정수, 실수)
  • ex)
    • int a = 10;
    • int b = 3;
    •  
		System.out.printf("%d + %d = %d\n", a, b, a+b);
		System.out.printf("%d - %d = %d\n", a, b, a-b);
		System.out.printf("%d * %d = %d\n", a, b, a*b);
		System.out.printf("%d / %d = %d\n", a, b, a/b); // 몫 
		System.out.printf("%d %% %d = %d\n", a, b, a%b); //나머지,% Escape 는 %%라고 입력해야함.
  • 모든 산술 연산자의 결과값 자료형은 두 피연산자의 자료형중에서 더 크기가 큰 자료형으로 반환된다.
  • ex)
  •  
//int / int = int
		System.out.println(10/3); //- 정수/정수		= 3
		
		//double / int = double
		System.out.println(10.0/3); //- 실수/정수		= 3.333333333
		
		// int / double = double
		System.out.println(10/3.0); //- 정수/실수		= 3.333333333
		
		// double / double = double
		System.out.println(10.0/3.0); //- 실수/실수	= 3.333333333 
		
		System.out.println();
		
		int e = 1000000000; //10억 
		int f = 2000000000; //20억
		
		//int + int = int(overflow 발생!)
		System.out.println(e+f); //30억이 나와야하는데 에러가 나오지 않고 -1294967296 이라는 값이 나옴.
		
		//(long) int + int
		System.out.println((long)e + f); //e를 long으로 바꾸어 주었기 때문에 long이 되서 정상적으로 출력 
		
		e = 300000;
		f = 500000;
		
		System.out.println(e*f);
		System.out.println((long)e*f);

7-1.b 비교 연산자

  • >, >=, <, <=, ==(같다, equals), !=(같지않다. not equals)
  • 2항 연산자
  • 피연산자들의 우위(동등) 비교를 하는 연산자
  • 피연산자는 숫자형을 가진다.
  • 연산의 결과가 반드시 boolean이다. (true, false)
  • ex)
  •  
		int a = 10;
		int b = 3;
		
		System.out.println(a > b);
		System.out.println(a >= b);
		System.out.println(a < b);
		System.out.println(a <= b);
		System.out.println(a == b);
		System.out.println(a != b);
        
        boolean b1 = true;
		boolean b2 = true;
		
		System.out.println(b1 == b2);
		System.out.println(b1 != b2);
		
		String s1 = "홍길동";
		String s2 = "홍길동";
		String s3 = "아무개";
		String s4 = "홍";
		
		s4 = s4 + "길동"; //"홍" + "길동"
		
		System.out.println(s1==s2); //true
		System.out.println(s1==s3); //false
		System.out.println(s4);
		System.out.println(s1==s4); //false
		
		//*** 문자열의 비교는 ==, != 연산자를 사용하면 절대 안된다.
		//*** 문자열의 비교는 equals() 메소드를 사용한다.
		
		System.out.println();
		System.out.println(s1.equals(s2)); // s1 == s2
		System.out.println(s1.equals(s4)); // s1 == s4
		System.out.println();

7-1.c 논리 연산자

  • &&(and), ||(or), !(not)
  • &(and), |(or), ^(xor, exclusive or, 베타적 논리합) : 비트 연산할 때 사용.
  • 2항 연산자(&&, ||)
  • 1항 연산자(!)
  • 피연산자의 자료형이 boolean이다.
  • 연산의 결과는 boolean이다. (true, false)
  • 논리곱 (A && B = ?)
    • T && T = T
    • T && F = F
    • F && T = F
    • F && F = F
  • 논리합 (A || B = ?)
    • T || T = T
    • T || F = T 
    • F || T = T
    • F || F = F
  • ex)
  •  
				System.out.println(true && true);
				System.out.println(false || false);
			
		//! : boolean을 반대로 뒤집기
				System.out.println(!true); //false
				System.out.println(!false);//true
		
		//비트 연산자(비트 단위의 연산)
				System.out.println(a&b); //2
		
		//베타적 논리합
		//- 좌우가 서로 다른 true 
		//- 암호화
				System.out.println(true ^ true); //false
				System.out.println(true ^ false); //true
				System.out.println(false ^ true); //true
				System.out.println(false ^ false); //false
        
        //ex2) 사용자 나이 입력 > 성인(19세 이상) O,X
		//					19세 이상 ~ 60세 미만
		
				System.out.println("나이를 입력하세요 : ");
				
				String input2 = reader.readLine();
				
				int age2 = Integer.parseInt(input2);
				
				System.out.println(age2 >= 19);
				
				//19 <= age < 60
				//- 연산자 우선 순위
				System.out.println((19 <= age2) && (age2 < 60));
				System.out.println();

7-1.d 대입연산자

  • =  
  • +=, -=, *=, /=, %=  (복합 대입 연산자)
  • LValue(변수) = RValue(변수, 상수)
  • LValue와 RValue의 자료형은 동일해야 한다. > 형변환
  • 대입 연산자의 연산자 순위는 가장 낮다.
  • ex)
  •  
int sum = 1+2*3;
		System.out.println(sum);
		
		//복합 연산자
		int n = 10;
		
		//요구사항] n에 1을 더하시오. > n의 값에 1을 더해서 다시 n에 넣어라.
		//		> 누적(***)
		
		n = n + 1;
		System.out.println(n);
		
		n += 1; // n=n+1;과 같은 의미.
		System.out.println(n);
		
		n += 5;
		System.out.println(n);
		
		n -= 1;
		System.out.println(n);
		
		n -= 2;
		System.out.println(n);
		
		n = n * 2;
		System.out.println(n);
		
		n *= 2;
		System.out.println(n);
		
		n = n / 2;
		System.out.println(n); 
		
		n /= 2;
		System.out.println(n); 
		
		n = n%7;
		System.out.println(n); 
		
		n %= 4;
		System.out.println(n); 
		
		//+, *
		//-, /, %
		
		n = n + 10;
		n += 10;
		
		n = n - 10;
		n -= 10;
		
		n = 10 + n;
		n += 10;
		
		n = 10 - n;
		n -= 10; //X

7-1.e 증감 연산자

  • ++, --
  • 1항 연산자
  • 피연산자는 숫자형을 가진다.
  • 누적 연산을 한다. 기존의 값에 +1, -1을 한다.
  • 피연산자의 위치가 바뀔 수 있다. > 연산자 우선 순위가 달라진다.
  • ++n : 전위 배치(전치) > 연산자 우선 순위 가장 높음.(1등)
  • n++ : 후위 배치(후치) > 연산자 우선 순위 가장 낮음.(꼴등)
  • ex)
  •  
		n = 10;
		result = 0;
		
		++n; //전위 증가 11
		result = 10 + n; //21
		
		System.out.println(result);
        
        n = 10;
		result = 0;
		
		result = 10 + n; //20
		n++; //후위증가 n=11
		
		System.out.println(result);

7-1.f 조건 연산자

  • ?:
  • A ? B : C
  • 3항 연산자
  • A: 조건(boolean)
  • B,C: 결과(상수,변수)
  •  
		boolean flag = false;
		String m1 = "참";
		String m2 = "거짓";
		
		// 			  A   ? B(true 이면 이게 출력)  : C(false이면 이게 출력) 
		String m3 = flag ? m1 : m2;
		
		System.out.println(m3);
		
		//나이 > 성인?
		Scanner scan = new Scanner(System.in);
		
		System.out.print("나이 : ");
		
		int age = scan.nextInt();
		
		System.out.println(age >= 19? "통과" : "거절");
		
		System.out.println(age % 2 == 0? "짝수" : "홀수");

8. 모든 것을 이용하여 요구사항 만들어보기

  • 요구사항 : 사용자로부터 문자 1개를 입력 > 영어가 소문자인지 아닌지 검사
  • 시나리오
    • 1. Scanner 생성하기
    • 2. 라벨 출력하기
    • 3. 문자 1개를 입력받기
    • 4. 입력 받은 문자가 영어 소문자인지 검사
    • 5. 결과를 출력
  • ex)
  •  
//화면설계
		Scanner scan = new Scanner(System.in); //1
		
		System.out.print("문자를 입력하세요 : "); //2
		
		//System.out.println("a"); //3
		
		//문자 1개 입력 > 왜? > 소문자인지?(a ~ z) 97 ~ 122
		String input = scan.nextLine(); //a를 입력
		
		char c = input.charAt(0); //문자열의 첫글자를 char로 뽑아낸다. // "a" > 'a'
		
		//String > int : 불가능
		
		//Integer.parseInt("5") -> 숫자만 가능
		
		//검사
		//System.out.println((int)c); //문자 코드값 출력
		int code = (int)c;
		
		String result = ((code >=97) && (code <= 122) ? "소문자입니다." : "소문자가 아닙니다.");
		
		// System.out.println("입력받은 문자 'a'는 소문자입니다.");
		// System.out.println("입력받은 문자 'F'는 소문자가 아닙니다.");

		System.out.printf("입력받은 문자 '%c'는 %s\n", code, result);

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'자바' 카테고리의 다른 글

JAVA STEP 11. Method  (0) 2023.02.07
JAVA STEP 10. 자바 예제모음  (0) 2023.02.06
JAVA STEP 8. Casting  (0) 2023.02.06
JAVA STEP 7. 카페 무인전산 시스템 만들기(기초)  (0) 2023.02.05
JAVA STEP 6. INPUT  (0) 2023.02.03
'자바' 카테고리의 다른 글
  • JAVA STEP 11. Method
  • JAVA STEP 10. 자바 예제모음
  • JAVA STEP 8. Casting
  • JAVA STEP 7. 카페 무인전산 시스템 만들기(기초)
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • 자바
  • 웹페이지
  • java
  • 백엔드
  • IT자격증공부
  • it
  • jquery
  • 정보보안전문가
  • html
  • jsp
  • 데이터베이스
  • 개발자
  • 웹개발자
  • IT자격증
  • 개발블로그
  • JavaScript
  • 프론트엔드
  • 알고리즘
  • 코딩테스트
  • IT개발자
  • React
  • 정보처리기사필기
  • DB
  • 백준
  • 웹개발
  • 앱개발자
  • DBA
  • 정보처리기사
  • ajax
  • css

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
JAVA STEP 9. Operator
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.