И.Н. Блинов, В.С. Романчик - Основы программирования на языке Java (1160783), страница 5
Текст из файла (страница 5)
Другими словами это значит, что файлAccountBalance.java находится в каталоге /com/MyPack. Нельзя переименовывать пакет, не переименовав каталог, в котором хранятсяего классы.Если пакет не существует, он создается при первой компиляции,если пакет не указан, класс добавляется в неименованный (unnamed)пакет. Чтобы получить доступ к классу из другого пакета, перед именем класса указывается имя пакета: Pakagename.Classname.
Чтобыизбежать таких длинных имен, используется ключевое слово import.import javax.swing.JApplet;import java.awt.*;Каталог, который транслятор Java будет рассматривать как корневой для иерархии пакетов, можно задавать с помощью переменнойсреды окружения СLASSPATH.Упражнения1. Что неправильно в объявлении класса С:class C extends B, A implements Runnable, D {}2. public interface A {static final int myCount = 10;abstract public void method1(int i);abstract public int method2(float f);class B implements A { }Чтобы расширить А класс В должен сделать?a)быть в том же пакете, что и Aб)объявить статическую версию method1(),method2()с) включить неабстрактную версию method1(), method2().3. Когда будет позволено преобразование b к классу C?B b = new B();C c = (C) b;а)B суперкласс C; б)C final-класс; с)B и C подклассы одного суперкласса;д)B подкласс C296.
КЛАСС String. ПОТОКИ ВВОДА/ВЫВОДАКласс StringСистемная библиотека Java содержит классы String иStringBuffer, поддерживающие работу со строками и определенные впакете java.lang. Эти классы объявлены как final, что означает, что отэтих классов нельзя производить подклассы. Класс String поддерживает несколько конструкторов, например String(), String(Stringstrobj), String(char[]), String(byte asciichar[]).
Когда Java встречаетобъект литерал, заключенный в двойные скобки, автоматически создается объект типа String. Таким образом, объект класса String можносоздать, присвоив ссылке на класс значение существующего литерала,или с помощью new и конструктора. Класс String содержит основныеметоды для работы со строками: слияние строк (concat(s) или +),сравнение строк (equals(s) и compareTo(s)), извлечение символа иподстроки (charAt(n) и substring(n,m)). Длина строки определяется спомощью метода length(). Преобразование объекта к строке осуществляется с помощью методов toString() (Integer.toString(),Float.toString() и т.д.) или valueOf() (String.valueOf()).
Методыs.toUpperCase()/s.toLowerCase() преобразует все символы строки s вверхний/нижний регистр. Метод replace(char,char) заменяет в строкевсе вхождения первого символа вторым символом.Класс StringBuffer является близнецом класса String, но, в отличиеот последнего, объекты которого нельзя изменять (новая строка − этоновый объект класса String), строки, являющиеся объектами классаStringBuffer, можно изменять. Объекты этого класса можно преобразовать к классу String методом toString().
Установка длины буфераосуществляется методом setLength(n). Для добавления и вставки символов или строк используются методы append(s) и insert(n,s).В следующем примере массив символов преобразуется в String,затем в StringBuffer, и использованы методы этих классов.// пример #1 : использование методов : GetSetChar.javapublic class GetSetChar {public static void main(String[] args) {char s[]={'J','a','v','a'};String str = new String(s);StringBuffer sbuf = new StringBuffer(str);str=str.toUpperCase();//JAVASystem.out.println("до изменения = "+str + sbuf); //JAVAJavasbuf.setLength(5); sbuf.setCharAt(4, '2');30System.out.println("после:"+sbuf+str.substring(0,3)+sbuf.charAt(3)); //Java2JAVa}}В следующем примере рассмотрен метод equals(), который сравнивает строку String с указанным объектом.// пример #2: использование equals() : EqualStrings.javapublic class EqualStrings {public static void main(String[] args) {String s1 = "Java", s2 = "Java";String s3 = "Visual Age", s4 = "JAVA";System.out.println(s1+"=="+s2+" ответ: " + s1.equals(s2));//trueSystem.out.println(s1+"=="+s3+" ответ: "+ s1.equals(s3));//falseSystem.out.println(s1+"=="+s4+" ответ: "+s1.equals(s4));//false}}В следующем примере рассмотрена сортировка массива строк методом "пузырька".// пример #3 : сортировка : SortArray.javaclass SortArray {public static void main(String args[]) {String a[] = {"Vika", "Natasha", "Alina", "Dima", "Denis"};for(int j = 0; j < a.length; j++)for(int i = j+1; i < a.length; i++)if(a[i].compareTo(a[j]) < 0) {String t = a[j]; a[j] = a[i]; a[i] = t; }for(int i = 0; i < a.length; i++)System.out.print(a[i]+" ");}Потоки ввода/вывода.Потоки ввода последовательности байт являются подклассами абстрактного класса InputStream, потоки вывода последовательностибайт − подклассами абстрактного класса OutputStream.
При работе сфайлами используются подклассы этих классов соответственноFileInputStream и FileOutputStream, конструкторы которых открывают поток и связывают его с соответствующим файлом. Для чтениябайта или массива байт используются перегружаемый метод read()31или read(byte[] b). Метод возвращает −1, если достигнут конец потокаданных.//пример #4 : чтение байтов из потока ввода : ReadBytes.javaimport java.io.*;public class ReadBytes {public static void main(String[] args){int b;try {FileInputStream is = new FileInputStream("ReadBytes.java");while ((b = is.read()) != -1){//прочитанные данные выводятся на консольSystem.out.println("прочитан байт = " + b);}is.close(); //закрытие потока ввода}catch (IOException e){System.out.println("ошибка файла: " + e); }}}Конструктор FileInputStream("ReadBytes.java") открывает потокis и связывает его с файлом ReadBytes.java.
Для закрытия потока используется метод close(). При чтении из потока можно пропустить nбайт с помощью метода skip(): long skip (long n).Для вывода байта или массива байт используются потоки вывода –объекты подкласса FileOutputStream класса OutputStream. В следующем примере для вывода байта в поток используется методwrite().// пример # 5 : вывод байта в поток :WriteBytes.javaimport java.io.*;public class WriteBytes {public static void main(String[] args){int pArray[] = {1, 2, 3, 5, 7, 11, 13, 17};try {FileOutputStream os = new FileOutputStream("bytewrite.dat");for (int i = 0; i < pArray.length; i++)os.write(pArray[i]);os.close();} catch (IOException e) { System.out.println("ошибка файла: "+e);}}}Библиотекаклассовввода/выводасодержитклассDataInputStream для фильтрации ввода, методы которого преобра32зуют введенные данные к базовым типам.
Например, методыreadBoolean(), readByte(), readChar(), readInt(), readLong(),readFloat(), readDouble() используются для ввода данных и преобразования к соответствующему типу.Класс DataOutputStream позволяет записывать данные базовоготипа в поток вывода аналогично классу DataInputStream для ввода.При этом используются методы writeBoolean(), writeChar(),writeInt(), writeLong(), writeFloat(), writeLine().
В следующем примере рассматривается запись данных в поток и чтение из потока.// пример #6 : запись в поток и чтение : DataStreams.javaimport java.io.*;public class DataStreams {public static void main(String[] args){// запись данных в файлtry {FileOutputStream os = new FileOutputStream("data.dat");DataOutputStream ods = new DataOutputStream(os);ods.writeInt(48); // запись целого числаods.writeFloat(3.1416f); // запись вещественного числаods.writeBoolean(true); // запись логического значенияods.writeLong(725624); // запись значения типа longods.close();}catch(IOException e){System.out.println("ошибка записи в файл: " + e);}try { // чтение данных из файлаFileInputStream is = new FileInputStream("data.dat");DataInputStream ids = new DataInputStream(is);int tempi = ids.readInt();// чтение целого числаSystem.out.println(tempi);float tempf = ids.readFloat();// чтение вещественного числаSystem.out.println(tempf);boolean tempb = ids.readBoolean();// чтение логического значенияSystem.out.println(tempb);long templ = ids.readLong();// чтение значения типа longSystem.out.println(templ);ids.close();} catch (IOException e){System.out.println("ошибка " + e); }}}33В отличие от классов FileInputStream и FileOutputStream суперкласс RandomAccessFile позволяет осуществлять произвольный доступ как к потокам ввода, так и вывода.