3-2. 논리 연산(&, &&, | ,||, ^, !), 3항연산자
논리 연산 = &, &&, | ,||, ^, !
& = and (둘다맞아야 true) 앞이 0 이라 false 라도 뒤에 0, 1 도 한번더 확인한다
0 & 0 = 0, 0 & 1 = 0, 1 & 0 = 0, 1 & 1 = 1 // 1 = true 0 = false
&& = and : 앞이 0 이면 바로 결과 도출 (스마트 연산자) 뒤에 스킵
0 && 0 = 0, 0 && 1 = 0, 1 && 0 = 0, 1 && 1 = 1
String name = null;
if(name.equals("이름")) {
System.out.println("이름");
java.lang.NullPointerException 에러남
String name 에 저장된 주소가 없어서 name.equals 를 쓸수없다
/ 주소가 저장되어야 name안에 들어가 equals를 쓸수있다
주소가 없으니 name 안에 들어간다는 명령어자체가 에러나는것
String name = null;
if(name != null && name.equals("이름")) {
System.out.println("이름");
}
name 이 null 이 아니어야 하고 "이름" 이어야 if 실행
name 이 null 이라 if 실행 안돼서 에러 안남
or ( |, ||) 둘중 하나만 true 면 true
0 || 0 = 0, 0 || 1 = 0, 1 || 0 = 0, 1 || 1 = 1 // 앞에 1 이면 뒤에 안본다
exclusive or(배타적 논리합)= ^ = 서로 다른것일때 true // true가 홀수면 true가 나온다
0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0
잘 안씀
- ! (반대)
!0 -> 1 // !1 -> 0
점수(score)가 60점 이상(>=)이 아니면(!)
if(!(score >= 60)) = if(score < 60)
import java.util.Scanner;
public class LogicalOperatorExample {
public static Scanner scanner = new Scanner(System.in);
// public static Scanner scanner; 하면 초기값 null 이되어 못쓴다
public static void main(String[] args) {
// TODO Auto-generated method stub
//char 'A' -> int : 자동 캐스팅 65
// int charCode = 'A';
System.out.print("문자 하나를 입력하시오. -> ");
String in = scanner.nextLine();
int charCode = in.charAt(0); //index 의 0 번째를 가져온다
// System.out.println(charCode);
// System.out.println((int)'Z'); //65~90 사이는 대문자
// System.out.println((int)'a');
// System.out.println((int)'z');
// System.out.println((int)'0');
// System.out.println((int)'9');
//65~90 사이는 대문자 // 97~122 소문자 // 48~57 숫자영역
//charCode가 어떤 영역(숫자,대문자,소문자 인가?)확인
//대문자 인가?
//2개 조건 모두 맞을때 if문 실행
if (charCode >= 65 && charCode <= 90) System.out.println("대문자 이군요");
else if (charCode >= 97 && charCode <= 122) System.out.println("소문자 이군요");
else if (charCode >= 48 && charCode <= 57) System.out.println("숫자 이군요");
else System.out.println("영역을 구분할 수 없습니다.");
String name = "";
//null과 다르다 "" 주소는 있지만 데이터가 없는뜻 null 은 주소자체가 없다
// System.out.println(name.length());
// 에러남 주소가없음 찾아갈 곳이없다 null으로 표시되지않는다
//이름이 없거나 길이가 0 이면 데이터가 없습니다. 로 출력해보자
// t && t && f && t -> f //
//앞쪽 F 인데 뒤쪽까지 확인해서 에러남
// if(name != null & name.length() != 0)System.out.println("데이터가 있습니다.");
// 앞쪽 T 라 뒤쪽 확인 해서 에러남
// if(name != null && name.length() != 0)System.out.println("데이터가 있습니다.");
// 앞쪽이 F 라 뒤쪽 갈일이 없음 에러 발생 안함
if(name != null & name.length() != 0)System.out.println("데이터가 있습니다.");
else System.out.println("데이터가없습니다.");
//or : 한개라도 t이면 t가 된다
// t || f || f || f -> t
// x-or 서로 다른 신호가 와야 t
// f ^ f : f
// f ^ t : t
// f ^ t ^ f ^ t ^ t : t (t 의 개수가 홀수면 t가 나온다.
}
}
우선순위 & -> |(or)
& : 쇼핑몰 검색, 숫자 범위 / 노트북 + 삼성 검색
| : 구글 검색 / 게시판 검색, 포탈사이트 검색 - 제목, 본문에 하나라도 있으면 출력
조건식위치 : 논리 연산자
비트연산자 : 기계동작 시킬때 쓴다 - &, |, ^, ~, <<, >>, >>>
구분
처리문 위치 : 비트연산자
*삼항연산자 ConditionOperation(조건식에 주로사용) = 조건연산자
프로그램을 짧게쓰려고 쓴다.. 호불호 갈림 // 일단 쓰는것으로 배움
(조건)?"True":"False"
(pageObject.key == "t")? "selected": "" --> true면 selected / false 면 빈칸
int score = 85; //85 합격
if(score >= 60) System.out.println("합격");
else System.out.println("불합격");
//3항 연산자 = 조건 연산자
System.out.println((score >= 60)? "합격":"불합격");
String result = (score >= 60)? "합격":"불합격"; //변수에 저장해서 쓸수있다
System.out.println(result);
if문 2줄과 3항연산자 결과가 같다
Author And Source
이 문제에 관하여(3-2. 논리 연산(&, &&, | ,||, ^, !), 3항연산자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hoan0418/3-2.-논리-연산-3항연산자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)