>  기사  >  Java  >  Java 데이터 유형을 배우지 않았습니까? 자세가 쓸모없으니까!

Java 데이터 유형을 배우지 않았습니까? 자세가 쓸모없으니까!

Java学习指南
Java学习指南앞으로
2023-07-26 17:24:001412검색

작은 이야기

안녕하세요 여러분, 저는 세계에서 Qing 형제로 알려진 노드 형제입니다. 최근 인기 도서 "Java from Beginners to Burial"이 판매 중이라는 소식을 들었습니다. 주요 서점 목록이 1위를 유지하고 있나요? 아직도 배우기를 좋아하는 친구들이 많은 것 같아요! 지식은 운명을 바꾸고 Java는 인생을 만든다라고 합니다. Java를 배우기로 한 내 결정이 옳았던 것 같습니다!

Java 데이터 유형을 배우지 않았습니까? 자세가 쓸모없으니까!

그런데 이 책은 정말 잘 쓰여졌지만, 결국 이제 막 시작했고, 방금 배운 데이터 유형과 같은 몇 가지 소소한 지식 포인트에 대해서는 여전히 약간 혼란스럽습니다. 아직 지식이 없는 저에게는 조금 어렵습니다.

이날 심심해서 CSDN을 헤매다가 블로그를 보았습니다: [데이터 구조 및 알고리즘 05, Red-Black Tree 패키지이해~]를 읽고나서. 솔직히 이런 글을 보면 참 경멸스럽습니다. 무슨 나무인가요? 왜 반은 빨간색이고 반은 검은색인가요? 이 글을 읽고 나면 이해가 되시나요? 절반만 이해하면 어떻게 되나요? 난산증 아닌가요? 흡입! 당신이 어떤 괴물인지 보여드리겠습니다.

작은 손으로 가볍게 두드리면 들어갑니다. 처음에는 정말 못마땅했는데, 아래로 갈수록 더 놀랐습니다... 2분 후, 저는 거의 무릎을 꿇을 뻔했습니다! 책에 있는 것보다 더 자세하게 쓰여진 것 같아요(이해는 못했지만요)! 유용한 정보가 가득한 이 신선하고 세련된 텍스트, 이 [지식]의 전체 화면을 보십시오. 어찌 놓칠 수 있겠습니까? 그 사람이 내가 좋아하는 곳으로 가서 재를 먹게 놔두는 게 어때요? 제가 팔로우하고, 좋아요를 누르고, 즐겨찾기에 추가하는 모습을 지켜보며 상사에게 모든 것을 명확하게 전달하세요.

신나는 마음으로 조용히 상사의 대화상자를 클릭했습니다.

Me: 사장님 거기 계세요?

잠시 후 실제로 사장님께서 답변을 주셨는데요!

우 형제: 무슨 일이야~?

Me: (어떻게 정리해야 할지 모르겠어요) 음... 사장님... 너무 잘생겼어요! 정말 대단해요!

우 형제: 해롭다! 이건 받아들여지지 않나요?

: (이마에 검은 줄이 있어요. 이 사람 좀 자기도취적인 사람인 것 같아요. 사업상 아부하려고 하는 거에요. 자존심이 꽤 센 편이죠?) 하하~ 사장님, 이렇습니다. . 저는 Java를 배우는 멍청한 사람입니다. 저를 데리고 가실 수 있나요?

우 형제: 음...이것도...괜찮습니다. 수수료를 받습니다

: (내가 정말 큰 상사라고 생각하고 여전히 비용을 청구합니다) 형님, 제가 최근에 공부하려고 책을 샀어요. . 이 책은 꽤 좋은 것 같아요. 좋아요, 조금 의문이 있어서 학습에 관해 몇 가지 질문을 하고 싶습니다. 제가 뒷문을 열 수 있을까요?

우 형제: 그럼... 알았어. 당신이 배우고 싶어하는 만큼, 지금 어디에서 배웠는지 몇 가지 조언을 해줄 것입니다.

Me: 방금 Java의 기본을 배웠는데, 데이터 구조를 보면 좀 헷갈리네요~

우 형제: 쉽게 말하면 배우는데 반년 넘게 걸렸어요 자바의 기본! 기초는 매우 탄탄합니다. 이 지식 포인트를 함께 안내해 드리겠습니다.

Me: 정말요? 사장! 매우 감사합니다! 나중에 저녁 사줄게!

우 형제: 작은 문제, 작은 문제. 허페이에도 계시나요?

Me: 네~ (조금 당황해서 조용히 사장님 프로필을 눌렀는데 혹시...)

우 형제: 하하, 정말 우연이네요! 나도 여기 있어요!

Me: 응? 이런 우연이요? 어때요... (식사가 빠질 수 없을 것 같아 눈물이 나네요...)

우 형제: 위챗에 저를 추가해 주시면 위치를 보내드리고 자세히 이야기를 나눌 수 있어요.

Me: (이게... 대면 미팅인가요? 소통 몇 분 뿐인가요? 덩치 큰 남자들은 다 그렇게 섹시한가요? 마음은 원치 않지만 몸은 솔직해요) 음. .. 알았어, 갈게...

우형님: 알았어 기다릴게~

떨렸어... 마음이 조금 당황스러웠어!

30분 후에 저는 우 형제님이 알려주신 주소로 택시를 탔습니다.

우 형제님을 봤을 때 예상대로 그는 매우 화를 냈습니다!

나는 우 형제가 뒷머리에 기름을 바르고 45도 각도로 차에 기대어 하늘을 바라보며 담배에 불을 붙이고 끝없는 우여곡절과 외로움을 겪는 것을 보았습니다.

Me: (총알을 깨물고 올라가서 인사한다) 우형님?

우 형제: (담배를 멈추고 흐릿한 눈으로 나를 쳐다본다): 안녕하세요? 너 노드 형이야?

: 음...네 (조용히 몇 걸음 뒤로 물러난다)

우 형제: (성큼성큼 다가와 내 어깨에 팔을 얹는다) 커피숍 가서 커피 한잔하면서 수다를 떨자 .자바, 어떻게?

: (이런 줄 알았는데 그래도 거절!) 알았어...

그래서 우 형제가 나를 안고 스타벅스에 갔다가... 그러다가 조용한 곳을 찾았다 작은 개인실.. .

다음 장면은 짐작하실 수 있을 것 같은데요...

으흠! 진지해지세요! 우리는 학습에 대해 논의하기 위해 왔습니다!

뭐? 넌 믿지 않는다?

그럼 아래를 살펴보시고 정보알림! Java 데이터 유형은 다양합니다. 이 기사에서는 주로 기본 유형, 패키지 유형, 참조 유형 및 캐시 풀의 네 가지 측면에서 요약합니다.

기본 데이터 유형

기본 데이터 유형에는 byte, short, int, long, float, double, boolean 및 char이 포함됩니다. 기본 유형 다음으로 한눈에 알 수 있도록 바이트 수, 데이터 범위, 기본값, 목적 등을 표로 정리하겠습니다.

패키징 데이터 유형

위에 언급된 기본 유형에는 해당하는 패키징 유형이 있으므로 독자가 쉽게 볼 수 있도록 표도 작성했습니다. Java 데이터 유형을 배우지 않았습니까? 자세가 쓸모없으니까!

Java 데이터 유형을 배우지 않았습니까? 자세가 쓸모없으니까!

참조 유형

Java에서 참조 유형 변수는 C/C++ 포인터와 매우 유사합니다. 참조 유형은 객체를 가리키고, 객체를 가리키는 변수는 참조 변수입니다. 이러한 변수에는 선언 시 Student, Dog 등과 같은 특정 유형이 할당됩니다. 변수가 선언되면 해당 유형을 변경할 수 없습니다.

객체와 배열은 참조 데이터 유형입니다. 모든 참조 유형의 기본값은 null입니다. 참조 변수는 호환되는 모든 유형을 참조하는 데 사용할 수 있습니다. 예:

Dog dog = new Dog("旺财")。

데이터 유형 변환

패키지 유형과 기본 유형 간을 어떻게 변환합니까?

Integer x = 2;     // 装箱 调用了 Integer.valueOf(2)
int y = x;         // 拆箱 调用了 X.intValue()

기본 유형 간 변환은 어떻게 하나요? 두 가지 사항이 있습니다.

  1. 대용량 타입을 소용량 타입으로 변환할 때는 반드시 강제 타입 변환을 사용해야 합니다.

  2. 소용량 유형을 대용량 유형으로 변환하면 자동으로 변환될 수 있습니다.

예:

int i =128;   
byte b = (byte)i;
long c = i;

Cache pool

질문에 대해 생각해 보겠습니다. new Integer(123)Integer.valueOf(123) 차이점은 무엇입니까?

아는 사람도 있고 모르는 사람도 있습니다. 사실, 그들은 매우 다릅니다.

  1. new Integer(123) 每次都会新建一个对象;

  2. Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。

我写个demo大家就知道了

Integer x = new Integer(123);
Integer y = new Integer(123);
System.out.println(x == y);    // false
Integer z = Integer.valueOf(123);
Integer k = Integer.valueOf(123);
System.out.println(z == k);   // true

编译器会在自动装箱过程调用valueOf()方法,因此多个值相同且值在缓存池范围内的 Integer 实例使用自动装箱来创建,那么就会引用相同的对象。如:

Integer m = 123;
Integer n = 123;
System.out.println(m == n); // true

valueOf()方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容。我们看下源码就知道。

public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

根据数据类型的不一样,这个缓存池的上下限也不同,比如这个 Integer,就是 -128~127。不过这个上界是可调的,在启动 jvm 的时候,通过 -XX:AutoBoxCacheMax=来指定这个缓冲池的大小,该选项在 JVM 初始化的时候会设定一个名为 java.lang.IntegerCache.high 系统属性,然后 IntegerCache 初始化的时候就会读取该系统属性来决定上界。

参考自StackOverflow:

https://stackoverflow.com/questions/9030817/differences-between-new-integer123-integer-valueof123-and-just-123

 

OK,关于Java数据类型的小知识就分享到这了,虽然我还有点意犹未尽…

Java 的数据类型虽然简单,但是里面还是有很多小细节值得我们玩味的,希望这篇文章能给大家带来一些帮助。

위 내용은 Java 데이터 유형을 배우지 않았습니까? 자세가 쓸모없으니까!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Java学习指南에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제