powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / java основы
33 сообщений из 33, показаны все 2 страниц
java основы
    #34285224
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как узнать тип "примитивной" переменной?
есть ли для примитивных типов аналог getClass().getName()
...
Рейтинг: 0 / 0
java основы
    #34285235
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
int.class.getName()
...
Рейтинг: 0 / 0
java основы
    #34285254
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsint.class.getName()
Код: plaintext
1.
 int  intgr =  1 ;
System.out.println(intgr.getClass().getName());
ошибка!!!
почему?
...
Рейтинг: 0 / 0
java основы
    #34285292
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsint.class.getName()
Код: plaintext
System.out.println(intgr. class .getName());
тоже ошибка
...
Рейтинг: 0 / 0
java основы
    #34285293
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Издеваешься? А в каком месте ты потерял тип примитива что тебе надо его найти?
...
Рейтинг: 0 / 0
java основы
    #34285304
Dremmmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
int intgr = 1;
Object o = (Object)intgr;
o.getClass().getName();
должно прокатить
...
Рейтинг: 0 / 0
java основы
    #34285316
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczИздеваешься? А в каком месте ты потерял тип примитива что тебе надо его найти?во первых просто интересно, а во вторых
Код: plaintext
1.
2.
3.
 int  a[] =  new   int [ 6 ];
	 for ( int  i =  0 ; i <  5 ; i++){
		a[i] = i;
	}
какого типа будет a[7] ???
или я чего то вообще не понимаю?
...
Рейтинг: 0 / 0
java основы
    #34285322
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точенее на a[7] а a[6], поидее должен быть null
...
Рейтинг: 0 / 0
java основы
    #34285331
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dremmmmint intgr = 1;
Object o = (Object)intgr;
o.getClass().getName();
должно прокатить

Будет класс обертки.
...
Рейтинг: 0 / 0
java основы
    #34285334
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjordточенее на a[7] а a[6], поидее должен быть null
Пятница....
...
Рейтинг: 0 / 0
java основы
    #34285346
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjord BlazkowiczИздеваешься? А в каком месте ты потерял тип примитива что тебе надо его найти?во первых просто интересно,

И так же бессмысленно.

fjord
а во вторых
Код: plaintext
1.
2.
3.
 int  a[] =  new   int [ 6 ];
	 for ( int  i =  0 ; i <  5 ; i++){
		a[i] = i;
	}
какого типа будет a[7] ???
или я чего то вообще не понимаю?
a[0] - a[5] имеют тип int это и так ясно. Хотя его можно получить как a.getComponentType()

a[6] и выше типа не имеют потому что их не существует. 8)
...
Рейтинг: 0 / 0
java основы
    #34285352
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjordточенее на a[7] а a[6], поидее должен быть null
a[7] и a[6] по идее будет ArrayIndexOutOfBounds
А null это не тип, а значение по умолчанию. Только у int оно 0, а не null
...
Рейтинг: 0 / 0
java основы
    #34285357
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mozheyko_d fjordточенее на a[7] а a[6], поидее должен быть null
Пятница....
fjord-у больше не наливать.
...
Рейтинг: 0 / 0
java основы
    #34285385
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz fjordточенее на a[7] а a[6], поидее должен быть null
a[7] и a[6] по идее будет ArrayIndexOutOfBounds
А null это не тип, а значение по умолчанию. Только у int оно 0, а не nullи я так думал, но почему
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 class  ArrayTest {
 public   static   void  main(String[] arg){

	 int  a[] =  new   int [ 7 ];

	 for ( int  i =  0 ; i <=  4 ; i++){
		a[i] = i*i;
	}

	 double  intgr =  1 .;
	Object o = (Object)intgr;
	System.out.println(o.getClass().getName());

	 for ( int  i =  0 ; i <=  6  ; i++){
		
		System.out.println(a[i]);
	}
}
}
выдает
0
1
4
9
0
0
меня смутили эти два последних нуля
...
Рейтинг: 0 / 0
java основы
    #34285417
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjord Blazkowicz fjordточенее на a[7] а a[6], поидее должен быть null
a[7] и a[6] по идее будет ArrayIndexOutOfBounds
А null это не тип, а значение по умолчанию. Только у int оно 0, а не nullи я так думал, но почему
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 class  ArrayTest {
 public   static   void  main(String[] arg){

	 int  a[] =  new   int [ 7 ];

	 for ( int  i =  0 ; i <=  4 ; i++){
		a[i] = i*i;
	}

	 double  intgr =  1 .;
	Object o = (Object)intgr;
	System.out.println(o.getClass().getName());

	 for ( int  i =  0 ; i <=  6  ; i++){
		
		System.out.println(a[i]);
	}
}
}
выдает
0
1
4
9
0
0
меня смутили эти два последних нуля

