๐ป/JAVA
[Java] 3์ผ์ฐจ : ๊ด๊ณ ์ฐ์ฐ์, ๋๋ฑ ์ฐ์ฐ์, ๋ ผ๋ฆฌ ์ฐ์ฐ์, ๋นํธ ์ฐ์ฐ์, ๋์ ์ฐ์ฐ์, ๋ฐฐ์ ์ฐ์ฐ์
๋ฐ๊ถ
2024. 2. 18. 20:01
โถ ์ฆ๊ฐ์ฐ์ฐ์ ( ++, -- ๋ ํ๋ณํ์ด ์ผ์ด๋์ง ์์)
package ch03.unit01;
public class Ex10 {
public static void main(String[] args) {
char c;
c = 'A';
// c = c + 1; // ์ปดํ์ผ์ค๋ฅ
// c = (char)(c + 1);
c++; // ++, -- ๋ ํ๋ณํ์ด ์ผ์ด๋์ง ์๋๋ค.
System.out.println(c); // B
c = 'A';
System.out.println((c++) + ", " + (++c)); // A, C
}
}
๊ด๊ณ ์ฐ์ฐ์
์คํผ๋๋๊ฐ ๋ ๊ฐ์ธ ์ดํญ ์ฐ์ฐ์๋ก ์์์ ์คํผ๋๋๋ก ์ทจํ์ฌ ๊ฒฐ๊ณผ ๊ฐ์ด ์ฐธ์ธ ๊ฒฝ์ฐ true,
๊ฑฐ์ง์ธ ๊ฒฝ์ฐ false์ ๋ฐํํ๋ค.
์ฐ์ฐ์ ์๋ฏธ ex < ~๋ณด๋ค ์ ๋ค a๊ฐ b๋ณด๋ค ์ ์ผ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false <= ~๋ณด๋ค ์ ๊ฑฐ๋ ๊ฐ๋ค a๊ฐ b๋ณด๋ค ์ ๊ฑฐ๋ ๊ฐ์ผ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false > ~๋ณด๋ค ํฌ๋ค a๊ฐ b๋ณด๋ค ํฌ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false >= ~๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค a๊ฐ b๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false
๋๋ฑ ์ฐ์ฐ์
์คํผ๋๋๊ฐ ๋ ๊ฐ์ธ ์ดํญ ์ฐ์ฐ์, ์์์ ์คํผ๋๋๋ก ์ทจํ์ฌ ๊ฒฐ๊ณผ ๊ฐ์ด ์ฐธ์ธ ๊ฒฝ์ฐ true, ๊ฑฐ์ง์ธ ๊ฒฝ์ฐ
false์ ๋ฐํํ๋ค.
์ฐ์ฐ์ | ์๋ฏธ | ex |
== | ~์ ๊ฐ๋ค | a == b / a์ b๊ฐ ๊ฐ์ผ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false |
!= | ~์ ๊ฐ์ง ์๋ค | a != b / a์ b๊ฐ ๊ฐ์ง ์์ผ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false |
package ch03.unit02;
public class Ex01 {
public static void main(String[] args) {
// ๊ด๊ณ ์ฐ์ฐ์ : ์ฐ์ฐ ๊ฒฐ๊ณผ๋ true ๋๋ false
int a = 10, b = 5;
boolean c;
System.out.println(a + ", " + b);
c = a > b;
System.out.println("a > b : " + c);
System.out.println("a >= b : " + (a >= b));
System.out.println("a < b : " + (a < b));
System.out.println("a <= b : " + (a <= b));
System.out.println("a == b : " + (a == b));
System.out.println("a != b : " + (a != b));
}
}
๋ ผ๋ฆฌ ์ฐ์ฐ์
์ดํญ์ฐ์ฐ์๋ก ๋ ผ๋ฆฌํฉ(||), ๋ ผ๋ฆฌ๊ณฑ(&&) ์ฐ์ฐ์๊ฐ ์๋ค.
์ฐ์ฐ์ ์๋ฏธ ex && ๋ ผ๋ฆฌ๊ณฑ(AND) a์ b๊ฐ ์ฐธ์ด๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false || ๋ ผ๋ฆฌํฉ(OR) a ๋๋ b๊ฐ ์ฐธ์ด๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด fasle ! ๋ ผ๋ฆฌ ๋ถ์ (NOT) a๊ฐ ๊ฑฐ์ง์ด๋ฉด true, ์ฐธ์ด๋ฉด fasle
package ch03.unit02;
public class Ex02 {
public static void main(String[] args) {
boolean a = true, b = false;
System.out.println("a:"+a+", b:"+b);
System.out.println("a&&b : " + (a&&b));
System.out.println("a||b : " + (a||b));
System.out.println("!a : " + (!a));
}
}
โถ๋จ์ถ์ฐ์ฐ
- && : ์์ด ๊ฑฐ์ง์ด๋ฉด ๋ค๋ ์ฐ์ฐํ์ง ์์
- || : ์์ด ์ฐธ์ด๋ฉด ๋ค๋ ์ฐ์ฐํ์ง ์์
package ch03.unit02;
public class Ex03 {
public static void main(String[] args) {
int a;
boolean b1, b2;
a = 10;
b1 = false;
b2 = a > 20 && (b1 = true); // ๋จ์ถ์ฐ์ฐ. &&:์์ด ๊ฑฐ์ง์ด๋ฉด ๋ค๋ ์ฐ์ฐํ์ง ์์
System.out.println(b1 + ", " + b2); // false, false
a = 10;
b1 = false;
b2 = a < 20 && (b1 = true);
System.out.println(b1 + ", " + b2); // true, true
a = 10;
b1 = false;
b2 = a > 20 || (b1 = true);
System.out.println(b1 + ", " + b2); // true, true
a = 10;
b1 = false;
b2 = a < 20 || (b1 = true); // ๋จ์ถ์ฐ์ฐ. ||๋ ์์ด ์ฐธ์ด๋ฉด ๋ค์ฐ์ฐ์ ํ์ง ์์
System.out.println(b1 + ", " + b2); // false, true
}
}
package ch03.unit02;
public class Ex04 {
public static void main(String[] args) {
int a, b;
boolean c;
System.out.println("a:20, b:20");
a = 20; b = 20;
c = ++a > 20 && ++b > 20;
System.out.println(a + ", " + b + ", " + c); // 21,21,true
a = 20; b = 20;
c = a++ > 20 && ++b > 20;
System.out.println(a + ", " + b + ", " + c); // 21,20,false
a = 20; b = 20;
c = ++a > 20 && b++ > 20;
System.out.println(a + ", " + b + ", " + c); // 21,21,false
a = 20; b = 20;
c = ++a > 20 || ++b > 20;
System.out.println(a + ", " + b + ", " + c); // 21,20,true
a = 20; b = 20;
c = a++ > 20 || ++b > 20;
System.out.println(a + ", " + b + ", " + c); // 21,21,true
a = 20; b = 20;
c = ++a > 20 || b++ > 20;
System.out.println(a + ", " + b + ", " + c); // 21,20,true
}
}
๋นํธ ์ฐ์ฐ์
ํผ ์ฐ์ฐ์๋ก byte, short, char, int, long ํ์ ๋ง ๊ฐ๋ฅํ๋ฉฐ,
double, floatํ์ ์ฌ์ฉํ ์ ์๋ค.
booleanํ์ ๋นํธ ๋จ์ shift ์ฐ์ฐ์ ์ ํํ ๋๋จธ์ง ๋นํธ ๋จ์ ์ฐ์ฐ์ ๊ฐ๋ฅํ๊ณ ๊ฒฐ๊ณผ๋ boolean ํ์ด๋ค.
byte, short, char ํ์ ์ ๊ฒฝ์ฐ ํผ ์ฐ์ฐ์๋ฅผ int๋ก ์๋ ๋ณํํ์ฌ ์ฐ์ฐ ํ๋ฏ๋ก, ๊ฒฐ๊ณผ์ ์๋ฃํ์ int ํ์ด๋ค.
๋นํธ ๋จ์ ๋ถ์ ์ฐ์ฐ์
์ปดํจํฐ ๋ด๋ถ 2์ง์ ๊ฐ์ 1์ ๋ณด์(๋ฐ์ )๋ ๊ฐ์ ๊ตฌํ๋ ๋จํญ ์ฐ์ฐ์
์ฐ์ฐ์ ์๋ฏธ ex ~ ํด๋น ๋นํธ๋ฅผ ๋ฐ์ (0→1,1→0) b = ~a; a๊ฐ์ ๋นํธ ๋จ์๋ก ๋ฐ์ ์์ผ b์ ๋์
๋นํธ ๋จ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์
์ ์ํ ์๋ฃ์ ๋ด๋ถ 2์ง์ ๊ฐ์ ๋์์ผ๋ก ๋ ผ๋ฆฌ ์ฐ์ฐ์ ์ํํ๋ ์ดํญ ์ฐ์ฐ์
์ฐ์ฐ์ ์๋ฏธ ex & ๋นํธ ๋จ์ AND c = a & b; a์ b๋ฅผ ๋นํธ๋จ์ AND ์ฐ์ฐ ํ c์ ๋์ | ๋นํธ ๋จ์ OR c = a | b; a์ b๋ฅผ ๋นํธ๋จ์ OR์ ์ฐ์ฐ ํ c์ ๋์ ^ ๋นํธ ๋จ์ Exclusive OR c = a ^ b; a์ b๋ฅผ ๋นํธ๋จ์ XOR ์ฐ์ฐ ํ c์ ๋์
์๋ก ๋ค๋ฅผ๋ 1๊ฐ์ ๊ฐ๊ณ , ๊ฐ์๋๋ 0๊ฐ์ ๊ฐ๋๋ค.
package ch03.unit03;
public class Ex01 {
public static void main(String[] args) {
int a, b;
a = 10; // 0000 1010
b = ~a; // 1111 0101
System.out.println(a + ", " + b); // 10, -11
a = -10; // 1111 0110
b = ~a; // 0000 1001
System.out.println(a + ", " + b); // -10, 9
a = 13; // 0000 1101
b = 7; // 0000 0111
System.out.println("a&b:" + (a&b)); // 5:0101
System.out.println("a|b:" + (a|b)); // 15:1111
System.out.println("a^b:" + (a^b)); // 10:1010
}
}
๋นํธ ๋จ์ ์ด๋(shift) ์ฐ์ฐ์
์ ์ํ ์๋ฃ์ ๋ด๋ถ ๋นํธ๋ฅผ ์ข์ธก ๋๋ ์ฐ์ธก์ผ๋ก ์ด๋(shift)์ํค๋ ์ดํญ ์ฐ์ฐ์
์ฐ์ฐ์ ์๋ฏธ ex >> ์ฐ์ ์ ์ฐ์ธก Shift ์ฐ์ฐ์ c = a >> b; a๋ฅผ 2์ง์๋ก ๋ณํ ํ b ๋นํธ๋งํผ ์ฐ์ธก์ผ๋ก ์ด๋
(์ด๋์ผ๋ก ์๊ธด ์ผ์ชฝ ์๋ฆฌ๋ MSB(๋ถํธ)๋ก ์ฑ์)<< ์ฐ์ ์ ์ข์ธก Shift ์ฐ์ฐ์ c = a << b; a๋ฅผ 2์ง์๋ก ๋ณํ ํ b ๋นํธ๋งํผ ์ข์ธก์ผ๋ก ์ด๋
(์ด๋์ผ๋ก ์๊ธด ์ฐ์ธก ์๋ฆฌ๋ 0์ผ๋ก ์ฑ์)>>> ๋ ผ๋ฆฌ์ ์ฐ์ธก Shift ์ฐ์ฐ์ c = a >>> b; a๋ฅผ 2์ง์๋ก ๋ณํ ํ b ๋นํธ๋งํผ ์ฐ์ธก์ผ๋ก ์ด๋
(์ด๋์ผ๋ก ์๊ธด ์ผ์ชฝ ์๋ฆฌ๋ 0์ผ๋ก ์ฑ์)
package ch03.unit03;
public class Ex02 {
public static void main(String[] args) {
// bit ๋จ์ shift ์ฐ์ฐ์
int a, b;
a = 128;
System.out.println("a:" + a);
b = a << 3; // ์ข์ธก์ผ๋ก 3๋นํธ ์ด๋. a * (2์3์น)๊ณผ ๋์ผ
System.out.println("a<<3 : " + b); // 1024
b = a >> 3; // ์ฐ์ธก์ผ๋ก 3๋นํธ ์ด๋. a / (2์3์น)๊ณผ ๋์ผ
System.out.println("a>>3 : " + b); // 16
a = -128;
System.out.println("\na:" + a);
b = a << 3;
System.out.println("a<<3 : " + b); // -1024
b = a >> 3; // ์ฐ์ธก์ผ๋ก ์ด๋ํ๊ณ ๋น์๋ฆฌ๋ ๋ถํธ๋ก ์ฑ์
System.out.println("a>>3 : " + b); // -16
b = a >>> 3; // ๋
ผ๋ฆฌ์ ์ฐ์ธก shift
// ์ฐ์ธก์ผ๋ก ์ด๋ํ๊ณ ๋น์๋ฆฌ๋ 0์ผ๋ก ์ฑ์
System.out.println("a>>>3 : " + b);
}
}
package ch03.unit03;
public class Ex03 {
public static void main(String[] args) {
int a = 13, b = 10;
System.out.println(a + " : " + (a%2==0) ); // false
System.out.println(b + " : " + (b%2==0) ); // true
// & ์ด == ๋ณด๋ค ์ฐ์ฐ ์์๊ฐ ๋๋ฆผ
System.out.println(a + " : " + ((a&1)==0) ); // false
System.out.println(b + " : " + ((b&1)==0) ); // true
// a:13=>1101 b:10=>1010
// & 0001 & 0001
// => 0001 => 0000
}
}
package ch03.unit03;
import java.util.Scanner;
public class Ex04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a, b;
System.out.print("๋์ ? ");
a = sc.nextInt();
b = sc.nextInt();
System.out.println("a:" + a + ", b:" + b);
/*
// ๋ ๋ณ์๊ฐ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ 1
int c;
c = a; a = b; b = c;
*/
// ๋ ๋ณ์๊ฐ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ 2
a = a ^ b;
b = b ^ a;
a = a ^ b;
System.out.println("a:" + a + ", b:" + b);
sc.close();
}
}
package ch03.unit03;
public class Ex05 {
public static void main(String[] args) {
int a = 123;
int key = 7788;
System.out.println("a:" + a);
a = a ^ key; // ์ํธํ์ ๊ธฐ๋ณธ ์ฐ์ฐ์ ์ฌ์ฉ
System.out.println("์ํธํ : " + a);
a = a ^ key;
System.out.println("๋ณตํธํ : " + a);
}
}
๋์ ์ฐ์ฐ์
์ฐ์ธก์ ๊ฐ์ ์ข์ธก์ ๋์
์ฐ์ฐ์ ์๋ฏธ ex = ์ฐ๋ณ์ ๊ฐ์ ์ข๋ณ์ ๋์ a = b; b์ ๊ฐ์ a๋ณ์์ ๋์
๋ฐฐ์ ์ฐ์ฐ์
๋จผ์ ๋ฐฐ์ ๋์ด ์๋ ์ฐ์ฐ์ ํ ํ์ ๊ฒฐ๊ณผ์ ๋ํ ๋์ ์ฐ์ฐ์ด ์ผ์ด๋จ
์๋ฃํ์ ์ ์ง์ํค๋ฉด์ ์ฐ์ฐ์ ์ํํ๋ฏ๋ก ์๋๊ฐ ๋น ๋ฅด๋ค
byte,char,shortํ์ ๋ํ ์ฐ์ฐ์์ intํ์ผ๋ก ํ ๋ณํ์ด ์ผ์ด๋์ง ์๊ณ ์๋ฃ ํ์ด ์ ์ง๋๋ค.
์ฐ์ฐ์ ์๋ฏธ ex += ์ข๋ณ๊ณผ ์ฐ๋ณ์ ๊ฐ์ ๋ํด์ ์ข๋ณ์ ๋์ a += b; a = a + b; -= ์ข๋ณ์์ ์ฐ๋ณ์ ๊ฐ์ ๋บ ํ ์ข๋ณ์ ๋์ a -= b; a = a - b; *= ์ข๋ณ๊ณผ ์ฐ๋ณ์ ๊ฐ์ ๊ณฑํด์ ์ข๋ณ์ ๋์ a *= b; a = a * b; /= ์ข๋ณ์์ ์ฐ๋ณ์ ๊ฐ์ ๋๋ ํ ์ข๋ณ์ ๋์ a /= b; a = a / b; %= ์๋ณ์์ ์ฐ๋ณ์ ๊ฐ์ ๋๋ ๋๋จธ์ง๋ฅผ ์ข๋ณ์ ๋์ a %= b; a = a % b; <<= ์ข๋ณ ๊ฐ์ ์ฐ๋ณ ์๋งํผ ๋นํธ๋จ์๋ก ์ข์ธก ์ด๋ํ ๊ฐ์ ์ข๋ณ์ ๋์ a <<= b; a = a << b; >>= ์ข๋ณ ๊ฐ์ ์ฐ๋ณ ์๋งํผ ๋นํธ๋จ์๋ก ์ฐ์ธก ์ด๋ํ ๊ฐ์ ์ข๋ณ์ ๋์ a >>= b; a = a >> b; >>>= ์ข๋ณ ๊ฐ์ ์ฐ๋ณ ์๋งํผ ๋นํธ๋จ์๋ก ์ฐ์ธก ์ด๋ํ ๊ฐ์ ์ข๋ณ์ ๋์ (๋น ๊ณต๊ฐ์ 0์ผ๋ก ์ฑ์) a >>>= b; a = a >>> b' &= ์ข๋ณ๊ณผ ์ฐ๋ณ์ ๊ฐ์ ๋นํธ๋จ์ AND ์ฐ์ฐ ํ์ ์ข๋ณ์ ๋์ a &= b; a = a & b; ^= ์ข๋ณ๊ณผ ์ฐ๋ณ์ ๊ฐ์ ๋นํธ๋จ์ ๋ฒ ํ์ OR ์ฐ์ฐ ํ์ ์ข๋ณ์ ๋์ a ^= b; a = a ^ b; != ์ข๋ณ๊ณผ ์ฐ๋ณ์ ๊ฐ์ ๋นํธ๋จ์ OR ์ฐ์ฐ ํ์ ์ข๋ณ์ ๋์ a != b; a = a | b;
package ch03.unit04;
public class Ex01 {
public static void main(String[] args) {
// ๋ฐฐ์ ์ฐ์ฐ์
short a, b;
a = 10; b = 5;
a = (short)(a + b); // ํ๋ณํ ํด์ผ ํจ
System.out.println(a);
a = 10; b = 5;
a += b; // ํ๋ณํ์ด ์ผ์ด๋์ง ์์ผ๋ฉฐ ์๋ณด๋ค ์ฐ์ฐ ์๋ ๋น ๋ฆ
System.out.println(a);
char c = 'A';
c += 10;
System.out.println(c); // K
float f = 3.5f;
c = 'A';
c += f;
System.out.println(c); // D
int n = 4;
n *= 0.6;
System.out.println(n); // 2
}
}
package ch03.unit04;
public class Ex02 {
public static void main(String[] args) {
int a;
a = (+-+-+-((5%3)*(4/2)));
System.out.println(a); // -4
int x = 2, y = 5, z = 0;
x += 3 + 2;
System.out.println(x); // 7
x += y -= z = 4; // 8 1 4
System.out.println(x + "," + y + "," + z);
}
}