IT이야기

Java에서 int가 null일 수 있는가?

cyworld 2022. 4. 29. 23:10
반응형

Java에서 int가 null일 수 있는가?

캔앤int있다null자바에서?

예를 들면 다음과 같다.

int data = check(Node root);

if ( data == null ) {
 // do something
} else {
 // do something
}

나의 목표는 a를 반환하는 함수를 쓰는 것이다.int라고 말했다.int노드의 높이에 저장되어 있는데 노드가 없으면 null이 되는데, 내가 그걸 확인해야겠어.

숙제로 하고 있지만 이 부분은 숙제의 일부가 아니라 내가 하고 있는 일을 잘 헤쳐나가도록 도와준다.

코멘트에 감사하지만, 실제로 코드 아래에 있는 것을 읽은 사람은 거의 없는 것 같다. 나는 어떻게 하면 이 목표를 달성할 수 있는지 묻고 있었다. 그것은 효과가 없다는 것을 쉽게 알아낼 수 있었다.

int null일는 없지만Integer can. null Integers를 풀 때는 머리가 긁히고 혼동을 일으킬 수 있으므로 주의해야 한다.

예:

int a = object.getA(); // getA returns a null Integer

A을 줄 것이다.NullPointerException물체가 null이 아님에도 불구하고!

질문에 대한 후속 조치를 위해, 값이 없음을 나타내려면, 나는 조사하겠다.java.util.Optional<Integer>

아니오. 개체 참조만 원시 값이 아니라 null일 수 있음.

다음과 같은 정보를 얻을 수 있는 좋은 방법:

public static void main(String args[]) {
    int i = null;
}

컴파일해봐.

자바에서 int는 원시적인 유형이며 개체로 간주되지 않는다.개체만 null 값을 가질 수 있다.그래서 당신의 질문에 대한 대답은 "아니오" 입니다. 그것은 무효일 것이다.하지만 그것은 그렇게 간단하지 않다. 왜냐하면 대부분의 원시적인 유형을 나타내는 물체들이 있기 때문이다.

정수 클래스는 int 값을 나타내지만 null 값을 포함할 수 있다.너의 상황에 따라check메소드, int 또는 Integer를 반환할 수 있음.

이런 행동은 ints와 같은 "원초적인" 것조차 사물로 간주되는 루비 같은 일부 더 순수하게 객체 지향적인 언어와는 다르다.

위의 모든 답변과 함께 이 점을 덧붙이고 싶다.

원시 유형의 경우, 우리는 고정 메모리 크기를 가지고 있다. 즉, 우리는 4바이트를 가지고 있고 char는 2바이트를 가지고 있다.그리고 null은 메모리 크기가 고정되어 있지 않기 때문에 객체에만 사용된다.

그래서 기본적으로,

   int a=0;

아닌 것 같다

   int a=null;

다른 원시 유형과 동일하므로 null은 원시 유형에만 사용되며 원시 유형에는 사용되지 않는다.

암호는 컴파일도 안 돼오직 완전한 가치만이 있을 수 있다.null, like.다음은 null을 테스트할 수 있는 시기를 보여 주는 기본 예:

Integer data = check(Node root);

if ( data == null ) {
 // do something
} else {
 // do something
}

만약 , 만에 ifcheck()귀환을 선언하다int, 그것은 결코 있을 수 없다.null그리고 전체if-else블럭은 그 후 과잉이다.

int data = check(Node root);

// do something

자동 복싱 문제는 다음과 같은 경우에도 적용되지 않는다.check()귀환을 선언하다int. 만약 그것이 돌아왔다면.Integer, 그러면 당신은 위험을 무릅쓸지도 모른다.NullPointerException에 할당하는 경우int대신에Integer.로 할당Integer그리고 사용if-else그렇다면 블록은 정말로 의무적이었을 것이다.

자동 복사에 대한 자세한 내용은 이 Sun 가이드를 참조하십시오.

라고 선언하는 대신에int i라고 선언하다.Integer i그러면 우리는 할 수 있다.i=null;

Integer i;
i=null;

정수 개체가 가장 좋을 것이다.원시 요소를 사용해야 하는 경우 사용 사례에 없는 값을 사용할 수 있다.부정적인 키는 사람에게 존재하지 않기 때문에

public int getHeight(String name){
    if(map.containsKey(name)){
        return map.get(name);
    }else{
        return -1;
    }
}

아니, 하지만 그럴 수 있어.

int[] hayhay = null; //: allowed (int[] is reference type)
int   hayno  = null; //: error   (int   is primitive type)
                     //: Message: incompatible types: 
                     //: <null> cannot be converted to int

@Glen이 논평에서 언급했듯이, 당신은 기본적으로 이것을 둘러싸고 두 가지 방법을 가지고 있다.

  • "Out of bound" 값을 사용한다.예를 들어, "데이터"가 정상적인 사용에서 음수일 수 없는 경우 음수 값을 반환하여 유효하지 않음을 표시하십시오.
  • 정수 사용."체크" 메서드가 "정수"를 반환하고 int가 아닌 "정수"에 할당했는지 확인하십시오.왜냐하면 "int"가 도중에 끼어들면 자동 복싱과 언복싱이 문제를 일으킬 수 있기 때문이다.

수표() 메서드에서 null을 확인하고 -1 또는 null인 경우 0과 같은 잘못된 값을 반환하십시오.그러면 그 수표는 null을 그대로 전달하기 보다는 그 값에 대한 것이 될 것이다.이것은 옛날 'C'에서 하는 정상적인 일일 것이다.

Java가 Nument to Boolean,Boolean to Boolean과 같은 내용을 저장하기 위한 Wrapper 클래스를 제공했으므로 int, boolean, float 등과 같은 Prival 데이터 유형은 null(측면)을 저장할 수 없다.

예: 정수 i=null;

int는 null이 아니며, 초기화되지 않으면 0일 수 있다.정수가 null이 되도록 하려면 int 대신 Integer를 사용해야 한다. primitive는 null 값이 없다. int의 기본 have는 0이다.

데이터 유형/기본값(필드의 경우)

int ---------------------------------------------------------------------

긴 -------------------- 0L

--------------------------- 0.0f

이중 ------------------- 0.0d

char ----------------------- '\u0000'

문자열 ------------------- null

부울 ------------ 거짓

목표를 달성하기 위한 다른 방법을 요구하기 때문에 포장지 클래스를 사용하는 것이 좋다.

new Integer(null);

나는 전문가는 아니지만, 나는 그 사람이nullint와 동등한0.

예를 들어, 만약 여러분이int[], 각 슬롯은 다음을 포함한다.0에 반하여null다른 것으로 설정하지 않는 한.

어떤 상황에서는 이것이 유용할 수 있다.

참조URL: https://stackoverflow.com/questions/2254435/can-an-int-be-null-in-java

반응형