Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246

Когда я успел тут нули присвоить элементам массива?

12.03.2012, 22:09. Показов 4616. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему эта программа выводит нули? Иными словами, получается, я уже инициализировал переменную а. Но ведь я не придавал нулевых значений элементам массива.

Java
1
2
3
4
5
6
7
8
9
10
11
public class Arr1 {
    public static void main(String[] args) {
       
        int[] a = new int [100];
   
        for (int element : a){
            System.out.println(element);
        }
        
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.03.2012, 22:09
Ответы с готовыми решениями:

Элементам массива меньше 10 присвоить нулевые значения, а элементам больше 20 присвоить 1
Одномерный массив из 8 элементов заполнить случайным образом числами от 6 до 30. Элементам массива меньше 10 присвоить нулевые значения,...

Одномерный массив. Элементам с нечетным номером присвоить их номер, a элементам с четным номером присвоить 0
Задать массив из 10 элементов от 1 до 10; Элементу с нечетным номером присвоить их номер, a элементу с четным номером присвоить 0. Помогите...

Присвоить к нулевым элементам массива, средн. арифм. положительных элементов другого массива
Добрый вечер. Столкнулся с такой проблемой, не могу реализовать программу до конца. Помогите пожалуйста. Вот задание: В массиве s(20)...

19
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
12.03.2012, 22:51
Цитата Сообщение от Kifsif Посмотреть сообщение
Но ведь я не придавал нулевых значений элементам массива.
И что? Ты и других значений нигде не указывал. А какое значение, по-твоему, должно быть элементах?
0
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
12.03.2012, 22:57  [ТС]
Я думал, должно выдаваться сообщение об ошибке.
Как вот здесь:
Java
1
2
3
4
5
6
7
public class Arr1 {
 
    public static void main(String[] args) {
        int a;
        System.out.println(a);        
    }
}
В чем принципиальная разница?
0
 Аватар для RequiemMass
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
13.03.2012, 00:21
По умолчанию очевидно массив идеализируется нулями. Ну принципиальная разница в том, что переменную во втором примере ты не инициализировал. А массив уже инициализирован. new int [100]; слово new значит задействуется конструктор. Если явный конструктор не указан задействуется конструктор по умолчанию(0). В первом примере ты просто описал переменную.

Добавлено через 10 минут
идеализируется инициализируется
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
13.03.2012, 01:38
Цитата Сообщение от Kifsif Посмотреть сообщение
В чем принципиальная разница?
примитивные типы в java в случае объявления без инициализации при вызове инициализируются дефолтным минимальным значением. (спецификация языка)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Measurement {
  boolean t;
  char c;
  byte b;
  short s;
  int i;
  long l;
  float f;
  double d;
  void print() {
    System.out.println(
      "Data type      Inital value\n" +
      "boolean        " + t + "\n" +
      "char           " + c + "\n" +
      "byte           " + b + "\n" +
      "short          " + s + "\n" +
      "int            " + i + "\n" +
      "long           " + l + "\n" +
      "float          " + f + "\n" +
      "double         " + d);
  }
}
 
public class InitialValues {
  public static void main(String[] args) {
    Measurement d = new Measurement();
    d.print();
    /* In this case you could also say:
    new Measurement().print();
    */
  }
}
это происходит тогда когда компилятор об этом не знает, например внутри класса объявлены переменные, но не инициализированны, а вы создали инстанс такого класса. В вашем случае компилятор знает про int a так как вы создали прямо в main.
Стандартный массив является классом, поэтому он и проинициализировался автоматом при вызове.


ps: наследники Object без инициализации содержат в себе null pointer.
0
 Аватар для Konstantin_D
15 / 15 / 6
Регистрация: 21.07.2011
Сообщений: 89
13.03.2012, 02:36
После объявления переменной ее нужно инициализировать. Использование неинициализированной переменной вызывает ошибку на этапе компиляции.
Java
1
2
3
4
int a; //объявление переменной
int a = 10; //объявление и инициализация переменной
int[] ar; //объявление массива
int[] ar = new int[100]; //создание массива
При создании массива чисел все его элементы инициализируются нулями, массивы значений boolean инициалиются false, массивы объектов - null.
0
142 / 105 / 16
Регистрация: 21.04.2011
Сообщений: 402
13.03.2012, 03:02
поля инициализируются, локальные переменные - нет
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
13.03.2012, 03:10
ребята вы увлеклись рассказывать что и где инициализирится
а вопрос был почему
0
 Аватар для RequiemMass
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
13.03.2012, 03:52
mutagen, а фиг его знает-правила такие. ))
0
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
13.03.2012, 06:43  [ТС]
Если это класс, значит, я могу использовать некий собственный конструктор?
Т.е. я не хочу, чтобы тут работал конструктор по умолчанию. Возможно?
Если невозможно, то, действительно, зачем массив является классом?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
13.03.2012, 06:56
Цитата Сообщение от Kifsif Посмотреть сообщение
Если это класс, значит, я могу использовать некий собственный конструктор?
Т.е. я не хочу, чтобы тут работал конструктор по умолчанию. Возможно?
нет, это потянет множество других проблем за собой, если бы это было возможно
Цитата Сообщение от Kifsif Посмотреть сообщение
Если невозможно, то, действительно, зачем массив является классом?
Например, чтобы их можно было хранить в коллекциях
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
13.03.2012, 09:32
Цитата Сообщение от Kifsif Посмотреть сообщение
Если это класс, значит, я могу использовать некий собственный конструктор?
ну если вы класс создали то конечно можно использовать собственный, но массив ведь создали разработчики, а они оставили вам только несколько конструкторов
Java
1
2
3
int [] a = {1,2,3};
a = new int [10];
a = new int [] {1,2,3};
есть в java конструкции которые обеспечивают синтаксис языка, все они классы, некоторые из них final и с этим ничего не поделать.
(Вы же не жалуетесь, что нелься унаследовать String)
Цитата Сообщение от Kifsif Посмотреть сообщение
Если невозможно, то, действительно, зачем массив является классом?
Тут хорошо прозвучит цитата из Эккеля: "В java всё является классом"
и от меня - даже void.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
13.03.2012, 11:47
Цитата Сообщение от mutagen Посмотреть сообщение
и от меня - даже void.
Интересно, почему вы так решили? я уверен в обратном.
0
 Аватар для RequiemMass
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
13.03.2012, 11:49
по моему примитивные типы в java нельзя переписывать. Я немного не понимаю, если честно в чём заключается задача.
Если требуется массив каких то значений инициализируйте его вручную.
А ещё мне интересно, если там не будет нулей, то что же там будет находится.
Что вы ожидаете на выходе?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
13.03.2012, 12:39
Цитата Сообщение от turbanoff Посмотреть сообщение
Интересно, почему вы так решили? я уверен в обратном.
Java
1
2
3
4
5
public class Shure {
    public static void main(String[] args) {
        System.out.println(void.class);
    }
}
Добавлено через 2 минуты
Цитата Сообщение от RequiemMass Посмотреть сообщение
по моему примитивные типы в java нельзя переписывать.
никто их не собирался переписывать, человек хотел свой конструктор
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
13.03.2012, 12:48
Цитата Сообщение от turbanoff Посмотреть сообщение
я уверен в обратном.
ВНЕЗАПНО
Java
1
System.out.println(void.class);
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
13.03.2012, 12:56
Цитата Сообщение от aleksandy Посмотреть сообщение
ВНЕЗАПНО
как человеку разжевать, так никого, а как ткнуть лицом, так куча народу
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
13.03.2012, 13:18
Цитата Сообщение от aleksandy Посмотреть сообщение
ВНЕЗАПНО
Java
1
System.out.println(void.class);
Например вот такое:
Java
1
Class.forName("void");
бросает ClassNotFoundException
Так что вопрос довольно спорный, но собственно уже
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
13.03.2012, 13:45
Цитата Сообщение от turbanoff Посмотреть сообщение
Так что вопрос довольно спорный.
а вот такое вас не смущает
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.lang.reflect.Method;
 
