본문으로 바로가기

연산자란?


일정한 규칙을 가지고 계산하는 것으로서, 우리가 일상생활에서 사용하고 있는 덧셈, 뺄셈, 곱셈, 나눗셈을 비롯하여
프로그램에서는 자동 증감
, 동등 비교, 비트 연산 등 많은 연산자가 있다.

연산자(Operations) : 연산에 사용되는 표시나 기호(/,+ ,%,*....)

피연산자(Operand) : 연산에 사용되는 데이터(리터럴, 변수)

ex) 1           +          2                 =      3

  피연산자    연산자      피연산자    


컴퓨터와 소통하기 위한 다양한 방법들 - (산술, 자동증감, 동등비교, 논리, 삼항, 할당 연산자)


산술 연산자 : +, - , *, /, %


증가, 감소 연산자 :++ --


ex) b = a++(후위)
b의 값에 a를 대입한후 a갑을 1증가
ex) b =++a(전위)
변수 a의 값을 1로 증가시킨후 변수 b에 a를 대입


문자열 연결 연산자  + 

ex) System.out.prrintln("num1+num2는" + (num1+num2) +"입니다.")


동등비교, 관계 연산자  ==, !=, <, >, >=, <=


논리 연산자  &&, ||


삼항 연산자 ?’를 이용한 연산


할당 연산자 =


줄여쓰는 연산자(대입연산자) 연산 후 대입


+=.-=,*=,/=,%=,&=(논리 곱), |=(논리 합), ^= (배타적 논리합), <<=(왼쪽 시스트 연산)

>>=(오는쪽 시스트 연산_  

>>>= 부호 없는 오른쪽 시프트 연산


a+=b ; a+b의 값을 a에 대입, a = a+b 



시프트 연산자


x << n = x * 2^n

x >> n = x / 2^n


정수를 2진수로 표현했을 때 경우의 자릿수를 왼쪽 또는 오른쪽으로 지정한 수만큼 이동


ex) 5<<2

    

    5 0000000000000101

<<2 



 20   0000000000010100



ex) 5 >>2


   5 0000000000000101

>>2

    1 0000000000000001 101중 2칸이 지워지면서 맨 왼쪽에 2자리만큼 0으로 채워진다.



package com.javalec.calex;


public class CalculationEx {

public static void main(String[] args) {

int i = 10;

int j = 3;

int h = 5;

System.out.println("===산술 연산자====");

System.out.println("덧셈: " + (i + j)); // 13  식의 값을 출력하기 위해 + 연산자를 사용한다.

System.out.println("뺄셈 : " + (i - j)); // 7

System.out.println("곱셈 : " + (i * j)); // 30

System.out.println("니눗셈 : " + (i / j)); // 3

System.out.println("나머지 : " + (i % j)); // 1



문자열과 변수 사이를 연결할때는 +연산자를 사용한다.


출력결과



===산술 연산자====

덧셈: 13

뺄셈 : 7

곱셈 : 30

니눗셈 : 3

나머지 : 1



System.out.println("=== 자동증감 연산자===");

i++; // i = i + 1

System.out.println("증가 : " + i);

j--; // j = j - 1

System.out.println("감소 : " + j);


=== 자동증감 연산자===

증가 : 11

감소 : 2



System.out.println("=== 동등비교, 관계연산자 ===");

System.out.println("i == j >> " + (i == j));

System.out.println("i != j >> " + (i != j));

System.out.println("i > j >> " + (i > j));

System.out.println("i < j >> " + (i < j));



=== 동등비교, 관계연산자 ===

i == j >> false

i != j >> true

i > j >> true

i < j >> false



System.out.println("=== 논리 연산자 ===");

System.out.println("&&(AND) >> " + (i > j && i > h)); and는 둘다 만족해야함

System.out.println("&&(AND) >> " + (i > j && i < h)); or는 둘중 하나만 만족해도 됨

System.out.println("||(OR) >> " + (i > j || i < h));

System.out.println("||(OR) >> " + (i > j || i > h));



System.out.println("=== 삼항 연산자 ===");

int result = h != 5 ? 1 : 2;  ?기준으로 봐야한다. h가 5인데 아니라고 했으므로 2가 반환된다.

System.out.println("삼항연산 결과(result) " + result);

=== 삼항 연산자 ===
삼항연산 결과(result) 2


System.out.println("=== 줄여 쓰는 연산자 ===");
i = i + 100; i는 10인데 i++ 되어서 11이되고 더하면 111
System.out.println("i = " + i);
i = 11; 다시 i를 11로 선언
System.out.println("i = " + i);
i += 100; // i += 100;  111
System.out.println("i = " + i);
연산자 우선 순위

최우선 연산자()[].-> 단항연산자 -> 산술연산자 -> 쉬프트 연산자 -> 관계연산자 -> 비트연산자(&,^,|) ->

논리 연산자 -> 삼항 연산자 -> 배정 대입 연산자 -> 증감 후위 연산자 -> 순차 연산자






복합 대입 연산자 예제

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Sample6 {

public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
System.out.println("정수를 3개 입력하세요");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str1 = br.readLine();
String str2 = br.readLine();
String str3 = br.readLine();
int sum = 0;
sum += Integer.parseInt(str1);
sum += Integer.parseInt(str2);
sum += Integer.parseInt(str3);
System.out.println("3개정수의 합은" + sum + "입니다.");
}

}

정수를 3개 입력하세요
12
9
13
3개정수의 합은34입니다.


예제 
package com.javalex.ex;

import java.util.Scanner;

public class CalEx {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);  sc 라는 새로운 생성자를 만들어서 사용자로부터 대기한다.
int i = sc.nextInt(); 넥스트인트 함수 사용
System.out.println("i % 3 = " +(i % 3));
}
}

