programing

Java에서 부울 변수를 전환하는 가장 깨끗한 방법?

goodcopy 2022. 7. 24. 23:03
반응형

Java에서 부울 변수를 전환하는 가장 깨끗한 방법?

단순한 if-else보다 Java에서 부울을 부정하는 더 좋은 방법이 있을까요?

if (theBoolean) {
    theBoolean = false;
} else {
    theBoolean = true;
}
theBoolean = !theBoolean;
theBoolean ^= true;

변수가 4글자 이상일 경우 키 입력 감소

편집: 코드는 Google 검색어로 사용할 때 유용한 결과를 반환하는 경향이 있습니다.위의 코드는 그렇지 않습니다.필요한 사용자에게는 여기에 설명같이 비트 단위 XOR입니다.

몇 개 있다

(대부분의 사람들에게) '명백한' 방법

theBoolean = !theBoolean;

가장 짧은 방법(대부분)

theBoolean ^= true;

가장 시각적인 방법(가장 불확실한 방법)

theBoolean = theBoolean ? false : true;

추가: 메서드 호출에서 전환 및 사용

theMethod( theBoolean ^= true );

할당 연산자는 항상 할당된 값을 반환하므로 비트 연산자를 통해 값이 전환되고 메서드 호출에서 사용되는 새로 할당된 값이 반환됩니다.

이 답변은 "자바 반전 부울 함수"를 검색할 때 표시됩니다.다음 예에서는 특정 정적 분석 도구가 분기 논리로 인해 빌드에 실패하는 것을 방지합니다.이 기능은 부울을 반전할 필요가 있고 포괄적인 유닛 테스트를 구축하지 않은 경우에 유용합니다.

Boolean.valueOf(aBool).equals(false)

또는 다음 중 하나를 선택합니다.

Boolean.FALSE.equals(aBool)

또는

Boolean.FALSE::equals

Boolean NULL 값을 사용하여 false로 간주할 경우 다음 절차를 수행합니다.

static public boolean toggle(Boolean aBoolean) {
    if (aBoolean == null) return true;
    else return !aBoolean;
}

Boolean NULL 값을 전달하지 않을 경우 다음을 수행합니다.

static public boolean toggle(boolean aBoolean) {
   return !aBoolean;
}

메서드 시그니처의 의도를 나타내며 ! 연산자에 비해 읽기 쉽고 디버깅도 용이하기 때문에 가장 깨끗한 것입니다.

사용.

boolean bTrue = true
boolean bFalse = false
boolean bNull = null

toggle(bTrue) // == false
toggle(bFalse) // == true
toggle(bNull) // == true

물론 Groovy 또는 확장 메서드를 허용하는 언어를 사용하는 경우 확장을 등록하고 다음을 수행할 수 있습니다.

Boolean b = false
b = b.toggle() // == true

학급.BooleanUtils는 부울 부정을 지원합니다.이 클래스는 commons-lang: commons-lang에서 찾을 수 있습니다.

BooleanUtils.negate(theBoolean)

특별히 전문적인 일을 하고 있지 않다면 언제든지 Util 클래스를 사용할 수 있습니다.예: 클래스의 프로젝트에서 사용되는 클래스입니다.

public class Util {


public Util() {}
public boolean flip(boolean bool) { return !bool; }
public void sop(String str) { System.out.println(str); }

}

Util 객체를 생성하기만 하면 됩니다.Util u = new Util();뭔가 돌려줄 게 있어서System.out.println( u.flip(bool) );

같은 것을 반복해서 사용하게 될 경우에는 메서드를 사용합니다.특히 프로젝트 전체에 걸쳐 있는 경우에는 Util 클래스를 만듭니다.그러나 업계 표준이 무엇인지 알 수 없습니다.(경험이 풍부한 프로그래머가 자유롭게 정정해 주세요.)

아쉽게도 숫자가 증가/감소하는 것과 같은 짧은 형식은 없습니다.

i++;

다음과 같이 부울, dmth를 반전시키는 유사한 짧은 식을 사용하고 싶습니다.

비어있습니다!;

이전:

boolean result = isresult();
if (result) {
    result = false;
} else {
    result = true;
}

그 후:

boolean result = isresult();
result ^= true;

언급URL : https://stackoverflow.com/questions/224311/cleanest-way-to-toggle-a-boolean-variable-in-java

반응형