Maison  >  Article  >  Java  >  Vous n'avez pas appris les types de données Java ? Parce que la posture ne sert à rien !

Vous n'avez pas appris les types de données Java ? Parce que la posture ne sert à rien !

Java学习指南
Java学习指南avant
2023-07-26 17:24:001313parcourir

Petite histoire

Bonjour à tous, je suis frère node, connu dans le monde sous le nom de frère Qing. Récemment, j'ai été très fasciné par le livre populaire "Java du débutant à l'enterrement". liste des grandes librairies. Stable à la première place ? On dirait qu'il y a encore beaucoup d'amis qui aiment apprendre ! On dit que la connaissance change le destin et Java fait la vie Il semble que ma décision d'apprendre Java ait été la bonne !

Vous n'avez pas appris les types de données Java ? Parce que la posture ne sert à rien !

Mais ceci dit, ce livre est vraiment bien écrit, mais après tout, je viens de commencer, et je suis encore un peu confus sur certains petits points de connaissances, comme les types de données que je viens d'apprendre, qui est encore un peu difficile pour moi sans aucune connaissance.

Ce jour-là, je m'ennuyais et je me promenais sur CSDN et j'ai vu un blog : [Data Structure and Algorithm 05, Red-Black Tree Après avoir lu le packageComprendre~]. Pour être honnête, je suis très dédaigneux quand je vois des articles comme celui-ci. Des arbres rouge-noir ? De quel arbre s'agit-il ? Pourquoi est-il à moitié rouge et à moitié noir ? Comprenez-vous après avoir lu ceci ? Et si j'en comprenais la moitié ? N'est-ce pas une dystocie ? renifler! Laissez-moi vous montrer quel genre de monstre vous êtes.

D’un simple coup de ma petite main, j’y suis. Au début, j'étais très désapprobateur, mais plus j'avançais, plus j'étais surpris... Deux minutes plus tard, j'ai failli m'agenouiller ! C’est tellement bien écrit, j’ai l’impression que c’est plus détaillé que ce qu’il y a dans le livre (même si je ne l’ai pas compris) ! Regardez cela plein d'informations utiles, ce texte frais et raffiné, ce plein écran de [connaissances], comment pourrais-je supporter de le manquer ? Pourquoi ne le laisses-tu pas aller vite chez mes favoris pour manger des cendres ? Regardez-moi suivre, aimer et ajouter aux favoris, l'un après l'autre, pour que tout soit clair pour le patron.

Avec enthousiasme, j'ai tranquillement cliqué sur la boîte de dialogue du patron.

Moi : Patron, tu es là ?

Au bout d'un moment, le patron a effectivement répondu !

Frère Wu : Quoi de neuf~ ?

Moi : (Je ne sais pas comment organiser les mots) Euh... Patron... tu es si beau ! Tellement cool !

Frère Wu : Nocif ! N'est-ce pas accepté ?

Moi : (J'ai une ligne noire sur le front. Je parie que ce type est un peu narcissique. J'essaie juste de le flatter en affaires. Il est assez fier de lui ?) Haha~ Patron, c'est comme ça . Je suis un débutant qui apprend Java, pouvez-vous m'emmener avec vous ?

Frère Wu : Eh bien... ça... c'est aussi ok, je facture des frais

Moi : (Pensant que je suis effectivement un grand patron, et que je facture toujours des frais) Grand frère, j'aime beaucoup Java. J'ai récemment acheté un livre pour étudier. Le titre est "Java du début à l'enterrement". . Je pense que ce livre est plutôt bon. D'accord, j'ai juste un petit doute et j'aimerais poser quelques questions sur l'apprentissage. Pensez-vous que je peux ouvrir une porte dérobée ?

Frère Wu : Alors... d'accord. Puisque vous avez tellement envie d’apprendre, je vais vous donner quelques conseils. Où avez-vous appris maintenant ?

Moi : Je viens d'apprendre les bases de Java, et je suis un peu confus quand je vois la structure des données~

Frère Wu : C'est facile à dire, il m'a fallu plus de six mois pour apprendre les bases de Java ! La base est très solide. Je peux vous guider ensemble à travers ce point de connaissance.

Moi : Vraiment ? Chef! Merci beaucoup! Je t'offrirai un dîner plus tard !

