3-2. 論理演算(&、&、|、^、!)、さんこうえんざんし


論理演算=&、&、|、^、!
&=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.Null PointerExceptionエラー
String nameにはアドレスnameが格納されていません等号が書けない
アドレスは名前に保存してequalsを書く必要があります
アドレスなしでnameに入るコマンド自体が間違っています


String name = null;

if(name!=null&&name.equals(「名前」){

System.out.println(「名前」);

}
nameがnullでない場合は「name」を実行します
nameがnullの場合、エラーは発生しません.

or(|,|)どちらかがtrueの場合はtrue
0||0=0,0||1=0,1||0=0,1||1=1//前は1,後ろは見ない

排他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)
    &:ショッピングモール検索、デジタルレンジ/ノートパソコン+サムスン検索
    |:Google検索/掲示板検索、ポータル検索-タイトル、本文に何かある場合は出力

    条件式の場所じょうけんしきのばしょ:論理演算子ろんりえんざんし


    ビット演算子:機械操作用-&、|、^、~、<、>>
    ぶんかつ
    文の場所の操作:ビット演算子

    *3項演算子ConditionOperation(主に条件式に使用)=条件演算子
    プログラムを短く書きたいです.好き嫌い

    (条件)?"True":"False"

    (pageObject.key == "t")? 「selected」:「-->真面select/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項演算子の結果は同じです