У Вас первый цикл заполнения до 4, а не до 6
...
Рейтинг: 0 / 0
java основы
    #34285447
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в том то и дело что массив заполняется до 4, и по идее пятый элемент должен быть null, но выдается 0
...
Рейтинг: 0 / 0
java основы
    #34285454
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjordв том то и дело что массив заполняется до 4, и по идее пятый элемент должен быть null, но выдается 0
Да что гадать, Вы возьмите, да проверьте, не заполняйте его вовсе - выводите сразу и увидите
...
Рейтинг: 0 / 0
java основы
    #34285489
Dremmmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fjordв том то и дело что массив заполняется до 4, и по идее пятый элемент должен быть null, но выдается 0
100 пудов, надо лучше книжки читать
Blazkowicz правильно писал "null это не тип, а значение по умолчанию. Только у int оно 0, а не null"
...
Рейтинг: 0 / 0
java основы
    #34285500
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mozheyko_d fjordв том то и дело что массив заполняется до 4, и по идее пятый элемент должен быть null, но выдается 0
Да что гадать, Вы возьмите, да проверьте, не заполняйте его вовсе - выводите сразу и увидите ага, если не заполнять массив то все его элементы будут равны 0
...
Рейтинг: 0 / 0
java основы
    #34285507
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjord mozheyko_d fjordв том то и дело что массив заполняется до 4, и по идее пятый элемент должен быть null, но выдается 0
Да что гадать, Вы возьмите, да проверьте, не заполняйте его вовсе - выводите сразу и увидите ага, если не заполнять массив то все его элементы будут равны 0
А если заполнить частично, оставшиеся должны быть null?
...
Рейтинг: 0 / 0
java основы
    #34285526
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dremmmm fjordв том то и дело что массив заполняется до 4, и по идее пятый элемент должен быть null, но выдается 0
100 пудов, надо лучше книжки читать
Blazkowicz правильно писал "null это не тип, а значение по умолчанию. Только у int оно 0, а не null"так я и читаю )) и по ходу чтения возникают вопросы
получается что
Код: plaintext
 int  b;
тоже получает значение по умолчанию 0, однако если сделать
Код: plaintext
1.
 int  b;
System.out.println(b);
то компилятор скажет что переменная b не проинициализированна, а
Код: plaintext
 int  a[] =  new   int [ 7 ];
инициализирует массив нулями?
...
Рейтинг: 0 / 0
java основы
    #34285545
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.
...
Рейтинг: 0 / 0
java основы
    #34285552
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html#25959
...
Рейтинг: 0 / 0
java основы
    #34285556
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjord...
получается что
Код: plaintext
 int  b;
тоже получает значение по умолчанию 0
...
нет, не получается.
...
Рейтинг: 0 / 0
java основы
    #34285562
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjord
Код: plaintext
 int  b;
тоже получает значение по умолчанию 0, однако если сделать

Читайте Мугала и Гослинга (Гослин, Арнольд и кто-то еще).

