Je lisais un article Java, mais je n'ai trouvé aucune différence dans la déclaration et je suis confus. Quelqu'un peut-il me citer cela?
Ajouté l'article
Sans plus de détails sur la question posée, je vais répondre au titre de la question,
Créez un Array
:
String[] myArray = new String[2];
int[] intArray = new int[2];
// or can be declared as follows
String[] myArray = {"this", "is", "my", "array"};
int[] intArray = {1,2,3,4};
Créez un ArrayList
:
ArrayList<String> myList = new ArrayList<String>();
myList.add("Hello");
myList.add("World");
ArrayList<Integer> myNum = new ArrayList<Integer>();
myNum.add(1);
myNum.add(2);
Cela signifie que vous créez un ArrayList
d’objets String
et Integer
. Vous ne peut pas utilisez int
car c'est un types de données primitifs , voir le lien pour une liste des types de données primitifs.
Créez un Stack
:
Stack myStack = new Stack();
// add any type of elements (String, int, etc..)
myStack.Push("Hello");
myStack.Push(1);
Créez un Queue
: ( en utilisant LinkedList)
Queue<String> myQueue = new LinkedList<String>();
Queue<Integer> myNumbers = new LinkedList<Integer>();
myQueue.add("Hello");
myQueue.add("World");
myNumbers.add(1);
myNumbers.add(2);
Même chose qu'un ArrayList
, cette déclaration signifie créer un objet Queue
sur String
et Integer
.
En réponse à votre commentaire de l'autre réponse donnée,
je suis assez confus maintenant, pourquoi utilisez string. et qu'est-ce que
<String>
veux dire
Nous utilisons String
uniquement à titre d'exemple, mais vous pouvez ajouter n'importe quel autre objet, mais le point principal est que vous utilisez un objet = pas un type primitif. Chaque type de données primitif a son propre classe de wrapper de primitive , voir le lien pour obtenir la liste de la classe de wrapper du type de données primitif.
J'ai posté des liens pour expliquer la différence entre les deux, mais voici une liste de types primitifs
byte
short
char
int
long
boolean
double
float
Ce qui signifie que vous n'êtes pas autorisé à créer un ArrayList
de nombre entier comme ceci:
ArrayList<int> numbers = new ArrayList<int>();
^ should be an object, int is not an object, but Integer is!
ArrayList<Integer> numbers = new ArrayList<Integer>();
^ perfectly valid
De plus, vous pouvez utiliser vos propres objets, voici mon objet Monster
que j'ai créé,
public class Monster {
String name = null;
String location = null;
int age = 0;
public Monster(String name, String loc, int age) {
this.name = name;
this.loc = location;
this.age = age;
}
public void printDetails() {
System.out.println(name + " is from " + location +
" and is " + age + " old.");
}
}
Ici nous avons un objet Monster
, mais maintenant dans notre Main.Java
classe nous voulons garder une trace de tous nos Monster
que nous créons, ajoutons-les donc à un ArrayList
public class Main {
ArrayList<Monster> myMonsters = new ArrayList<Monster>();
public Main() {
Monster yetti = new Monster("Yetti", "The Mountains", 77);
Monster lochness = new Monster("Lochness Monster", "Scotland", 20);
myMonsters.add(yetti); // <-- added Yetti to our list
myMonsters.add(lochness); // <--added Lochness to our list
for (Monster m : myMonsters) {
m.printDetails();
}
}
public static void main(String[] args) {
new Main();
}
}
( J'ai aidé le frère de ma petite amie avec un jeu Java, et il a dû faire quelque chose dans ce sens également, mais j'espère que l'exemple a été bien démontré)
Je suppose que vous confondez avec le paramétrage des types:
// This works, because there is one class/type definition in the parameterized <> field
ArrayList<String> myArrayList = new ArrayList<String>();
// This doesn't work, as you cannot use primitive types here
ArrayList<char> myArrayList = new ArrayList<char>();
Juste une petite correction à la première réponse dans ce fil.
Même pour Stack, vous devez créer un nouvel objet avec des génériques si vous utilisez Stack à partir de packages Java util.
Right usage:
Stack<Integer> s = new Stack<Integer>();
Stack<String> s1 = new Stack<String>();
s.Push(7);
s.Push(50);
s1.Push("string");
s1.Push("stack");
si utilisé autrement, comme mentionné dans le post ci-dessus, qui est:
/*
Stack myStack = new Stack();
// add any type of elements (String, int, etc..)
myStack.Push("Hello");
myStack.Push(1);
*/
Bien que ce code fonctionne correctement, il comporte des opérations non sécurisées ou non contrôlées qui entraînent des erreurs.