package chapter04;
public class OpEx2 {
public static void main(String[] args) {
// 결과값이 실수로 연산되게하는 방법
int a = 10;
int b = 4;
System.out.println("10 / 4 = " + a / b);
System.out.println("10 / 4 = " + (double)a / b);
// char 연산
char c1 = 'a';
char c2 = 'b';
int c3 = c1 + c2; // 자동형변환
int c4 = (int)c1 + (int)c2; // 강제형변환
System.out.println("c3 = " + c3);
System.out.println("c4 = " + c4);
// 문자열 덧셈
String s1 = "Hello";
String s2 = "World!!";
String s3 = s1 + " " + s2;
System.out.println(s3);
// 음수 사용
int c = -a;
System.out.println("c = " + c);
}
}
증감연산
연산자 : ++, --
변수의 값을 1 증가시키거나 감소 시킴
전위연산, 후위연산으로 나뉘며 대입되는 변수에 값이 다르므로 주의
package chapter04;
public class OpEx3 {
public static void main(String[] args) {
int a = 10;
int b;
a = a + 1;
a += 1;
++a; // 전위연산
a--; // 후위연산
System.out.println(a);
// 전위,후위 연산 차이
a = 10;
b = a++;
System.out.printf("(a,b)= (%s,%s)", a,b);
System.out.println();
b = ++a;
System.out.printf("(a,b)= (%s,%s)", a,b);
}
}
비교연산
두항의 관계를 나타내는 연산자
연산자 : '>, >=, <, <=, ==, !='
= 대입연사자, == 동등비교연산자
문자열의 값동등비교는 String 객체의 equals() 메소드 사용
연산결과 : 논리형 boolean => true, false
package chapter04;
public class OpEx4 {
public static void main(String[] args) {
int a = 10;
int b = 5;
System.out.println(a > b); // true
System.out.println(a >= b); // true
System.out.println(a < b); // false
System.out.println(a <= b); // false
System.out.println(a == b); // false
System.out.println(a != b); // true
boolean c = a == b; // c 변수에 결과값 대입
System.out.println("c = "+c);
boolean d = c == false; // d 변수에 결과값 대입
System.out.println("d = "+d);
String myName = "bar";
String yourName = "bar";
System.out.println(myName == yourName);
}
}
package chapter04;
import java.util.Scanner;
public class OpEx4_1 {
public static void main(String[] args) {
// String 값 비교
// 리터럴
String myName = "bar";
String yourName = "bar";
System.out.println(myName == yourName); // true
System.out.println(myName.equals(yourName)); // true
// 생성자
myName = new String("foo");
yourName = new String("foo");
System.out.println(myName == yourName); // false
System.out.println(myName.equals(yourName)); // true
// hashCode() : 값이 같으면 주소를 같은 해시값으로 생성
System.out.println(myName.hashCode() + "/" + yourName.hashCode()); // 같다
// System.identityHashCode(Object o) : 실제 생성된 주소를 해시값으로 생성
System.out.println(System.identityHashCode(myName)); // 다르다
System.out.println(System.identityHashCode(yourName)); // 다르다
// 외부 입력
System.out.println("name input > ");
Scanner scan = new Scanner(System.in);
myName = scan.next();
yourName = scan.next();
System.out.println(myName == yourName); // false
System.out.println(myName.equals(yourName)); // true
System.out.println(myName.hashCode() + "/" + yourName.hashCode());
System.out.println(System.identityHashCode(myName));
System.out.println(System.identityHashCode(yourName));
}
}
논리연산
수학의 논리연산과 동일
연산자 : { AND : && , OR: ||, NOT : !
피연산자, 결과 모두 boolean true, false 자료
package chapter04;
public class OpEx5 {
public static void main(String[] args) {
int a = 10;
int b = 5;
// AND 연산
System.out.println(a > b && a == 10); // true
System.out.println(a > b && a == b); // false
// OR 연산
System.out.println(a > b || a == b); // true
System.out.println(a < b || a == b); // false
// XOR 연산
System.out.println(a > b ^ a == 10); // false
System.out.println(a > b ^ a == b); // true
// NOT 연산
System.out.println(!(a > b)); // false
System.out.println(!(a < b)); // true
}
}
package chapter04;
public class OpEx5_3 {
public static void main(String[] args) {
int a = 10;
int b = 0;
// && 연산 - 첫항이 flase이면 다음항 연산 안함
System.out.println(b > 0 && (a / b > 0));
// || 연산 - 첫항이 true이면 다음항 연산 안함
System.out.println(b == 0 || (a / b > 0));
}
}
package chapter04;
public class OpEx7 {
public static void main(String[] args) {
int score = 80;
String pass = score >= 60 ? "합격 " : "불합격";
System.out.println(pass);
}
}
문자열 연산
연산자 : +
숫자 + 문자열 => 문자열로 자동 형변환
package chapter04;
public class OpEx8 {
public static void main(String[] args) {
String name = "홍길동";
System.out.println("안녕하세요 " + name + " 입니다.");
int height = 180;
System.out.println("저의 키는 " + height + "cm입니다.");
// String weight = 75.5; // 에러발생 (문자자료형 변수에는 숫자 대입 못함)
String weight = 75.5 + "";
System.out.println("제 몸무게는 " + weight + "kg입니다.");
int ageInt = 30; // 정수
String ageStr = "30"; // 문자열
}
}
연산자 우선순위
최우선 순위 : ()
우선적인 연산식에 () 처리
package chapter04;
public class OpEx9 {
public static void main(String[] args) {
int a = 5;
int b = 4;
int c = 3;
// * 연산이 먼저 실행됨
System.out.println(a + b * c);
// 괄호로 묶어 우선순위를 높여줌
System.out.println((a + b) * c);
}
}