Я читал статью Java, но не обнаружил различий в декларации и был смущен. Может ли кто-нибудь известить меня об этом?
Добавлена статья
Я читал статью Java, но не обнаружил различий в декларации и был смущен. Может ли кто-нибудь известить меня об этом?
Добавлена статья
Без дополнительной информации о том, что именно задается вопросом, я собираюсь ответить на заголовок вопроса,
Создайте 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};
Создайте 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);
Это означает, что создайте ArrayList
объектов String
и Integer
. Вы не можете использовать int
, потому что это примитивные типы данных, см. Ссылку для списка примитивных типов данных.
Создайте Stack
:
Stack myStack = new Stack();
// add any type of elements (String, int, etc..)
myStack.push("Hello");
myStack.push(1);
Создайте Queue
: (используя 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);
То же, что и ArrayList
, это объявление означает создание Queue
объектов String
и Integer
.
В ответ на ваш комментарий от другого данного ответа
Теперь я довольно запутан, почему используется строка. и что означает
<String>
означает
Мы используем String
только как чистый пример, но вы можете добавить любой другой объект, но главное, что вы используете объект не примитивный тип. Каждый примитивный тип данных имеет свой собственный примитивный класс оболочки, см. Ссылку для списка класса примитивных типов данных.
Я опубликовал некоторые ссылки, чтобы объяснить разницу между ними, но вот список примитивных типов
byte
short
char
int
long
boolean
double
float
Это означает, что вам не разрешено делать ArrayList
целого типа:
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
Кроме того, вы можете использовать свои собственные объекты, вот мой объект Monster
, который я создал,
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.");
}
}
Здесь мы имеем объект Monster
, но теперь в нашем классе Main.java
мы хотим сохранить запись всех наших Monster
, которые мы создаем, поэтому добавим их в 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();
}
}
(Я помог моему брату-подруге с Java-игрой, и он тоже должен был что-то делать по этим строкам, но я надеюсь, что этот пример был хорошо продемонстрирован)
Я предполагаю, что вы путаетесь с параметризацией типов:
// 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>();
Просто небольшая поправка к первому ответу в этом потоке.
Даже для Stack вам нужно создать новый объект с помощью дженериков, если вы используете Stack из пакетов 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");
если используется иначе, как указано в предыдущем сообщении, которое:
/*
Stack myStack = new Stack();
// add any type of elements (String, int, etc..)
myStack.push("Hello");
myStack.push(1);
*/
Хотя этот код работает нормально, имеет небезопасные или непроверенные операции, которые приводят к ошибке.