![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 1 Всего: 61 |
Привет!
Вот дошёл до первой программы в книге и сразу появился вопрос. Есть класс:
При создании метода класса public static main( String[] args ) { ..... }, я не совсем понял то, что выделино красным цветом. Точнее сказать недопонял. Насколько я понимаю: String[] - указывает что передаваемые аргументы в метод должны иметь тип String. args - указывает что методу по идее должны передаваться аргументы ( параметры ). Если я верно понимаю, отсюда 2 вопроса: 1. Что означают квадратные скобки после String? 2. Если мы указали что методу должны передаваться параметры ( args ), но ведь на самом деле мы ничего не передаём. Как это обьяснить? 3. В книге написано что, методы в Java это тоже что и функции в других языках программирования. Например в Perl я создаю туже функцию:
Так вот к чему я: если в приведённой Perl программе удалить ту строку, на которой я просил обострить внимание, то ничего не произойдёт. Другими словами, я не пойму где программе Java вызывается метод. Или программа она выполняется вся, без какого либо управления? Извините за такие глупые вопросы. Но я просто пытаюсь решать проблемы по мере их возникновения. Заранее благодарен, Денис. Это сообщение отредактировал(а) korob2001 - 8.7.2004, 01:50 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
Domestic Cat |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Massiv.:
JVM schityvaet komandnye argumenty v jetot samyj massiv, skazhem pri zapuske java Test a bc cde args budet takim: args[0] = "a" args[1] = "bc" args[2] = "cde" dlja java Test args budet pustym
Znachit, plohaja kniga. Najdite knigu poluche, t.k. metod - jeto ne funkcija. Posmotrite na sajte Sun, tam horoshij tutorial: http://java.sun.com/docs/books/tutorial/index.html PS. sorry za translit, vremeni net. PPS. Zavtra mogu otvetit' popodrobnee, no "zavtra" oznachaet okolo 16.00 po Moskve Это сообщение отредактировал(а) Domestic Cat - 8.7.2004, 02:19 -------------------- |
||||||||
|
|||||||||
korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 1 Всего: 61 |
Книга "Философия Java" 3-е издание ( Брюс Эккель ). Вроде нормальная, у меня пока только 2 книги по Java.
ОК. В принципе, первые два вопроса отпали, по ним всё понял. Если вас не затруднит напишите пояснее по поводу третьего вопроса. Спасибо. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: 5 Всего: 9 |
Вам нужно сначала про ООП почитать ... так как Ява чистый ООП язык (почти
![]() Что мне кажется важно понять в начале: 1) Забудте про процедурно ориентированые языки думайте даже о самой ерунде как об объекте ... со своими свойствами (полями) и поведением (методами) 2) Думате о классе как о фабрике объектов 3) Научитесь выделять сущность -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
DarkDS |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Не совсем так. В Яве для того чтобы вызвать метод нужно к нему обратится точно так же как и в перле и в других языках программирования. Но для того чтобы запустить программу нужно как то показать, откуда ей нужно работать. Так в паскале для этого есть основной блок бегин-енд, в сях есть основной метод маин и тд и тп. Так и в Яве для того чтобы указать что этот класс может запускатся как программа задается метод майн и при запуске его JVM вызывает именно этот метод. То есть при запуске программы из консоли (
А уж в этом методе могут быть созданы все остальные классы и вызваны их методы. Что к стати и делается (вызываются методы вывода в поток (в данном случае в консоль):
|
||||||||
|
|||||||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Книга Эккеля очень хорошая (правда я говорю о "Thinking in Java", может перевод такоu? ); но тогда я не поuму ваших вопросов. Впервые в книге args[] встречается в главе 2 и сразу же обэсняется что [] обозначает массив. Pravda, в этоu же главе написано:
что требует пояснений. Метод может делать то же что и функция (например, решить систему уравнений); однако кроме того он может изменять состояние обьекта (или других обьектов), меняя их поля. Паскалевская функция такого принципиально делать не может. Поэтому забудьте о функциях, и думайте о методах как о неких "ручках" или "кнопках", через которые вы взаимодействуете с обектом. Функция - это нечто самодостаточное, вы можете, например, функцию "factorial (int n) {.....}" вставить в любую программу (в процедурных языках, таких как C); метод же неотделим от обекта также как и кнопка Reset неотделима от компьютера, то есть она то отделима, но тогда зачем она нужна ? (опустим static методы для простоты). Почитайте того же Еккеля внимательнее, не торопитесь; самое главное - освоить ООП (далее см. пост ElectricalStorm ![]() -------------------- |
||||
|
|||||
ovod |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 5.6.2004 Репутация: нет Всего: 1 |
Есть ли электронный вариант вышеозначенного чтива на русском? Скоро поеду в Питер, куплю в мягкой обложке, но уже не терпится.
Насчет доступа к полям объектов их дельфевой функции. Можно их менять, записывая новое значение прям в память (о способах обхода прямой записи в контекст чужого приложения многое уже написано и сказано). Хотя.. сам не делал, спорить не буду. Только ли пробелами можно разделять командные аргументы? Как сделать, чтоб например символом подчеркивания? |
|||
|
||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Electrical Strom
Почему? 100% ООП язык. ovod
Ето к чему?
Только пробелами, иначе аргумент будет одноu строкоu. Это сообщение отредактировал(а) Domestic Cat - 8.7.2004, 22:28 -------------------- |
||||||
|
|||||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 1 Всего: 61 |
Большое спасибо всем.
Извиняюсь за исчезновение, сыну вчера исполнился год, был не в состоянии подойти к компу. ;) Вроде всё понял, правда - смутно. ОК послушаю вашего совета постараюсь не думать о процедурных языках. Перечитаю всё сначала. Ещё раз спасибо. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
redrick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: 3 Всего: 5 |
рискну прокоментировать всё-таки про String[] :
в Java, как кто-то сверху сказал почти всё - объекты, так вот String[] - это тоже объектный тип и квадратные скобки не более чем часть его имени. Для меня это тоже было открытием в своё время - после C и C++ квадратные скобки прочно ассоциируются с оператором или ещё чем-нибудь там если я тут написал таки фигню - исправьте плз -------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
Sun |
|
|||
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: 8 Всего: 48 |
Квадратные скобки указывают что это массив объектов типа String. Но в Java массив это чуть больше чем область памяти, хранящая указатели на объекты. Массив сам является объектом, у которого есть свои методы. Например у него есть метод length(), возвращающий колличество элементов массива.
-------------------- Account removed |
|||
|
||||
DarkDS |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Причем его можно и привести к объекту ![]()
|
||||
|
|||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 1 Всего: 61 |
Лично у меня квадратные скобки асоциируются с массивом. ;) -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Sun:
length не метод, а public поле; длина ряда массива находится так:
-------------------- |
||||
|
|||||
redrick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: 3 Всего: 5 |
здесь часто идёт такая путаница с вектором (Vector) у которого как раз есть такой метод
-------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |