ctrl + alt 위아래 방향키 그 줄 (혹은 블록한 줄) 복사
/*
5. 비교연산자
- 두 개의 변수 또는 리터럴을 비교하는데 사용하는 연산자
- 주로 조건문과 반복문의 조건식에 사용되며 연산결과는 true 또는 false의
결과를 가진다.
- 이항연산자이다 (두개가 있어야 비교가능)
6. 대소비교연산자 (< > <=, >=)
- 사용할수없는것 (boolean, 참조형(주소가 랜덤으로생김)에는 사용하지X
7. 등가비교연산자 ( ==, != )
- 모든 자료형에 사용가능 ( 기본형뿐만 아니라 boolean, 참조형도 가능)
- 기본형변수에는 저장된 값을 비교하고, 참조형의 경우 주소를 비교한다.
수식 연산결과
x>y x가 y보다 클떄만 true 그 외엔, false
x<y x가 y보다 작을때만 true 그 외엔, false
x>=y x가 y보다 크거나 같을때만 true 그 외엔, false
x<=y x가 y보다 작거나 같을때만 true 그 외엔, false
x==y x와 y가 같을때만 true 그 외엔, false
x!=y x와 y가 다를떄만 true 그 외엔, false
*/
System.out.println('0'==0); // char타입의 0과 숫자 0 이 같나?
//char int > int int > char0 = 48
//즉 49는 0과 다르니까 false
System.out.println(10 == 10f); //int float > float float
System.out.println(0.5 == 0.5f); //double float > double double
System.out.println(0.1 == 0.1f); //다르다 왜?
//double은 정확하게 0.1을 지목하지않음. 0.5는 0.5인데
//double은 2의 n승으로 표현하는데,
//2^1 = 1*2
//2^-1 = 1/2 = 0.5 < double로 정확히 표현이 됨
//0.1은 2의 n승으로 표현이 안됨
//2^-2,2^-3 (0.25,0.125..)등만 정확히 표현되고 나머지는 근사치로 표현됨 (double타입얘기임)
/*
8. 비트연산자 (&, |, ^) ( 비트붙었으니 2진수로 바꾸고시작 )
- 이진비트연산을 수행한다
- 실수형을 제외한 기본 자료형에 사용할 수 있다.
| (or연산) - 피연산자중 한쪽의 값이 1이면 1의 결과를 가진다. (합집합)
& (and연산 ) - 피연산자중 양쪽모두 1이면 1의 결과를 가진다. (교집합)
^ (XOR연산) - 피연산자가 서로 다를때만 1의 결과를 가진다.(여집합 = 합집합-교집합)
-전자기 회로만들때 많이씀
*/
System.out.println(3|5);
System.out.println(3&5);
System.out.println(3^5);
/*
9. 논리연산자 (왼쪽의 논리결과와 오른쪽논리결과를 합쳐서 결과를 다시연산할떄)
- 피연산자로 boolean형 또는 boolean형 값을 결과로 하는 조건식만 허용한다.
- 조건식의 결합에 사용한다.
- &&가 ||보다 연산 우선순위가 높다. (and가 * or가 더하기 느낌)
&& (and결합) - 피연산자 양쪽 모두 true일때만 true의 결과를 가진다.
|| (or결합) - 피연산자중 한쪽만 true이면 true의 결과를 가진다.
사용자로부터 받은 값이 5 초과 20 미만일때 true의 결과를 가지도록 프로그래밍하여라
*/
int input = 8;
//5 < input <20
//두개나 나눠야함 5 < input && input <20 이렇게
boolean result32 = 5 < input && input <20; // 5<input도 불린이고 뒤도 불린이니까
System.out.println("입력하신"+input+"를(을) 5초과 20미만의 범위를 검사한 결과는 " + result32 + "이다");
//1.
char cho1 = 'z';
//boolean re1 = 65<=cho1 && cho1<=90;
boolean re1 = 'A'<=cho1 && cho1<='Z';
System.out.println(re1);
//boolean re2 = 97<=cho1 && cho1<=122;
boolean re2 = 'a'<=cho1 && cho1<='z';
System.out.println(re2);
boolean re3 = 'A'<=cho1 && cho1<='Z'||'a'<=cho1 && cho1<='z';
System.out.println(re3);
boolean re4 = '0'<=cho1 && cho1 <='9';
//char에서 숫자형은 0~9까지밖에안됨 (10은 두글자니까)
System.out.println(re4);
//**ASCII코드 찾아서 하는게 아니었다! 순차적인것만 알면 계산은 컴터가해주니까 문자로쓰면됨
//'A'~'z'까지 하면 되는거 아니냐? no 아스키코드표보면 그 중간에는 특수문자가 껴있음
/*
10. 삼항연산자
- 세 개의 피연산자를 필요로 하기 때문에 삼항연산자로 이름 지어진다.
- 기본구조
(조건식) ? 식1(true일때 수행) : 식1(false일때 수행)
*/
int so = -10;
int absX = x >=0? x : -x; // 절대값구하는..
//1.경우의 수가 두가지일때 사용한다.
//2.true일때와 false일때의 타입은 일치해야함 (결과값은 하나에 담기때문에 타입도 하나)
char xx = 'a';
String rr = 'A'<=xx && xx <='Z'? "대문자" : 'a'<=xx && xx<='z'? "소문자" : "영문자아님";
System.out.println(rr);
//경우의 수가 3개
//경우의 수를 줄일 수 있다. 대/소/그외를 두개씩 쪼개야한다.
/*
11. 대입연산자 ( =, op= )
- 변수의 값 또는 수식의 연산결과를 저장하는데 사용한다.
- 연산우선순위가 가장 낮다.
*/
int i = 10;
//i1 에 20을 더한 값을 i1에 저장해 주세요
i = i+20;
System.out.println(i);
//근데 i를 두번쓰는게 귀찮아짐
i += 20;
System.out.println(i);
char c5 = 'A';
//c5 = c5+2' // char와 int는 int로 바꿔지니까 char로 형변환 해줘야함
c5 += 2;// 근데 이건 에러가 안남 >>> op=는 자신의 타입을 유지시켜준다.
System.out.println(c5);