|
|
|
java основы
|
|||
|---|---|---|---|
|
#18+
fjord Dremmmm fjordв том то и дело что массив заполняется до 4, и по идее пятый элемент должен быть null, но выдается 0 100 пудов, надо лучше книжки читать Blazkowicz правильно писал "null это не тип, а значение по умолчанию. Только у int оно 0, а не null"так я и читаю )) и по ходу чтения возникают вопросы получается что Код: plaintext Код: plaintext 1. Код: plaintext при объявлении переменной типа int в классе она инициализируется нулем, при объявлении массива int они инициализируются нулями, при объявлении локальной переменной int (внутри метода) она инициализируется случайным значением, мусором, бывшим в памяти при выделении места под переменную, и чтобы избежать ошибок, компилятор проверяет, чтобы это "случайное значение" не использовалось. В книгах все это давно описано. Читать, читать и читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 14:51:34 |
|
||
|
java основы
|
|||
|---|---|---|---|
|
#18+
все понял. всемо спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 14:51:45 |
|
||
|
java основы
|
|||
|---|---|---|---|
|
#18+
fjordтак я и читаю )) и по ходу чтения возникают вопросы получается что Код: plaintext Код: plaintext 1. Код: plaintext А ты ещё спецификацию скачай и полистай на досуге. Поля инитятся значениями по умолчанию. Элементы массива тоже. А вот локальные переменные значениями по умолчанию не инитятся. Вот всё. А ты сразу как загнул про "тип примитивной переменной". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 14:52:15 |
|
||
|
java основы
|
|||
|---|---|---|---|
|
#18+
Зашедшийпри объявлении локальной переменной int (внутри метода) она инициализируется случайным значением, мусором, бывшим в памяти при выделении места под переменную Откуда дровишки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 14:53:48 |
|
||
|
java основы
|
|||
|---|---|---|---|
|
#18+
авторОткуда дровишки? Тоже интересно почитать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 15:08:22 |
|
||
|
java основы
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Зашедшийпри объявлении локальной переменной int (внутри метода) она инициализируется случайным значением, мусором, бывшим в памяти при выделении места под переменную Откуда дровишки? Собственно в спецификации JVM это никак не упоминается, там просто выставлено ограничение на использование неинициализированных локальных переменных, но был такой баг в Symantec JIT-compiler. Последний позволял через редактирование байт-кода использовать неинициализированные локальные переменные, в том числе, например, и ссылки на объекты. В итоге указатели показывали куда попало. Баг починили, конечно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 15:22:34 |
|
||
|
java основы
|
|||
|---|---|---|---|
|
#18+
Вроде про это как раз: 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). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 15:25:14 |
|
||
|
|

start [/forum/topic.php?fid=59&startmsg=34285567&tid=2146834]: |
0ms |
get settings: |
15ms |
get forum list: |
17ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
49ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 280ms |
| total: | 471ms |

| 0 / 0 |
