package edu.kh.op.ex;
public class OpExample {
// 기능 메소드(method) : 객체 지향 프로그래밍에서 객체와 관련된 세부 루틴 or 함수
// void : return 값이 없는 메소드에 작성
public void ex1() {
System.out.println("OpExample 클래스에 ex1() 기능 수행");
}
// 하나의 메소드안에는 하나의 기능만 정의해야 함
public void ex2() {
// 수행문
}
}
package edu.kh.op.ex;
public class ExampleRun {
// 메인 메소드 필수 작성
public static void main(String[] args) {
OpExample ex = new OpExample();
// OpExample라는 설계도를 보고
// OpExample 형태의 ex를 만들어 냄
ex.ex1(); // OpExample 클래스에 ex1() 기능 수행
}
}
일반 수학과 동일한 연산 방법, 우선순위. 단, %
는 나누기의 나머지 값을 구하는 연산
*
/
%
연산자 예시int a = 10, b = 20, c = 0;
c = a * b;
c = a / b;
c = a % b;
/
연산 시 형 변환에 유의해야 함+
-
연산자 예시int a = 10, b = 20, c = 0;
c = a + b;
c = a - b;
피연산자의 값에 1을 더하거나 빼는 연산자로 위치에 따라 결과 값이 다르게 나타남
int a = 10;
int b = ++a;
System.out.println(a + ", " + b);
int a = 10;
int b = a++;
System.out.println(a + ", " + b);
<후위 연산 예시>
public void ex2() {
int iNum1 = 10;
int iNum2 = 10;
iNum1++;
iNum2--;
System.out.println("iNum1:" + iNum1);
System.out.println("iNum2:" + iNum2);
}
package edu.kh.op.ex;
public class ExampleRun {
public static void main(String[] args) {
OpExample ex = new OpExample();
ex.ex1(); // iNum1:11
ex.ex2(); // iNum2:9
}
}
<전위, 후위 연산 실습>
public void ex3() {
// 전위 연산 : ++3, --2 연산자가 앞쪽에 배치
// -> 다른 연산보다 먼저 증가/감소
int temp1 = 5;
System.out.println(++temp1 + 5);
// 6 + 5 (== 11)
int temp2 = 3;
System.out.println( temp2-- + 2); // 5
// 3 + 2
// temp2 == 2 (1 감소)
데이터가 같은지, 다른지 비교할 때 쓰이며 항상 결과값은 논리 값(true, false)으로 나타남.
==
b : a와 b가 같으면 true!=
b : a와 b가 다르면 trueint a = 10;
int b = 10;
System.out.println(a == b); // true
double a = 1.23;
double b = 3.14;
System.out.println(a != b); // true
public void ex4() {
// 비교연산자: > , < , >= , <= , == , !=
// 비교 연산자의 결과는 항상 논리값(true/false)
// 등호 (=)가 포함된 연산자에서 등호 위치는 항상 오른쪽!
int a = 10;
int b = 20;
System.out.println( a > b ); //false
System.out.println( a < b ); //true
System.out.println( a != b); //true
System.out.println( (a == b) == false ); //true
// () 괄호 안에 있는거 먼저 연산
// false == false -> true
int c = 4;
int d = 5;
System.out.println( c + 1 <= d); // true
// 산술 연산이 비교연산보다 우선순위가 높음
int temp = 723;
System.out.println("temp는 짝수?" + (temp % 2 == 0));
}
논리 값 두 개를 비교하는 연산자
&&
: 두 피연산자가 모두 true일 때 true 반환 (AND)||
: 두 피연산자 중 하나만 true여도 true 반환 (OR)public void ex5() {
// 논리연산자 : &&(AND), || (OR)
// && : 둘 다 true이면 true
int a = 101;
// a는 100 이상이면서 짝수인가 ?
// ( a >= 100 ) && ( a % 2 == 0 )
System.out.println( a >= 100 ); // true
System.out.println( a % 2 == 0 ); // false
System.out.println((a >= 100) && (a % 2 == 0)); // false
// || : 둘 다 false면 false (AND의 반대) 나머지 true
int c = 10;
// c는 10을 초과했거나 짝수인가?
// ( c > 10 ) || ( c % 2 == 0 )
System.out.println( c > 10 ); // false
System.out.println( c % 2 == 0 ); // true
System.out.println((c > 10) || (c % 2 == 0)); // true
}
홀수인 지 파악할 때, a % 2 == 1
또는 a % 2 != 0
이런 식으로 가능
논리 부정 연산자 : !
논리 값을 부정하여 반대 값으로 변경
제어문을 활용할 때 많이 쓰임
public void ex6() {
// 논리 부정 연산자 : !
// 논리값을 반대로 바꾸는 연산자
boolean bool1 = true;
System.out.println(!bool1); // false
}
다른 연산자와 대입 연산자가 결합한 것으로
자기 자신과 연산 후 연산 결과를 자기 자신에게 누적 대입
+=
10 (a = a + 10 )-=
10 (a = a - 10 )*=
10 (a = a * 10 )/=
10 (a = a / 10 )%=
10 (a = a % 10 )증감 연산과 비슷해 보이지만 증감연산자(++
, --
)는 1씩 증가 대입 연산자는 원하는 값을 증가시키고 그 변수에 저장 가능
public void ex7() {
// 복합 대입 연산자 : += , -= , *= , /= , %=
// 피연산자가 자신과 연산 후 결과를 다시 자신에게 대입
int a = 10;
a++; // 11
System.out.println("a++: " + a);
a += 4; // 15 == (a = a + 4;)
System.out.println("a += 4: " + a);
a -= 10; // 5
System.out.println("a -= 10: " + a);
a *= 3; // 15
System.out.println("a *= 3: " + a);
a /= 6; // 2 (몫이 2)
System.out.println("a /= 3: " + a);
}
조건식 ? 식1 : 식2;
조건식의 결과 값에 따라 연산을 처리하는 방식으로 결과 값이 참일 경우 식1, 거짓일 경우 식2 수행
삼항 연산자 안에 삼항 연산자를 중첩하여 쓰는 것도 가능
public void ex8() {
// 삼항 연산자
// 조건식 ? 식1 : 식2
// 조건식 결과가 true면 식1, false면 식2
int num = 30;
String str1 = "num은 30보다 크다";
String str2 = "num은 30 이하다";
String result = num > 30 ? str1 : str2; // false
System.out.println(result); // str2 수행
}