자바

[java] 연산자의 종류

미스터 한뺑 2023. 3. 30. 18:47
반응형

연잔자는 필요로 하는 피연산자의 수에 따라 단항, 이항, 삼항 연산자로 구분된다 .

부호 연산자와 증감 연산자는 피연산자 하나만 요구 하므로 단항 연산자

조건 연산자는 조건식 ,A,B와 같이 3개의 피연산자가 필요하므로 삼항 연산자

그외 연산자는 2개의 피연산자를 요구하므로 모든 이항 연산자이다

 

 

더보기

++x   ---> 단항연산자

x+y -----> 이항연산자

(sum>90) ? "A": "B" --->삼항연산자 

 

1. 단항 연산자

단항 연산자는 피연산자가 단 하나뿐은  연산자이고 부호 연산자 ,증감 연산자, 논리 부정 연산자가 있다.

 

1 - 1. 부호연산자

양수및 음슈룰 표시하는 연산자(+,-) 일반적으로 부호 연산자를 정수 및 실수 리터럴 앞에 붙여 양수 및 음수를 표현한다.

부호 연산자는 오직 정수, 실수 타입에  붙일 수 있다. 다른 타입에 넣으면 에러가 난다.

 

	public static void main(String[] args) {
		int x = -100;
		int result1 = +x;
		int result2 = -x;
		System.out.println("result1:"+result1);
		System.out.println("result2:"+result2);
		
		byte b =100;
		int result3 = -b;
		System.out.println("result3:"+result3);

 

1 - 2. 증감 연산자

변수의 값을 1증가 시키거나 1감소 시키는 연산자이다. boolean 타입을 제외한 모든 기본 타임의 피연산자에 사용할 수 있다.

더보기

++ 피연산자(++x)  : 다른 연산을 수행하기 전에 피연산자의 값을 1증가

--  피연산자(--x) : 다른 연산을 수행하기 전에 피연산자의 값을 1 감소

피연산자 ++(x++) : 다른 연산을 수행한 후 피연산자의 값을 1증가

피연산자 -- (y--) :  다른 연산을 수행한 후 피연산자의 값을 1감소

 

public static void main(String[] args) {
		int x = 10 ;
		int y = 10;
		int z ;
		
		System.out.println("----------------------------");
		
		int result1 = ++x +10;
		int result2 = y++ +10;
		
		System.out.println("result1:"+result1);
		System.out.println("result2:"+result2);

		
		System.out.println("----------------------------");
		
		
		y--;
		--y;
		System.out.println("y="+y);

1 - 3. 논리부정 연산자

논리 부정 연산자는 true를 false로, false를 true로 변경하기 때문에 boolean 타입에만 사용할수 있다. 조건문과 제어문에서 조건식의 갑슬 부정하도록 해서 실행 흐름을 제어할 때 주로 사용한다.

	public static void main(String[] args) {
		
		boolean play = true; // true일때
		System.out.println(play);
		
		play = !play; // 논리 부정 연산자를 사용했을때
		System.out.println(play);
		
		play = !play; // 다시 논리 부정 연산자를 사용했을때
		System.out.println(play);
		

	}

2. 산술연산자

사칙연산자인 덧셈, 뺄셈 , 곱셈 , 나눗셈과 나머지를 구하는 것까지 5가지가 있다. 산술연산자는 boolean타음을 제외한 모든 타입에 쓸수 있다.

 

2 - 1. 산술연산자의 특징

산순연산자의 특징은 피연산자들의 타입이 동일하지 않을 경우 다음과 같이 규칙을 사용해서 피연산자들의 타입을 일치시킨 후 연산을 해야한다.

 

1.피연산자들이 byte, short, char 타입이면 모두 int로 바꿔서 연산해야한다

더보기

ex byte + byte  >>>> int+int+int

2. 피연산자들이 모두 정수 타입이고 long 타입이 포함 된 경우 모두 long타입으로 변환해서 연산해야한다.

더보기

int +long  >>>> long+long= long

3. 피연산 중 실수 타입이 있는경우 허용 범위가 큰 실수 타입으로 변환해 연산한다.

더보기

int +double >>>> double + double = double

public static void main(String[] args) {
		
		int x = 5;
		int y = 3;
		int result = x+y;
		System.out.println("result:"+ result);
		
		int result2 = x- y ;
		System.out.println("result2:"+ result2);
		
		double result3 = x / y;
		System.out.println("result3:"+ result3);
		
		double result4 =(double) x / y;
		System.out.println("result4:"+ result4);
		
	}

 

*char 타입도 연산이 가능하다.

public static void main(String[] args) {
		
		char c1 = 'A'+1 ;
		char c2 = 'A';
		System.out.println("c1:"+c1);
		System.out.println("c2:"+c2);
        char c4 = '가'+1;
		System.out.println("c4:"+c4);

c1 은 'A'에 1을 더했는데 B가 값으로 나올걸 알 수 있다.  '가' +1 을 하니 각 이라는 값이 나왔다 . 

 

*문자열 결합 연산자

문자열 결합 연산자인 +는 문자열을 서로 결합하는 연산자이다. 피안산자 중 한쪽이 문자열이면 +연산자는 문자녕 결합 연산자로 사용되어 다른 피연산자를 문자열로 변환하고 서로 결합한다.

	public static void main(String[] args) {
		
		String str1 = "JDK" +  3 + 6.0;
		String str2 = 3+6.0 + "hjh";
		String str3 = 3*6.0 + "hjh";
		String str4 = "JDK" +  3 * 6.0;
		System.out.println(str1);
		System.out.println(str2);
		System.out.println(str3);
		System.out.println(str4);

1번째는 +연산자로  연산식을 만들었는데 옆으로 합쳐지는 값이 나왔다

2 번째는 앞에다가 정수 연산식을 두었는데 정수 끼리 더해지고 문자열에 붙는 값이 나왔다

3번째는 곱한 값에 문자열에 붙었다

4번째는 앞에 문자열이 존재 하는데 곱하기부터 연산이 된 후 문자열과 합쳐진 값이 나왔다. 곱하기, 나누기는 덧셈보다 우선순위가 위에 있기 때문에 값이 이렇게 나온다 .

반응형