Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 22:18   #1
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию База сотрудников

Вот есть код, который выводит базу сотрудников с их зарплатами.
Код:
package proga11;
class Employee{
 private  String name;
 private  double salary;
 public Employee(String n, double s)
 { name=n;
  salary=s;
 }
 public String getName()
 { return name;}
 public double getSalary()
 {return salary;}
 public void raiseSalary(double byPercent)
 {salary*=1+byPercent/100;
 }
}
public class Main {
public static void main(String[] args) {
Employee[] staff = new Employee[3];
staff[0]=new Employee("Haug E.G.",50000);
staff[1]=new Employee("Adams. R.A.",60000);
staff[2]=new Employee("Tallyor A.A.",35000);
for(int i=0; i<staff.length; i++)
    System.out.println("name="+staff[i].getName()
            +"   salary="+staff[i].getSalary());

for(int i=0; i<staff.length; i++)
    staff[i].raiseSalary(10);
 System.out.println("     New  Salary");
for(int i=0; i<staff.length; i++)
{
    Employee e=staff[i];
    System.out.println("name="+staff[i].getName()
            +"   salary="+e.getSalary());
    }
}
}
Объясните вот это место.
Код:
public static void main(String[] args) {
Employee[] staff = new Employee[3];
staff[0]=new Employee("Haug E.G.",50000);
staff[1]=new Employee("Adams. R.A.",60000);
staff[2]=new Employee("Tallyor A.A.",35000);
for(int i=0; i<staff.length; i++)
    System.out.println("name="+staff[i].getName()
            +"   salary="+staff[i].getSalary());
почему 4 раза встречается слово new?
Здесь создаётся масив объектов?
Код:
staff[0]=new Employee("Haug E.G.",50000);
Почему здесь снова new встречается?
Syltan вне форума Ответить с цитированием
Старый 19.05.2010, 04:59   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Массив это объект содержащий ссылки на другие объекты(либо сами объекты, если объекты примитивны(long,int,float etc)), чтобы создать экземпляр объекта используется оператор new.
Код:
Employee[] staff = new Employee[3];
Ссылки сводятся на заного созданные объекты:
Код:
staff[0]=new Employee("Haug E.G.",50000);
staff[1]=new Employee("Adams. R.A.",60000);
staff[2]=new Employee("Tallyor A.A.",35000);
при этом, вышестоящий код эквивалентен следующему:
Код:
Employee e1 = new Employee("Haug E.G.",50000);
staff[0]= e1;
Employee e2 = new Employee("Adams. R.A.",60000);
staff[1]= e2;
Employee e3 = new Employee("Tallyor A.A.",35000);
staff[2]= e3
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 19.05.2010 в 05:01.
alexinspir вне форума Ответить с цитированием
Старый 19.05.2010, 16:51   #3
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Вмысле, эквивалентен?
Вы получается скопировали той предыдущий.
Код:
staff[0]=new Employee("Haug E.G.",50000);
staff[1]=new Employee("Adams. R.A.",60000);
staff[2]=new Employee("Tallyor A.A.",35000);
И после каждой троки поставили присвоение.
staff[0]= e1;
Зачем, что это даёт или означает лучше?
Syltan вне форума Ответить с цитированием
Старый 20.05.2010, 18:47   #4
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Syltan Посмотреть сообщение
Вмысле, эквивалентен?
В прямом, на уровне байт-кода это почти одно и тоже, за исключением создания трех дополнительных ссылок
Цитата:
Сообщение от Syltan Посмотреть сообщение
Вы получается скопировали той предыдущий.
Код:
staff[0]=new Employee("Haug E.G.",50000);
staff[1]=new Employee("Adams. R.A.",60000);
staff[2]=new Employee("Tallyor A.A.",35000);
И после каждой троки поставили присвоение.
staff[0]= e1;
Зачем, что это даёт или означает лучше?
Вы спрашивали почему new применяется 4 раза, я просто наглядно разложил код чтобы Вам было ясно. В данном случае это ничего не дает.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестирование сотрудников ProKsimus Microsoft Office Access 3 08.01.2009 18:01
Личные дела сотрудников asale БД в Delphi 3 05.11.2007 21:33