Java: руководство для начинающих (ЛП)
Java: руководство для начинающих (ЛП) читать книгу онлайн
"Java: руководство для начинающих"составлено Гербертом Шилдтом, автором популярных во всем мире книг по языкам программирования, таким образом, чтобы читатель смог быстро овладеть основными навыками программирования на Java. Полностью обновленное по версии Java Platform, Standard Edition 7, пятое издание этого учебного пособия начинается с рассмотрения самых основ, включая компилирование и выполнение простых программ на Java. Затем в нем описываются ключевые слова и синтаксические конструкции, составляющие основу Java как языка программирования. Далее следует изложение самых передовых языковых средств Java, включая обобщения и многопоточное программирование. И завершается книга введением в библиотеку Swing. Представленный в книге учебный и справочный материал позволяет легко и быстро научиться программировать на Java. Для облегчения процесса изучения Java книга построена следующим образом: - Основные навыки и понятия. Каждая глава начинается с перечня основных навыков и понятий, которые предстоит усвоить читателю. - Обращение к знатоку. Во врезках под этим заголовком даются полезные рекомендации в форме вопросов и ответов. - Примеры для опробования. Это примеры небольших проектов, наглядно показывающие, как применять приобретенные знания и навыки на практике. - Упражнения для самопроверки. В конце каждой главы приводятся контрольные вопросы и задания для проверки прочности усвоенного материала. - Подробные комментарии к примерам программ. Все примеры программ в этой книге снабжены подробными комментариями, описывающими демонстрируемые языковые средства и приемы программирования на Java. В этом учебном пособии для начинающих программировать на Java подробно рассмотрены все основные средства данного языка программирования: типы данных, операторы, циклы, классы, интерфейсы, методы, исключения, обобщения, пакеты, основные библиотеки классов, средства многопоточного программирования, потоки ввода-вывода, перечисления, апплеты и документирующие комментарии. Применение всех этих языковых средств Java на практике наглядно демонстрируется в небольших проектах для самостоятельного опробования. Книга снабжена массой полезных советов авторитетного автора и множеством примеров программ с подробными комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. А для проверки прочности приобретенных знаний и навыков в конце каждой главы приводятся контрольные вопросы и задания.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Добавьте в утилиту сравнения файлов, созданную в примере для опробования 15.1,флажок со следующей пояснительной надписью: Show position of mismatch (Показывать место несовпадения). Если этот флажок установлен, программа должна отображать место, в котором обнаружено первое расхождение в содержимом сравниваемых файлов./Пример для опробования 15-1.Утилита сравнения файлов, создаваемая на основе Swing.В этой версии присутствует флажок для установки режима показаместа первого несовпадения содержимого сравниваемых файлов.Для компиляции этой утилиты требуется JDK 7или более поздняя версия данного комплекта./import java.awt.;import java.awt.event.;import javax.swing.;import java.io.;class SwingFC implements ActionListener {JTextField jtfFirst; // Переменная для хранения имени первого файлаJTextField jtfSecond; // Переменная для хранения имени второго файлаJButton jbtnComp; // Кнопка для сравнения файловJLabel jlabFirst, jlabSecond; // Подсказки для пользователяJLabel jlabResult; // Сведения о результатах и сообщения об ошибкахJCheckBox jcbLoc; // флажок для показа места первого несовпаденияфайловSwingFC () {// создать новый контейнер JFrameJFrame jfrm = new JFrame("Compare Files");// установить диспетчер компоновки FlowLayoutj frm.setLayout(new FlowLayout());// задать исходные размеры рамки окнаjfrm.setSize(200, 190);// завершить программу после закрытия окнаj frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// создать поля для ввода имен файловjtfFirst = new JTextField(14);jtfSecond = new JTextField(14);// установить команды действия для полей ввода текстаjtfFirst.setActionCommand("fileA");jtfSecond.setActionCommand("fileB");// создать кнопку CompareJButton jbtnComp = new JButton("Compare");// добавить приемник событий действия от кнопки ComparejbtnComp.addActionListener(this) ;// создать меткиjlabFirst = new JLabel("First file: ");jlabSecond = new JLabel("Second file: ");jlabResult = new JLabel("");// создать флажокjcbLoc = new JCheckBox("Show position of mismatch");// добавить компоненты на панели содержимогоjfrm.add(jlabFirst);jfrm.add(jtfFirst) ;jfrm.add(jlabSecond) ;jfrm.add(jtfSecond);
j f rm.add(j cbLoc);Приложение А. Ответы на вопросы для самопроверки 599.jfrm.add(jbtnComp);jfrm.add(jlabResult);// отобразить рамку окнаj frm.setVisible(true);}// сравнить файлы после нажатия кнопки Comparepublic void actionPerformed(ActionEvent ae) {int i=0, j=0;// сначала убедиться, что введены имена обоих файловif(jtfFirst.getText().equals("")) {jlabResult.setText("First file name missing.");return;.}if(jtfSecond.getText().equals("")) {jlabResult.setText("Second file name missing.");return;// сравнить файлы, используя оператор try с ресурсамиtry (FilelnputStream fl = new FilelnputStream(jtfFirst.getText());FilelnputStream f2 = new FilelnputStream(jtfSecond.getText()))// проверить содержимое каждого файлаdo {i = f1.read();j = f2.read();if(i != j) break;} whiled != -1 && j != -1) ;if(i != j) (if(jcbLoc.isSelected())jlabResult.setText("Files differ at location " + count);elsejlabResult.setText("Files are not the same.");}elsejlabResult.setText("Files compare equal.");} catch(IOException exc) {jlabResult.setText("File Error");}}public static void main(String args[]) {// создать рамку окна в потоке диспетчеризации событийSwingUtilities.invokeLater(new Runnable() {public void run() {new SwingFC();}});}}
Измените программу List Demo таким образом, чтобы она допускала выбор нескольких элементов из списка.// Демонстрация выбора нескольких элементов из списка// с помощью компонента Jlist.// Для компиляции этой программы требуется JDK 7// или более поздняя версия данного комплекта.import javax.swing.;import javax.swing.event;import java.awt.;import java.awt.event.*;class ListDemo implements ListSelectionListener {JList jlst;JLabel jlab;JScrollPane jscrlp;// создать массив именString names[] = { "Sherry", "Jon", "Rachel","Sasha", "Josselyn", "Randy","Tom", "Mary", "Ken","Andrew", "Matt", "Todd" };ListDemo() {// создать новый контейнер JFrameJFrame jfrm = new JFrame("JList Demo");// установить диспетчер компоновки FlowLayoutj frm.setLayout(new FlowLayout());// задать исходные размеры рамки окнаjfrm.setSize(200, 160);// завершить программу после закрытия окнаj frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// создать компонент JListjlst = new JList(names);// Удалив следующую строку кода, можно задать режим выбора// нескольких элементов из списка, поскольку этот режим// устанавливается для компонента JList по умолчанию.// jlst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// добавить список на панели прокрутки,jscrlp = new JScrollPane(jlst);// задать предпочтительные размеры панели прокруткиjscrlp.setPreferredSize(new Dimension(120, 90));Приложение А. Ответы на вопросы для самопроверки// создать метку для отображения результатов выбора из списка,jlab = new JLabel("Please choose a name");// добавить обработчик событий, связанных с выбором из спискаjlst.addListSelectionListener(this);// добавить список и метку на панели содержимогоjfrm.add(jscrip);jfrm.add(jlab);// отобразить рамку окнаj frm.setVisible(true);}// обработать события, связанные с выбором элементов из спискаpublic void valueChanged(ListSelectionEvent le) {// получить индексы тех элементов, выбор которых был сделан// или отменен в спискеint indices[] = j1st.getSelectedlndices();// отобразить результат выбора, если был выбран один// или несколько элементов из спискаif(indices.length != 0) {String who = "";// построить символьную строку из выбранных именfor(int i : indices)who += names[i] + " ";jlab.setText("Current selections: " + who);}else // иначе еще раз предложить сделать выборjlab.setText("Please choose a name");public static void main(String args[]) {// создать рамку окна в потоке диспетчеризации событийSwingUtilities.invokeLater(new Runnable() {public void run() {new ListDemo();}}) ;}}
Приложение Б Применение документирующих комментариев в Java
Как пояснялось в главе 1, в Java поддерживаются три вида комментариев. Первые два вида обозначаются символами //и/ /,а третий их вид называется документирующими комментариями. Такие комментарии начинаются символами /* и оканчиваются символами /. Документирующие комментарии позволяют включать сведения о программе в исходный код самой программы. Для извлечения этих сведений и последующего их преобразования в формат HTML-документа служит утилита j avadoc, входящая в состав JDK. Документирующие комментарии — удобный способ документирования прикладных программ. Вам, вероятно, уже встречалась документация, сформированная утилитой j avadoc, поскольку именно такой способ применяется для составления документации на библиотеку Java API.Дескрипторы javadoc
Утилита javadoc распознает и обрабатывает в документирующих комментариях следующие дескрипторы
ДескрипторОписание@authorОбозначает автора программы{0code}Отображает данные шрифтом, предназначенным для вывода исходного кода,не выполняя преобразований в формат HTML-документа@deprecatedУказывает на то, что элемент программы не рекомендован к применению{0docRoot}Указывает путь к корневому каталогу документацииGexceptionОбозначает исключение, генерируемое методом{@inheritDoc}Наследует комментарии от ближайшего суперкласса{@link}Вставляет ссылку на другую тему{@linkplain}Вставляет ссылку на другую тему, но ссылка отображается тем же шрифтом, чтои простой текст{@literal}Отображает данные, не выполняя преобразований в формат HTML-документа@paramДокументирует параметр метода@returnДокументирует значение, возвращаемое методом@seeУказывает ссылку на другую тему0serialДокументирует поле, упорядочиваемое по умолчаниюQserialDataДокументирует данные, записываемые методом writeObject () илиwriteExternal ()@serialFieldДокументирует компонент ObjectStreamField0sinceОбозначает версию, в которой были внесены определенные изменения@throwsТо же, что и дескриптор @exception{@value}Отображает значение константы, которая должна быть определена как полетипа static(AversionОбозначает версию классаДескрипторы, начинающиеся с символа @, называются автономными и помечаютстроку комментариев. А дескрипторы, заключенные в фигурные скобки, называютсяПриложение Б. Применение документирующих комментариев в Java 6Q5встраиваемыми и могут быть использованы в других дескрипторах. В документирующихкомментариях можно также использовать стандартные HTML-дескрипторы. Но некоторые HTML-дескрипторы, например дескрипторы заголовков, применять не следует, поскольку они могут испортить внешний вид HTML-документа, составляемого утилитойjavadoc.Что касается документирования исходного кода, то документирующие комментарииможно использовать для описания классов, интерфейсов, полей, конструкторов и методов. Но в любом случае документирующие комментарии должны предшествовать непосредственно описываемому элементу исходного кода. Одни дескрипторы, в том числе@see, @since и @deprecated, могут быть использованы для документирования любыхэлементов исходного кода, а другие — только для документирования соответствующихэлементов. Каждый дескриптор документирующих комментариев рассматривается далеепо отдельности.На заметкуДокументирующие комментарии можно также использовать для составления документациии краткого обзора разрабатываемого пакета, но делается это иначе, чем документирование исходного кода. Подробнее об этом можно узнать из документации на утилиту j avadoc.Дескриптор @author
