3-2. 논리 연산(&, &&, | ,||, ^, !), 3항연산자

13211 단어 22/4/1522/4/15

논리 연산 = &, &&, | ,||, ^, !

& = 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항연산자 결과가 같다

좋은 웹페이지 즐겨찾기