매일 조금씩 배우 기 Thinking in java: 9 관계 연산 자 & 단락

관계 연산 자 (관계 연산 자)
관계 연산 자 는 '불' (Boolean) 결 과 를 생 성 합 니 다.관계 가 진실 하고 true 가 생 성 된다.관계 가 거짓 이면 false 가 생 성 됩 니 다.관계 연산 자 는 (> 보다 작 음) (greater than), 작 거나 같 음 (< =) (less than and equal to), 크 거나 같 음 (> =) (greater than and equal to), 같 음 (= =) (equivalent) 은 같 지 않 음 (! =) (not equivalent) 을 포함한다.
= = 와! = 모든 주 유형 에 적용 되 지만 다른 비교 부 호 는 boolean 형식 에 적용 되 지 않 습 니 다.
다음 예 참조:
public class Equivalence {
	public static void main(String[] args) {
		Integer n1 = new Integer(47);
		Integer n2 = new Integer(47);
		System.out.println(n1 == n2);
		System.out.println(n1 != n2);
	}
} 

출력 false 와 true 이유: 두 Integer 대상 은 모두 같 습 니 다. 그러나 대상 의 내용 이 같 지만 핸들 은 다 릅 니 다. = 과! = 을 비교 하 는 것 이 바로 대상 핸들 입 니 다. 따라서 출력 결 과 는 실제 적 으로 false 이 고 true 입 니 다. 내용 을 비교 하려 면 방법 equals () 를 사용 하 십시오.이것 은 두 대상 이 가리 키 는 내용 을 인용 하 는 것 이 같은 지 비교 하 는 데 사 용 됩 니 다. 그러나 이 방법 은 원본 형식 을 사용 하지 않 고 원본 형식 은 직접 = 와! = 을 사용 하면 됩 니 다.
하지만 주의해 야 한다.
class Value {
	int i;
}
public class EqualsMethod2 {
	public static void main(String[] args) {
		Value v1 = new Value();
		Value v2 = new Value();
		v1.i = v2.i = 100;
		System.out.println(v1.equals(v2));
	}	
} 

결 과 는 false 입 니 다. 이것 은 equals () 의 기본 행동 이 구문 을 비교 하기 때 문 입 니 다. (override) equals () 방법 을 다시 쓰 지 않 아야 기대 결 과 를 얻 을 수 있 습 니 다. equals () 방법의 원본 코드 를 참고 하 십시오.
public boolean equals(Object anObject) {
  if (this == anObject) {
      return true;
  }
  if (anObject instanceof String) {
      String anotherString = (String)anObject;
      int n = value.length;
      if (n == anotherString.value.length) {
          char v1[] = value;
          char v2[] = anotherString.value;
          int i = 0;
          while (n-- != 0) {
              if (v1[i] != v2[i])
                  return false;
              i++;
          }
          return true;
      }
  }
  return false;
}

만약 매개 변수의 종류 가 String 이 아니라면 = 로 비교 합 니 다
논리 연산 자 (논리 연산 자)
논리 연산 자 AND (&), OR (| |) 및 NOT (!) 는 불 값 (true 또는 false) 을 생 성 할 수 있 습 니 다. 독립 변수의 논리 적 관 계 를 바탕 으로 합 니 다.
주의: 부동 소수점 은 매우 엄격 합 니 다. 한 숫자 가 소수 부분 에서 만 다른 숫자 와 아주 작은 차이 가 있 더 라 도 '같 지 않다' 고 생각 합 니 다. 한 숫자 가 0 보다 조금 더 크 더 라 도 (예 를 들 어 2 끊임없이 제곱 근 을 평평 하 게 하 는 것) '0 이 아 닌' 값 (nonzero) 에 속 합 니 다.
단락 (단락)
표현 식 의 진짜 나 가 짜 를 명확 하 게 정할 때 까지 논리 적 으로 값 을 구 합 니 다. 그 결 과 는 논리 적 표현 식 의 후반 부 에 값 을 구 하지 않 습 니 다. 다음 예 를 보십시오.
int  a=3,b=6;
if(a++>3&&--b<=6)   //当第一个条件为false时,第二个条件不判断不执行
		System.out.println("ok");//注意此处a先判断再++
else
		System.out.println("error");
System.out.println("a="+a+"\tb="+b);  //4   6

int  a=3,b=6;
if(a++>=3 || --b<=6)   //当第一个条件为true时,第二个条件不判断不执行
		System.out.println("ok");
else
		System.out.println("error");
System.out.println("a="+a+"\tb="+b);   //4  6

주의 와 위치 별 & 위치 별 또는/의 차이
int  a=3,b=6;
if(a++>3&--b<=6)   //这两个条件都判断并执行
	System.out.println("ok");
else
	System.out.println("error");
System.out.println("a="+a+"\tb="+b);

int  a=3,b=6;
if(a++>=3| --b<=6)   //这两个条件都判断并执行
	System.out.println("ok");
else
	System.out.println("error");
System.out.println("a="+a+"\tb="+b);  // 4  5

좋은 웹페이지 즐겨찾기