Это касается Java-программирования. Почему Java-разработчик сделал length() в качестве функции-члена для String Object, а для ссылочной переменной массива они сделали это как окончательное поле ?. .. Если это не так запутанно, то мой следующий вопрос такой же, как и в любой функции, ссылки - это локальная переменная, хранящаяся в Stack.Then, как мы можем ссылаться на поле на ссылке массива. Пожалуйста, исправьте меня, если я ошибаюсь. .Строка имеет длину как член function.while массив имеет длину как окончательное поле
ответ
Если вы видите source code строки, что сценарий происходит, когда вы передаете chararray в строку constructor.
public More ...String(char value[]) {
193 int size = value.length;
194 this.offset = 0;
195 this.count = size;
196 this.value = Arrays.copyOf(value, size);
197 }
И сделать счет как final
Предотвращено для инициализации count
вне конструктора.
«Почему» вопросы всегда труднее всего ответить. Исторические причины в основном связаны с особым обращением с массивами. Я думаю, что свойства должны быть ограничены простым get и set, только если нет побочных эффектов, иначе используйте функции.
Извините, вы ошиблись. – Level29Access
См. Ниже код: int [] a; a = новый int [4]; a.length = 8; // Ошибка времени компиляции Конечное поле array.length не может быть назначено. – Level29Access
@ Level29Access Вы «задаете» размер, инициализируя его «4». Конечно, вы не можете изменить окончательный var. – Fildor
В массиве length
нет даже поля (это невозможно, потому что массивы не являются реальными объектами). Это «псевдо-собственность», как class
в Object.class
. Это синтаксический элемент, распознаваемый компилятором и переведенный в некоторую примитивную операцию.
Какой объект Object.class вы говорите? .. Я имею в виду, что я не смог найти какое-либо свойство, о котором вы упоминали. – Level29Access
Я не нашел ничего похожего на свойство для массива или для любого другого класса в API.http: //docs.oracle. com/javase/6/docs/api/ – Level29Access
@ Level29Access: Это именно то, что я говорю. Нет класса массива, потому что массив не является нормальным объектом. И поэтому 'length' не является нормальным полем (в каком классе он будет определен?). Компилятор переводит выражение типа a.length в инструкцию JVM 'arraylength', а не доступ к полю. –
- 1. Строка имеет длину, кратную трем
- 2. Аргумент имеет нулевую длину
- 3. Почему этот массив имеет длину 13?
- 4. Массив, содержащий объекты имеет неправильную длину
- 5. Почему строка Java имеет длину метода(), а не длину свойства (например, массив?)
- 6. Создание строк имеет равную длину
- 7. Пустой LongListSelector имеет бесконечную длину
- 8. PyQt, как проверить, имеет ли массив чисел определенную длину
- 9. проверить, если массив как определен и имеет длину
- 10. Имеет ли объект MYSQL_ROW длину?
- 11. Loop - Замена имеет нулевую длину
- 12. Array с элементами имеет длину = 0
- 13. R Ошибка: диагональ замены имеет неправильную длину
- 14. Как получить максимальную длину байтового массива из строки, которая всегда имеет одинаковую длину?
- 15. ActiveRecord выбрать поле строки имеет определенную длину в Rails 3?
- 16. Оптимизированная версия strstr (поиск имеет постоянную длину)
- 17. Проверьте, если строка имеет определенную длину и содержит определенные буквы
- 18. Android SharedPreferences: Сохраненная строка имеет разную длину, чем String?
- 19. C++, строка в функции всегда имеет одинаковую длину
- 20. Самый быстрый способ определить, имеет ли массив длину?
- 21. Ошибка в петлях: замена имеет нулевую длину
- 22. Анализатор UniVocity CSV имеет разную длину?
- 23. R цикл производства «замена имеет нулевую длину»
- 24. Изменить длину столбца таблицы, которая имеет зависимости
- 25. Массив отображает нулевую длину и не имеет значения с каждым()
- 26. Почему зашифрованный байтовый массив имеет другую длину от представления char []?
- 27. Ошибка Android при разборе json, когда массив имеет длину больше
- 28. R Ошибка: замена имеет нулевую длину
- 29. C# array всегда имеет длину 0
- 30. Plaintext, декодированный CCCrypt, имеет неправильную длину
@SURESH ATTA, + 1 для объяснения. Я получил длину(), возвращает счет. – Level29Access
Downvoter, не могли бы вы рассказать о причине нисходящего? в любом случае голосование недействительно без причины, и @ Level29Access получил помощь от этого. Я рад. –