day 4 - 연산자
2022-03-04
단항연산자: ~ ! ++ -- (cast) -(부호)
// ~ (tilde): 이진논리 Not 연산자(1보수)
int n = 10;
System.out.printf("[%32s]\\n", Integer.toBinaryString( n ));
System.out.printf("[%32s]\\n", Integer.toBinaryString( ~n ));
// !: 일반논리Not 연산자 (결과값:boolean)
boolean bOk = !(3>2);
System.out.println(bOk);
// ++ -- : 증감연산자
// ++변수 : 전위형
// 변수++: 후위형
int a = 10;
a++;
System.out.printf("a=%d\\n", a);
// 복합연산에서 전(후)위형 연산자의 의미
int x = 10;
int y = 5;
int z;
z = ++x + y--;
System.out.printf("%d, %d, %d\\n",x,y,z);
// -(부호):
x = -10;
y = -x;
System.out.println(y);
//강제형변환 연산자 : cast 연산자
// 형식) (자료형)값
/*
자료형변환(Data Conversion)
1. 자동형변환 (묵시적 형변환): promotion
1) 연산시: 자료형이 큰 쪽으로 변환
1.0 + 1 -> X
double + (int->double) = 2.0
2) 대입시: 좌변항으로 형변환(단, 좌변항이 클 경우 )
int a = 10; // 초기화: 변수선언과 동시에 값을 넣는경우
좌변항 = 우변항
a = 100;
2. 강제형변환 (명시적형변환): demotion
*/
// 대입시 형변환(자동형변환)
double d;
// 좌 = 우
d = 10; // 10(int) -> 10.0(double)
//강제형변환
float f;
//float = (float)double
f = (float)1.0;
/*
산술연산자
*,/(몫),%(나머지)
+ -
*/
int x = 10, y = 3, z;
z = x + y;
System.out.printf("%d + %d = %d\\n", x, y, z);
z = x - y;
System.out.printf("%d - %d = %d\\n", x, y, z);
z = x * y;
System.out.printf("%d * %d = %d\\n", x, y, z);
z = x / y;
System.out.printf("%d / %d = %d\\n", x, y, z);
z = x % y; // % 를 문자로 인식 시키려면 %%
System.out.printf("%d %% %d = %d\\n", x, y, z);
// Format 서식 내에서 "나 \\를 문자로 인식하게 하는 법: \\" , \\\\
System.out.println("안녕\\\\하세요\\n \\"안녕\\"");
//몫
System.out.println(10.0/3);
System.out.println((int)10.0/3);
System.out.println((int)(10.0/3));
// 나머지
System.out.println(10.0 % 3);
System.out.println(3 % 10);
// JAVA int 형보다 작은 형 끼리 연산하면 결과는 int
// byte + byte -> int
// short short int
// byte short int
byte b1 = 1;
byte b2 = 2;
byte b3;
b3 = (byte) (b1 + b2);
// 관계연산자: > >= < <= == !=
// 결과값: boolean
int a = 5;
int b = 3;
System.out.printf("%d > %d -> %b\\n", a, b, a>b);
System.out.printf("%d >= %d -> %b\\n", a, b, a>=b);
System.out.printf("%d < %d -> %b\\n", a, b, a<b);
System.out.printf("%d <= %d -> %b\\n", a, b, a<=b);
System.out.printf("%d == %d -> %b\\n", a, b, a==b);
// 이진논리연산자 : &
System.out.printf("[%32s]: 7\\n", Integer.toBinaryString( 7 ));
System.out.printf("[%32s]: 5\\n", Integer.toBinaryString( 5 ));
System.out.printf("[%32s]: 7&5\\n", Integer.toBinaryString( 7 & 5 ));
System.out.printf("[%32s]: 7|5\\n", Integer.toBinaryString( 7 | 5 ));
System.out.printf("[%32s]: 7^5\\n", Integer.toBinaryString( 7 ^ 5 ));
// & ^ | + >> 활용사례
int birthday = 0x19880815;
System.out.printf("생년월일 : %x \\n", birthday);
int year = birthday >>>16;
System.out.printf("출생년도: %x년 \\n",year);
//출생월 추출
int month = birthday >> 8 & 0x000000ff;
System.out.printf("출생월: %x월\\n",month);
int day = birthday & 0xff;
System.out.printf("출생일: %x일\\n",day);
// ^를 이용해 월의 자리를 소거하기
// 0x19880815 8 : 1000 5 : 0101
// 0x00000800 8 : 1000 0 : 0000
// 0x19880015 0000 0101
birthday = birthday ^ 0x800;
System.out.printf("생년월일 : %x \\n", birthday);
System.out.printf("true && true : %b\\n", (true && true));
System.out.printf("true && false : %b\\n", (true && false));
System.out.printf("false && true : %b\\n", (false && true));
System.out.printf("false && false : %b\\n", (false && false));
System.out.println();
System.out.printf("true || true : %b\\n", (true || true));
System.out.printf("true || false : %b\\n", (true || false));
System.out.printf("false || true : %b\\n", (false || true));
System.out.printf("false || false : %b\\n", (false || false));
int x = 1;
int y = 2;
boolean bResult;
bResult = (--x > 0) && (++y > 0);
// ^ 이 연산이 이미 false이기 때문에 뒤의 명령은 수행하지 않는다.
// && 와 ||는 첫번째 연산에서 이미 결과가 나오면 다음 연산은 처리하지 않는다.
- 실습
Author And Source
이 문제에 관하여(day 4 - 연산자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@semihumanbeing/국비지원-day-4-연산자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)