Локальные переменные не инициализируются. Инициализируются поля класса нулевыми значениями. Также нулевыми значениями инициализируются элементы массива при его создании.
...
Рейтинг: 0 / 0
java основы
    #34285567
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
java основы
    #34285569
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjord Dremmmm fjordв том то и дело что массив заполняется до 4, и по идее пятый элемент должен быть null, но выдается 0
100 пудов, надо лучше книжки читать
Blazkowicz правильно писал "null это не тип, а значение по умолчанию. Только у int оно 0, а не null"так я и читаю )) и по ходу чтения возникают вопросы
получается что
Код: plaintext
 int  b;
тоже получает значение по умолчанию 0, однако если сделать
Код: plaintext
1.
 int  b;
System.out.println(b);
то компилятор скажет что переменная b не проинициализированна, а
Код: plaintext
 int  a[] =  new   int [ 7 ];
инициализирует массив нулями?
при объявлении переменной типа int в классе она инициализируется нулем, при объявлении массива int они инициализируются нулями, при объявлении локальной переменной int (внутри метода) она инициализируется случайным значением, мусором, бывшим в памяти при выделении места под переменную, и чтобы избежать ошибок, компилятор проверяет, чтобы это "случайное значение" не использовалось. В книгах все это давно описано. Читать, читать и читать.
...
Рейтинг: 0 / 0
java основы
    #34285571
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все понял. всемо спасибо :)
...
Рейтинг: 0 / 0
java основы
    #34285575
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjordтак я и читаю )) и по ходу чтения возникают вопросы
получается что
Код: plaintext
 int  b;
тоже получает значение по умолчанию 0, однако если сделать
Код: plaintext
1.
 int  b;
System.out.println(b);
то компилятор скажет что переменная b не проинициализированна, а
Код: plaintext
 int  a[] =  new   int [ 7 ];
инициализирует массив нулями?

А ты ещё спецификацию скачай и полистай на досуге.
Поля инитятся значениями по умолчанию. Элементы массива тоже. А вот локальные переменные значениями по умолчанию не инитятся. Вот всё. А ты сразу как загнул про "тип примитивной переменной".
...
Рейтинг: 0 / 0
java основы
    #34285582
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зашедшийпри объявлении локальной переменной int (внутри метода) она инициализируется случайным значением, мусором, бывшим в памяти при выделении места под переменную

Откуда дровишки?
...
Рейтинг: 0 / 0
java основы
    #34285645
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОткуда дровишки? Тоже интересно почитать...
...
Рейтинг: 0 / 0
java основы
    #34285709
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz Зашедшийпри объявлении локальной переменной int (внутри метода) она инициализируется случайным значением, мусором, бывшим в памяти при выделении места под переменную

Откуда дровишки?
Собственно в спецификации JVM это никак не упоминается, там просто выставлено ограничение на использование неинициализированных локальных переменных, но был такой баг в Symantec JIT-compiler. Последний позволял через редактирование байт-кода использовать неинициализированные локальные переменные, в том числе, например, и ссылки на объекты. В итоге указатели показывали куда попало. Баг починили, конечно :)
...
Рейтинг: 0 / 0
java основы
    #34285721
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде про это как раз:
Some remarks:
1. I use boolean, and for 32-bit-values double checking is ok, even in the link.

2. The inspection do not bother me, they reports too many warnings. But we have the goal to get only green code without warnings. And since 833 it reports doublechecking.

3. The JVM-Spec requires that its not allowed to use a noninitialized object, it do not allow a use (= a store)
of this uninitialized object
http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#9839

I've tested it (with bcel): the byte code verifier refuse with an "Expecting to find object/array on stack"-exception, if you try to store an object to a field before the initialization:

new #1 // java.lang.Object
dup
putstatic #2 // a static field
invokespecial #1 // Constructor



Same with nonstatic fields, but ok with local variables
(because that cant be accessed from another thread [or threat ;-) ])

So the Symantec JIT-compiler is not correct. Consider, if the constructor takes long value, you may access the object before initialization, or with malicious byte code you can create invalid strings (place in the bytecode between new and invokespecial a Thread.sleep which is ok).
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / java основы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]