public class Shure {
    public static void main(String[] args) throws Exception {
        Class vo = void.class;
        System.out.println(vo.getName());
        Method[] get = (Class.class).getDeclaredMethods();
        for (Method m : get) {
            if (m.getName().contains("getPrimitiveClass")) {
                m.setAccessible(true);
                Class c = Class.class;
                System.out.println("method is " + m.toString());
                Class r = (Class) m.invoke(c, "void");
                System.out.println(r.getName());
            }
        }
    }
}
надеюсь вы вкурсе рефлекшена и мне не придётся комментировать код
0
 Аватар для Konstantin_D
15 / 15 / 6
Регистрация: 21.07.2011
Сообщений: 89
13.03.2012, 19:47
Цитата из книги Кея Хорстманна Java 2. Том 1. Основы. Восьмое издание. стр 237:
"Отметим, что объект Class фактически описывает тип, который не обязательно является классом. Например, тип int - это не класс, однако, несмотря на это int.class - это объект Class."

Добавлено через 1 час 1 минуту
Java
1
if (void.class.isPrimitive()) System.out.println("Primitive type "+void.class.getName());
Добавлено через 8 минут
Там же. стр 253:
Если возвращаемое значение относится к простому типу, метод invoke() возвращает объект интерфейсного класса. С появлением Java SE 5.0 преобразование произойдет автоматически.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2012, 19:47
Помогаю со студенческими работами здесь

Присвоить значения элементам массива
Нужно проинициализировать массив с 1000 элементов. Есть ли возможность сделать это, не присваивая значения последовательно каждому...

Задан массив А(25). Для каждых 5 компонентов массива выводить среднее арифмитическое и присвоить его элементам массива Х
1) Задан массив А(25). Для каждых 5 компонентов массива выводить среднее арифмитическое и присвоить его элементам массива Х.

Как присвоить элементам массива значения?
Я приведу, как пример, а не как требования. Т.к. не знаю можно и вообще целесообразно задавать 2 массива. Пользователь вводит буквы, те...

Присвоить ключи элементам массива циклом
Добрый день. Подскажите пожалуйста как можно присвоить ключи элементам массива выгруженным из бд. $data = mysqli_query($dbc, $query); ...

Присвоить элементам массива значение по правилу
даны две матрицы А и В. Если каждый элемент матрицы А больше соответствующего элемента матрицы В, присвоить элементам С1,С2,...,С5 значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru