Я подписался несколько минут назад, хотя я очень хорошо использовал этот сайт с тех пор, как занялся компьютерным программированием, которое я преподавал сам и рассматриваю небольшое увлечение.
Я искал похожие вопросы, но на самом деле я не мог найти ответ, который я искал. Теперь, зная, что в Java (для языка, на котором мне было предложено начать с), считается хорошей практикой программирования для объявления и создания экземпляров переменных по мере необходимости, пожалуйста, рассмотрите следующие строки:
class MyClass {
void myMethod() {
AnotherClass myObject = new AnotherClass();
myObject.doStuff();
}
}
Теперь предположим, что я вызываю myMethod(), скажем, 10 раз во время запуска моей программы, как это работает? Создается ли новый объект каждый раз? Переменная myObject перераспределяется каждый раз? Прокомментирует ли пропутчик что-то вроде кода, поскольку он видит, что объект уже создан, и переменная myObject уже была назначена для такого объекта? В двух словах: следует ли писать такой код только в том случае, если я планирую вызывать этот метод только один раз? Я знаю... стыдно за меня, задавая такой глупый вопрос, но, пожалуйста, дайте мне шанс! Спасибо заранее!
--------------------------- отредактировал ------------------- ----------
Итак, теперь я должен отредактировать этот пост после получения новых ответов?
Кстати... черт возьми, это было быстро, спасибо! И ничего себе, что меня смутило, много, я думаю, из-за того, что я так учил...
В любом случае, не бесполезно ли каждый раз создавать объект new AnotherClass
для переменной myObject
? Я имею в виду, если я хочу использовать переменную myObject во всей моей программе, не должен ли я объявлять ее "Как и для всех"? может быть, в другом методе, что я буду вызывать только один раз? Поскольку, насколько я понимаю, каждый раз, когда я вызываю myMethod()
, создается новый объект, тем самым переопределяя собственные свойства myObject как переменные или я просто говорю глупости?
--------------------------- отредактировал ------------------- ----------
Мои сомнения появились после прочтения этого кода с некоторого веб-сайта, который я не могу вспомнить прямо сейчас:
public class DataBase {
private static String buf, retString = "\n";
private static File file = new File("test.txt");
public static void readText(JTextArea area) {
try {
FileReader fr = new FileReader (file);
BufferedReader br = new BufferedReader(fr);
while ((buf = br.readLine()) != null) {
area.append(buf);
area.append(retString);
}
br.close();
fr.close();
}
catch (IOException e) {
System.out.println("Exception: " + e);
}
}
public static void writeText(JTextArea area) {
try {
FileWriter fw = new FileWriter (file);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(area.getText());
bw.close();
fw.close();
}
catch (IOException e) {
System.out.println("Exception: " + e);
}
}
}
Я имею в виду, почему бы не объявить FileWriter, FileReader, BufferedReader и BufferedWriter в верхней части класса, как и для других переменных? и почему не инициализировать их, а может быть, в конструкторе? Зачем делать это каждый раз, когда вызывается метод, а не используя, возможно, одну и ту же переменную экземпляра?