Я узнал, что в классе вы можете объявлять переменные и методы.Они оба могут быть объявлены как статические, если это предпочтительнее.
Теперь я столкнулся с примером программы, который мне не совсем понятен.После объявления некоторой переменной в классе есть поле, объявленное как статическое, а внутри - программный код.
Когда выполняется этот код?Я предполагаю, что код выполняется следующим образом при создании нового объекта:
- Распределение памяти для переменных экземпляра.
- Выполнение контуров, связанных с переменными экземпляра.
- Исключение из статического поля
- Выполнение конструктора (если "= новый конструктор () используется при создании объекта)
Если я выполню
MyCars myCars = new MyCars();
в этом порядке произойдет следующее?
public class MyCars
{
private Car volvo = new Car()
// (1) (2)
static
{
volvo.setNumberOfWheels = 4;
// (3)
}
public MyCars()
{
volvo.setBrand = "Volvo";
volvo.setModel = "XC70";
(4)
}
Вот исходный код:
public class SettingsSetter extends ListActivity
{
private static Map<Integer,String> menuActivities=new HashMap<Integer,String>();
private static List<BooleanSetting> settings=new ArrayList<BooleanSetting>();
static
{
menuActivities.put(R.id.app,
Settings.ACTION_APPLICATION_SETTINGS);
menuActivities.put(R.id.security, Settings.ACTION_SECURITY_SETTINGS);
menuActivities.put(R.id.wireless,
Settings.ACTION_WIRELESS_SETTINGS);
menuActivities.put(R.id.all,
Settings.ACTION_SETTINGS);
settings.add(new BooleanSetting(Settings.System.INSTALL_NON_MARKET_APPS,
"Allow non-Market app installs", true));
settings.add(new BooleanSetting(Settings.System.HAPTIC_FEEDBACK_ENABLED,
"Use haptic feedback", false));
settings.add(new BooleanSetting(Settings.System.ACCELEROMETER_ROTATION,
"Rotate based on accelerometer", false));
}