2011-08-11 3 views
1

Est-ce qu'il ya une différence quand on initialise une chaîne en utilisant:Initialisation une chaîne en Java

  1. java.lang.String
  2. String (uniquement)

Pourquoi nous écrivons le nom du paquet complet?

+1

Vous n'utilisez pas '' CHAINE' ou java.lang. String' pour initialiser n'importe quoi. Vous utilisez simplement ces jetons pour ** nommer ** le type. –

Répondre

0

Aucune différence

Nous écrivons le paquet pour le distinguer d'une classe du même nom, le cas échéant, dans votre projet. Par exemple, si votre projet a aussi une classe nommée String, java ne saura pas quelle classe String vous voulez utiliser - la vôtre ou celle intégrée de java.

+0

Merci Raghuram! Votre message était très utile. :) –

2

Il n'y a pas de différence. Le package java.lang est importé implicitement dans tous les programmes Java.

+0

Merci Asaph! :) –

1

Il n'y a pas de différence s'il n'y a pas de classe "String" personnalisée définie.

Si vous avez toutefois défini votre propre classe "String". Ensuite, vous aurez besoin du java.lang supplémentaire afin d'identifier la classe String correcte.

+0

hmmm je l'ai eu! Merci Gapton! :) –

1

Pourquoi écrire le nom du package complet?

Dans ce cas, vous ne devriez pas avoir besoin de. Comme l'indique @ Asaph, java.lang est implicitement importé dans chaque classe. Cela signifie que votre code peut se référer à String et à d'autres classes comme Boolean, System et NullPointerException par leur simple nom de classe.

Les seuls cas où vous auriez besoin de se référer à String par son nom complet (java.lang.String) sont:

  • si vous fournissez le nom de classe en tant que chaîne dans une API de réflexion, ou

  • si vous avez stupidement écrit une classe de votre choix dont le nom simple est String; par exemple. com.example.stupid.String, et vous avez explicitement importé cette version de String dans une autre classe.

Les meilleures pratiques est de se référer aux classes de java.lang par leurs noms simples, et de ne pas définir vos propres classes avec le même nom simple dans d'autres paquets.


Dans le cas général, ces deux formes signifient exactement la même chose, et vous donnera exactement le même code compilé:

// version 1 
package com.example.bar; 
import com.example.foo.Foo; 
public class Bar { 
    private Foo myFool; 
    ... 
} 

// version 2 
package com.example.bar; 
public class Bar { 
    private com.example.foo.Foo myFool; 
    ... 
} 
+0

Lol. Gr8 post. Merci beaucoup Stephen C! :) –