Учитывая код ниже:Предоставляет ли статическое ключевое слово новым объектам для назначения переменной?
class Demo {
static String s = "123";
static void m1(String s) {
this.s = s;
}
void m2(String s) {
this.s = s;
}
}
class Hello {
public static void main(String args) {
Demo.m1("456");
Demo d = new Demo();
d.m2("789");
}
}
Я хотел бы знать, в чем разница между использованием переменной экземпляра и создания статической переменной в отношении объекта:
Учитывая, что строка является неизменной и переменной s статично, сколько объектов создано для переменной
s
?Является ли новый объект, созданный при вызове статического метода, такого как
m1()
?Новый объект, созданный при вызове метода экземпляра, такого как
m2()
?
Отредактировано:
У меня было неправильное предположение о статическом ключевое слово. Теперь я это понимаю.
- static - ключевое слово.
- Он используется для объявления членов класса.
- Статические элементы относятся к классу.
- Переменные экземпляра не могут использоваться в статическом контексте.
- Это ключевое слово не может использоваться в статическом контексте.
- Статические элементы могут быть доступны без создания объекта.
- Статические переменные оживают, когда класс загружается в память.
- Это ключевое слово может использоваться только для доступа к членам экземпляра.
- Это ключевое слово используется для доступа к членам класса внутри одного класса.
Спасибо за помощь. Below - отредактированный код:
class Demo {
static String s= "123"; //Static variable
String s1 ="abc"; // Instance variable
static void m1(String s) {
Demo.s = s; //Accessing an static variable
}
void m2(String s,String s1) {
Demo.s = s;
this.s1 = s1;//Accessing an instance variable
}
}
class Hello {
public static void main(String args[]) {
Demo.m1("456");
Demo d = new Demo();
d.m2("789","xyz");
}
}
И что вы лично думаете об этих вопросах? – Andremoniy
Я немного смущен статической переменной. Если бы это была переменная экземпляра, то новый объект бы создал. Потому что Строка неизменна. –
Обратите внимание: '' 'не является экземпляром объекта String - это переменная. В Java переменная является ссылкой на экземпляр объекта, а не сам экземпляр. '' 123 "' является строковым литералом и представляет собой единственный экземпляр объекта String. 's =" 123 "' устанавливает ссылку 's' указывать на экземпляр строки, содержащий символы 1,2 и 3. – Arkadiy