Frère Wu : Petit problème, petit problème. Je vois que tu es aussi à Hefei ?

Moi : Oui~ (Un peu paniqué, j'ai tranquillement cliqué sur le profil du patron, est-ce que ça pourrait être...)

Frère Wu : Haha, quelle coïncidence ! Je suis là aussi !

Moi : Hein ? Une telle coïncidence ? Que diriez-vous de... (On dirait qu'on ne peut échapper à un repas, je pleure...)

Frère Wu : Vous m'ajoutez sur WeChat, je vous enverrai un emplacement et nous pourrons parler en détail.

Moi : (Est-ce... une rencontre en face-à-face ? Seulement quelques minutes de communication ? Tous les grands sont-ils si sexy ? Même si mon cœur ne veut pas, mon corps est très honnête) emm. .. D'accord, je vais y aller...

Frère Wu : D'accord, je t'attendrai~

J'ai frémi... J'ai eu un peu de panique dans mon cœur !

Une demi-heure plus tard, j'ai pris un taxi selon l'adresse indiquée par frère Wu.

Quand j'ai vu frère Wu, comme prévu, il était extrêmement en colère !

J'ai vu frère Wu avec les cheveux lissés en arrière et de l'huile, appuyé sur la voiture à 45°, levant les yeux vers le ciel, allumant une cigarette, avec des vicissitudes et une solitude sans fin.

Moi : (effronté la balle et est allé dire bonjour) Frère Wu ?

Frère Wu : (arrêta de fumer et me regarda, les yeux un peu confus) : Allo ? Êtes-vous un frère de nœud ?

Moi : Euh... oui (fait doucement quelques pas en arrière)

Frère Wu : (s'approche et met son bras autour de mes épaules) Allons au café, prenons une tasse de café et discutons .Java, comment ?

Moi : (Je pensais que tu étais comme ça, mais j'ai quand même refusé !) D'accord...

Alors, frère Wu m'a serré dans ses bras et est allé chez Starbucks... puis a trouvé un endroit calme Petite chambre privée.. .

Je suppose que vous pouvez deviner la scène suivante...

Ahem ! Soyez sérieux ! Nous sommes ici pour discuter d'apprentissage !

Quoi ? Tu n'y crois pas ?

Alors jetez un oeil ci-dessous, alerte information ! Il existe de nombreux types de données Java. Cet article les résume principalement sous quatre aspects : les types de base, les types de packages, les types de référence et les pools de cache.

Types de données de base

Les types de données de base incluent byte, short, int, long, float, double, boolean et char. J'ai dessiné une image de leur classification. Types de base Ensuite, je vais le résumer dans un tableau sous les aspects du nombre d'octets, de la plage de données, de la valeur par défaut et de l'objectif, afin qu'il soit clair en un coup d'œil.

Types de données d'emballage

Les types de base mentionnés ci-dessus ont des types d'emballage correspondants Afin de faciliter la visualisation par les lecteurs, j'ai également compilé un tableau. Vous n'avez pas appris les types de données Java ? Parce que la posture ne sert à rien !

Vous n'avez pas appris les types de données Java ? Parce que la posture ne sert à rien !

Types de référence

En Java, les variables de type référence sont très similaires aux pointeurs C/C++. Un type référence pointe vers un objet et une variable pointant vers un objet est une variable de référence. Ces variables se voient attribuer un type spécifique lorsqu'elles sont déclarées, telles que Student, Dog, etc. Une fois qu'une variable est déclarée, son type ne peut plus être modifié.

Les objets et les tableaux sont des types de données de référence. La valeur par défaut de tous les types de référence est null. Une variable de référence peut être utilisée pour faire référence à n’importe quel type compatible. Par exemple :

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

Conversion de type de données

Comment convertir entre les types de packages et les types de base ?

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

Comment convertir entre les types de base ? Il y a deux points :

  1. La conversion de type forcée doit être utilisée lors de la conversion d'un type de grande capacité en un type de petite capacité.

  2. La conversion des types de petite capacité en types de grande capacité peut être automatiquement convertie.

Par exemple :

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

Cache pool

Réfléchissons à une question : new Integer(123)Integer.valueOf(123) Quelle est la différence ?

Certaines personnes le savent peut-être, d’autres non. En fait, ils sont très différents.

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer