国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
1. Types de données de base
2. Type String
Maison Java javaDidacticiel Revue des bases de Java?: types de données de base et type String

Revue des bases de Java?: types de données de base et type String

Aug 02, 2018 pm 02:53 PM
java string

1. Types de données de base

Il existe 8 types de données de base en Java, quatre types entiers (octet, court, int, long), deux décimaux. types (float, double), un type de caractère (char) et un type booléen (boolean)

類型 字節(jié) 取值范圍
byte 1 -2^7 ~ 2^7 - 1
short 2 -2^15 ~ 2^15 - 1
int 4 -2^31 ~ 2^31 - 1
long 8 -2^63 ~ 2^63 - 1

(Un octet représente un binaire de 8 bits) float occupe 32 bits, double occupe 64 bits, char occupe 16 bits et boolean occupe 1 bit

Parce que Java est orienté objet Il s'agit d'un langage, donc ces huit types de données de base ont des classes d'empaquetage correspondantes?: Byte, Short, Integer, Long, Float, Double, Character et Boolean. L'affectation entre ces huit types de base et leurs types d'emballage correspondants est complétée par l'encaissage et le déballage automatiques.

Integer a = 1; // 基本數(shù)據(jù)類型int自動(dòng)裝箱為Integer包裝類(實(shí)際上在編譯時(shí)會(huì)調(diào)用Integer .valueOf方法來(lái)裝箱)int b = a;  // 自動(dòng)拆箱(實(shí)際上會(huì)在編譯調(diào)用intValue)

Alors quelle est la différence entre new Integer(123) et Integer.valueOf(123) ?

new Integer(123) crée un objet à chaque fois et Integer.valueOf(123) utilise des objets de cache, donc lorsque Integer.valueOf(123) est utilisé plusieurs fois, seule une référence au même objet est obtenue.

Integer a = new Integer(123);Integer b = new Integer(123);
System.out.println(x == y);    // falseInteger c = Integer.valueOf(123);Integer d = Integer.valueOf(123);
System.out.println(z == k);   // true

Le compilateur appellera la méthode valueOf() pendant le processus de boxe automatique, donc plusieurs instances Integer créées à l'aide de la boxe automatique et avec la même valeur référenceront le même objet.

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

En examinant le code source de la classe Integer, il s'avère que lors de l'utilisation de valueOf(), déterminez d'abord si la valeur est dans le pool de cache, et si c'est le cas, renvoyez directement le contenu du pool de cache.

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

Mais en regardant le code ci-dessous

    Integer i1 = 128;    Integer i2 = 128;
    System.out.println(i1 == i2); //false

nous constatons que false est renvoyé parce que dans Integer, la plage du pool de cache est?: -128 ~ 127

.
private static class IntegerCache {
        static final int low = -128;        static final int high;        static final Integer cache[];        static {            // high value may be configured by property
            int h = 127;
            String integerCacheHighPropValue =
                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");            if (integerCacheHighPropValue != null) {                try {                    int i = parseInt(integerCacheHighPropValue);
                    i = Math.max(i, 127);                    // Maximum array size is Integer.MAX_VALUE
                    h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
                } catch( NumberFormatException nfe) {                    // If the property cannot be parsed into an int, ignore it.
                }
            }
            high = h;

            cache = new Integer[(high - low) + 1];            int j = low;            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);            // range [-128, 127] must be interned (JLS7 5.1.7)
            assert IntegerCache.high >= 127;
        }        private IntegerCache() {}
    }

2. Type String

En plus des huit types de données de base ci-dessus, la classe String est également le type le plus couramment utilisé dans l'écriture de programmes.

La classe String est déclarée finale, elle ne peut donc pas être héritée. Il utilise un tableau de caractères en interne pour stocker les données, et le tableau est déclaré comme final, ce qui signifie qu'une fois le tableau de valeurs initialisé, il ne peut pas référencer d'autres tableaux et il n'y a pas de méthode interne de String pour modifier le tableau de valeurs, donc String peut être garanti comme étant immuable.

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];

String.intern()

L'utilisation de String.intern() peut garantir que les variables de cha?ne avec le même contenu font référence au même objet mémoire.

Dans l'exemple suivant, s1 et s2 utilisent new String() pour créer deux nouveaux objets, et s3 obtient une référence d'objet via la méthode s1.intern(). Cette méthode convertit d'abord l'objet référencé par s1 Put. dans le pool de cha?nes (pool de constantes de cha?nes), puis renvoyez cette référence d'objet. Par conséquent, s3 et s1 font référence au même objet pool de constantes de cha?ne.

String s1 = new String("aaa");String s2 = new String("aaa");
System.out.println(s1 == s2);           // falseString s3 = s1.intern();
System.out.println(s1.intern() == s3);  // true

Si vous utilisez "bbb" pour créer une instance de cha?ne à l'aide de guillemets doubles, l'objet nouvellement créé sera automatiquement placé dans le pool de cha?nes.

String s4 = "bbb";String s5 = "bbb";
System.out.println(s4 == s5);  // true

Avant Java 7, le pool de constantes de cha?ne était placé dans le pool de constantes d'exécution, qui appartenait à la génération permanente. Dans Java 7, le pool de constantes de cha?ne est placé sur le tas. En effet, la génération permanente dispose d'un espace limité, ce qui peut provoquer des erreurs OutOfMemoryError dans les scénarios où les cha?nes sont largement utilisées.

Alors sachant que String est immuable, quels sont les avantages de cette conception ?

1. La nécessité d'un pool de cha?nes

Le pool de constantes de cha?nes (pool interne String) est une zone de stockage spéciale dans la mémoire tas Java lors de la création d'un objet String. heure. Si cette valeur de cha?ne existe déjà dans le pool de constantes, un nouvel objet ne sera pas créé, mais l'objet existant sera référencé.
Revue des bases de Java?: types de données de base et type String

2. Autoriser les objets String à mettre en cache HashCode

Le code de hachage des objets String en Java est fréquemment utilisé, par exemple dans des conteneurs tels que hashMap .

L'immuabilité des cha?nes garantit le caractère unique du code de hachage, afin qu'il puisse être mis en cache en toute confiance. Il s'agit également d'une méthode d'optimisation des performances, ce qui signifie que vous n'avez pas besoin de calculer un nouveau code de hachage à chaque fois

3 Sécurité

La cha?ne est utilisée par de nombreuses personnes. Les classes Java (bibliothèque) sont utilisées comme paramètres, tels que l'URL de l'adresse de connexion réseau, le chemin du fichier et les paramètres de cha?ne requis par le mécanisme de réflexion, etc. Si la cha?ne n'est pas corrigée, cela entra?nera divers risques de sécurité.

boolean connect(string s){  
    if (!isSecure(s)) {   
throw new SecurityException();   
}  
    // 如果在其他地方可以修改String,那么此處就會(huì)引起各種預(yù)料不到的問(wèn)題/錯(cuò)誤   
    causeProblem(s);  
}

4. Sécurité des threads

L'immuabilité des cha?nes est intrinsèquement thread-safe et peut être utilisée en toute sécurité dans plusieurs threads.

Cet article contient une introduction détaillée.

La cha?ne est immuable, alors existe-t-il une cha?ne mutable??

fournit StringBuffer et StringBuilder en Java, qui sont variables. Dans String, un tableau de caractères final est défini, il est donc immuable. Cependant, comme StringBuffer et StringBuilder héritent de AbstractStringBuilder, il peut être vu dans le code source qu'il s'agit de tableaux de caractères variables.

public final class StringBuilder
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence{
     AbstractStringBuilder(int capacity) {
            value = new char[capacity];
        }    /**
     * The value is used for character storage.
     */
    char[] value;

D'après le code source, on peut également savoir que StringBuffer est thread-safe, et ses méthodes sont toutes modifiées par synchronized.

Articles connexes?:

Types de données des connaissances de base de JavaScript_Connaissances de base

Types de données et flux de base en Java

Vidéos associées?:

Aper?u et classification des types de données - Tutoriel vidéo JAVA pour débutant

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Comprendre Java Nio et ses avantages Comprendre Java Nio et ses avantages Jul 08, 2025 am 02:55 AM

Javanio est un nouvel IOAPI introduit par Java 1.4. 1) s'adresse aux tampons et aux canaux, 2) contient des composants de tampon, de canal et de sélecteur, 3) prend en charge le mode non bloquant et 4) gère les connexions simultanées plus efficacement que l'OI traditionnel. Ses avantages se reflètent dans: 1) IO non bloquant les réductions de la surcharge du thread, 2) le tampon améliore l'efficacité de transmission des données, 3) le sélecteur réalise le multiplexage et 4) la cartographie de la mémoire accélère la lecture et l'écriture de la lecture de fichiers. Remarque Lorsque vous utilisez: 1) le fonctionnement FLIP / clair du tampon est facile à confondre, 2) les données incomplètes doivent être traitées manuellement sans blocage, 3) l'enregistrement du sélecteur doit être annulé à temps, 4) Nio ne convient pas à tous les scénarios.

Comment un hashmap fonctionne-t-il en interne en Java? Comment un hashmap fonctionne-t-il en interne en Java? Jul 15, 2025 am 03:10 AM

HashMap implémente le stockage de paires de valeurs clés via des tables de hachage en Java, et son noyau réside dans les emplacements de données de positionnement rapidement. 1. Utilisez d'abord la méthode HashCode () de la clé pour générer une valeur de hachage et la convertir en un index de tableau via les opérations de bit; 2. Différents objets peuvent générer la même valeur de hachage, entra?nant des conflits. à l'heure actuelle, le n?ud est monté sous la forme d'une liste liée. Après JDK8, la liste liée est trop longue (longueur par défaut 8) et elle sera convertie en arbre rouge et noir pour améliorer l'efficacité; 3. Lorsque vous utilisez une classe personnalisée comme clé, les méthodes equals () et hashcode () doivent être réécrites; 4. Hashmap élargit dynamiquement la capacité. Lorsque le nombre d'éléments dépasse la capacité et se multiplie par le facteur de charge (par défaut 0,75), se développez et remaniez; 5. Hashmap n'est pas en file et concu doit être utilisé dans multithread

Qu'est-ce qu'un modèle de conception singleton à Java? Qu'est-ce qu'un modèle de conception singleton à Java? Jul 09, 2025 am 01:32 AM

Le modèle de conception Singleton en Java garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global via des constructeurs privés et des méthodes statiques, ce qui convient au contr?le de l'accès aux ressources partagées. Les méthodes de mise en ?uvre incluent: 1. Chargement paresseux, c'est-à-dire que l'instance n'est créée que lorsque la première demande est demandée, ce qui convient aux situations où la consommation de ressources est élevée et pas nécessairement requise; 2. Traitement à filetage, garantissant qu'une seule instance est créée dans un environnement multi-thread par des méthodes de synchronisation ou le verrouillage à double vérification et la réduction de l'impact des performances; 3. Le chargement affamé, qui initialise directement l'instance pendant le chargement des cours, convient aux objets ou scénarios légers qui peuvent être initialisés à l'avance; 4. La mise en ?uvre de l'énumération, en utilisant l'énumération Java pour soutenir naturellement la sérialisation, la sécurité des filetages et prévenir les attaques réfléchissantes, est une méthode concise et fiable recommandée. Différentes méthodes de mise en ?uvre peuvent être sélectionnées en fonction des besoins spécifiques

Exemple facultatif Java Exemple facultatif Java Jul 12, 2025 am 02:55 AM

Facultatif peut clairement exprimer les intentions et réduire le bruit du code pour les jugements nuls. 1. Facultatif. Par exemple, lors de la prise de valeurs des cartes, Orelse peut être utilisée pour fournir des valeurs par défaut, afin que la logique soit plus claire et concise; 2. Utilisez des cartes d'appels de cha?ne pour atteindre les valeurs imbriquées pour éviter en toute sécurité le NPE, et terminer automatiquement si un lien est nul et renvoie la valeur par défaut; 3. Le filtre peut être utilisé pour le filtrage conditionnel, et les opérations ultérieures ne continueront à être effectuées que si les conditions sont remplies, sinon elle sautera directement à Orelse, qui convient au jugement commercial léger; 4. Il n'est pas recommandé de surutiliser facultatif, tels que des types de base ou une logique simple, ce qui augmentera la complexité, et certains scénarios reviendront directement à NU.

Comment réparer Java.io.NotSerializableException? Comment réparer Java.io.NotSerializableException? Jul 12, 2025 am 03:07 AM

La solution de contournement principale pour la rencontre de Java.io.NotSerializableException est de s'assurer que toutes les classes qui doivent être sérialisées implémentent l'interface sérialisable et de vérifier le support de sérialisation des objets imbriqués. 1. Ajouter des ouvrages ImplementSerialisables à la classe principale; 2. Assurez-vous que les classes correspondantes de champs personnalisées de la classe implémentent également sérialisables; 3. Utilisez transitoire pour marquer les champs qui n'ont pas besoin d'être sérialisés; 4. Vérifiez les types non sérialisés dans les collections ou les objets imbriqués; 5. Vérifiez quelle classe n'implémente pas l'interface; 6. Considérez la conception de remplacement pour les classes qui ne peuvent pas être modifiées, telles que la sauvegarde des données clés ou l'utilisation de structures intermédiaires sérialisables; 7. Envisagez de modifier

Comment gérer les problèmes d'encodage des personnages en Java? Comment gérer les problèmes d'encodage des personnages en Java? Jul 13, 2025 am 02:46 AM

Pour faire face aux problèmes de codage des personnages en Java, la clé est de spécifier clairement le codage utilisé à chaque étape. 1. Spécifiez toujours le codage lors de la lecture et de l'écriture de texte, utilisez InputStreamReader et OutputStreamWriter et transmettez un jeu de caractères explicite pour éviter de s'appuyer sur le codage par défaut du système. 2. Assurez-vous que les deux extrémités sont cohérentes lors du traitement des cha?nes sur la limite du réseau, définissez l'en-tête de type contenu correct et spécifiez explicitement le codage avec la bibliothèque. 3. Utilisez String.getBytes () et Newstring (octet []) avec prudence, et spécifiez toujours manuellement StandardCharsets.Utf_8 pour éviter la corruption des données causée par les différences de plate-forme. En bref, par

Java String vs StringBuilder vs StringBuffer Java String vs StringBuilder vs StringBuffer Jul 09, 2025 am 01:02 AM

La cha?ne est immuable, StringBuilder est mutable et non-thread-safe, StringBuffer est mutable et file. 1. Une fois le contenu de la cha?ne créé ne peut pas être modifié, il convient à une petite quantité d'épissage; 2. StringBuilder convient à l'épissage fréquent de threads uniques et a des performances élevées; 3. StringBuffer convient aux scénarios partagés multi-thread, mais a une performance légèrement inférieure; 4. Remarquemment, définir la capacité initiale et éviter d'utiliser l'épissage de cha?ne dans des boucles peut améliorer les performances.

Fondamentaux et exemples de programmation Java Socket Fondamentaux et exemples de programmation Java Socket Jul 12, 2025 am 02:53 AM

La programmation Javasocket est la base de la communication réseau, et l'échange de données entre les clients et les serveurs est réalisé via Socket. 1. Le socket en Java est divisé en la classe de socket utilisée par le client et la classe SERVERSOCKET utilisée par le serveur; 2. Lors de la rédaction d'un programme de socket, vous devez d'abord démarrer le port d'écoute du serveur, puis lancer la connexion par le client; 3. Le processus de communication comprend l'établissement de connexion, la lecture et l'écriture des données et la fermeture du flux; 4. Les précautions incluent l'évitement des conflits de port, la configuration correcte des adresses IP, la fermeture raisonnable des ressources et la prise en charge de plusieurs clients. La ma?trise peut réaliser des fonctions de communication réseau de base.

See all articles