만약 3을 입력하면 나머지가 0이므로 3의 배수라는 것을 알 수 있다.

3
i % 3 = 0




키보드 입력

키보드로 부터 입력을 받는 경우

BufferedReader 변수명 = new BufferedReader(new InputStreamReader(System.in))

 

import java.io. *;

public class Sample3 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

BufferedReader br =

new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine(); // 입력된 문자열을 가리키는 변수 str을 사용

}


}



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Sample4 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("문자열을 입력하십시오");

BufferedReader br =

new ③BufferedReader(new ②InputStreamReader(①System.in));  ---> 1. 키입력, 2. 바이트 스트림 -> 문자 스트림으로 변환(한글입력가능), 3. 버퍼메모리에 저장하겠다.는의미

 

String str = br.readLine();  ---> 라인 단위로 읽어들인다.

System.out.println(str + "이/가 입력되었습니다.");

}

}

실행화면

문자열을 입력하십시오

안녕하세요

안녕하세요 이/가 입력되었습니다.


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Sample5 {

public static void main(String[] args) throws IOException 
{
// TODO Auto-generated method stub
System.out.println("정수를 입력하십시오.");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        
        int num = Integer.parseInt(str);
        
        System.out.println(str + "이/가 입력되었습니다.");
}

}

 int num = Integer.parseInt(str);
입력한 문자열을 가리키는 str정수로 변환하여 int 변수 num에 저장하라는 뜻

int num = Double.parseInt(str);
입력한 문자열을 가리키는 str부동소수점 형으로 전환


2개 이상 숫자 입력하기



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Sample6 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("정수를 입력하십시오");

BufferedReader br = 

new BufferedReader(new InputStreamReader(System.in));

String str1 = br.readLine();  

String str2 = br.readLine();

int num1 = Integer.parseInt(str1);

int num2 = Integer.parseInt(str2);

System.out.println("먼저\t" + num1 + "이/가 출력되었습니다.");

System.out.println("그 후에\t" + num2 + "이/가 출력되었습니다.");

}


}

string 변수 2개와

int 변수 2개
그리고 출력할 함수 각각 2개가 필요하다.






형변환


-큰 사이즈의 형에 대입하기


public class Appilcation {


public static void main(String[] args) {

// TODO Auto-generated method stub

int inum = 160;

System.out.println("키는" + inum + "센티미터 입니다.");

System.out.println("double형 변수에 대입합니다.");

double dnum = inum;

System.out.println("키는" + dnum + "센티미터 입니다.");

}}


실행결과

키는160센티미터 입니다.

double형 변수에 대입합니다.

키는160.0센티미터 입니다.


작은 사이즈의 형에 대입하기

ublic class Appilcation {


public static void main(String[] args) {

// TODO Auto-generated method stub

    double dnum = 160.5;

System.out.println("키는" + dnum + "센티미터 입니다.");

System.out.println("double형 변수에 대입합니다.");

int inum = (int)dnum;

System.out.println("키는" + inum + "센티미터 입니다.");

}}


실행결과

키는160.5센티미터 입니다.

double형 변수에 대입합니다.

키는160센티미터 입니다.










'프로그래밍 > java' 카테고리의 다른 글

배열  (494) 2017.08.25
반복문(for,while,do ~ while문, 중첩문, break, continue)  (512) 2017.08.24
조건문(if, else ~if, switch문)  (491) 2017.08.23
2. JAVA프로그래밍이란(2)  (505) 2017.08.21
1, java 프로그래밍이란(1)  (490) 2017.08.21