Введение
В Java и других объектно-ориентированных языках объекты представляют собой коллекции связанных данных, которые сопровождаются набором методов. Эти методы работают с объектами, выполняют вычисления и иногда изменяют данные объекта. Здесь мы познакомим вас с тремя простыми, но важными встроенными типами объектов Java: Number, String и Array.
Число
По сути, мы используем примитивные типы чисел, такие как byte, int, double и т.д. Однако, иногда мы нуждаемся в использовании объектов вместо примитивных типов данных. Java предоставляет обертки для примитивных типов данных. Это Byte, Short, Long, Integer, Double, Float и т.д. Объект-обертку можно преобразовать обратно в примитивный тип данных. Этот процесс называется разупаковкой (unboxing). Класс Number является частью пакета java.lang. Пакеты будут обсуждаться позже.
Ниже приведен список некоторых общих методов класса, которые реализуют подклассы класса Number:
- xxxValue(): Преобразует значение этого объекта
Numberв тип данных xxx и возвращает его. - compareTo(): Сравнивает этот объект
Numberс аргументом. - equals(): Определяет, равно ли этот объект
Numberаргументу. - valueOf(): Возвращает объект
Integer, содержащий значение указанного примитивного типа. - toString(): Возвращает объект
String, представляющий значение указанногоintилиInteger. - parseInt(): Этот метод используется для получения примитивного типа
intиз определенного значенияString. - abs(): Возвращает абсолютное значение аргумента.
- ceil(): Возвращает наименьшее целое число, которое больше или равно аргументу. Возвращается в виде
double. - floor(): Возвращает наибольшее целое число, которое меньше или равно аргументу. Возвращается в виде
double. - pow(): Возвращает значение первого аргумента, возведенного в степень второго аргумента.
- round(): Возвращает
longилиint, ближайшее, как указано типом возврата метода, к аргументу.
Пример:
Напишите следующий код в файле /home/labex/project/numberTest.java:
public class numberTest
{
public static void main(String[] args){
Integer x = 1; // упаковывает int в объект Integer
x = x + 1; // разупаковывает Integer в int
System.out.println(Integer.parseInt("10")); // парсит int из строки
System.out.println( "x = " + x);
}
}
Вывод:
Запустите файл numberTest.java с использованием следующей команды:
javac /home/labex/project/numberTest.java
java numberTest
Посмотрите на вывод:
10
x = 2
Строка
Строки - это объекты, поэтому вы можете спросить: «Какие данные содержатся в объекте String?» и «Какие методы мы можем вызывать для объектов String?» Компонентами объекта String являются символы. Не все символы - это буквы; некоторые - это цифры, другие - специальные символы, а остальные - другие классы символов. Для простоты будем называть их всеми символами. В классе String есть много методов работы со строками, но мы будем использовать только несколько из них. Остальные можно найти в документации на официальном сайте.
Примечание: Класс String неизменяем, поэтому一旦 создан, объект String нельзя изменить. Если необходимо делать много изменений в строках символов, то следует использовать классы StringBuffer и StringBuilder.
Ниже приведен список некоторых общих методов классов String, StringBuffer и StringBuilder:
- char charAt(int index): Возвращается указанный символ последовательности, которая в настоящее время представлена в виде строки, как показано аргументом
index. - void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin): Символы копируются из этого буфера строк в целевой массив символов
dst. - int indexOf(String str): Возвращает индекс первого вхождения указанной подстроки в этой строке.
- int indexOf(String str, int fromIndex): Возвращает индекс первого вхождения указанной подстроки в этой строке, начиная с указанного индекса.
- int lastIndexOf(String str): Возвращает индекс правого вхождения указанной подстроки в этой строке.
- int lastIndexOf(String str, int fromIndex): Возвращает индекс последнего вхождения указанной подстроки в этой строке, сдвигаясь назад, начиная с указанного индекса.
- int length(): Возвращает длину (количество символов) этого буфера строк.
- String substring(int start): Возвращает новую строку, которая содержит подпоследовательность символов, которые в настоящее время содержатся в этом
StringBuffer. Подстрока начинается с указанного индекса и продолжается до концаStringBuffer. - String substring(int start, int end): Возвращает новую
String, которая содержит подпоследовательность символов, которые в настоящее время содержатся в этомStringBuffer.
Пример:
Напишите следующий код в файле /home/labex/project/stringTest.java:
public class stringTest
{
public static void main(String[] args){
String greeting = "Hello world!";
String hello = new String("Hello!");
System.out.println("greeting is: "+ greeting);
System.out.println("hello is: "+ hello);
System.out.println("length of greeting: " + greeting.length());
System.out.println("first char of greeting: " + greeting.charAt(0));
System.out.println("index of 'e' in hello: "+ hello.indexOf('e'));
System.out.println("substring of greeting: "+ greeting.substring(6)); //substr: world
}
}
Вывод:
Запустите файл stringTest.java с использованием следующей команды:
javac /home/labex/project/stringTest.java
java stringTest
Посмотрите на вывод:
greeting is: Hello world!
hello is: Hello!
length of greeting: 12
first char of greeting: H
index of 'e' in hello: 1
substring of greeting: world!
Массив
Структура массива используется для хранения коллекции данных, но часто полезнее думать о массиве как о коллекции переменных одного типа. Вместо объявления отдельных переменных, таких как number0, number1,..., number99, вы объявляете одну переменную массива numbers и используете numbers[0], numbers[1],..., numbers[99] для представления отдельных переменных. Первый элемент массива имеет индекс 0.
Ниже приведен список некоторых общих методов, которые имеют массивы:
- public static int binarySearch(Object[] a, Object key): Ищет заданное значение в указанном массиве с использованием алгоритма бинарного поиска. Массив должен быть отсортирован перед вызовом этого метода. Возвращает индекс искомого ключа, если он содержится в массиве; в противном случае возвращает
(–(точка вставки + 1)). - public static boolean equals(long[] a, long[] a2): Возвращает
true, если два указанных массиваlongравны друг другу. Два массива считаются равными, если оба массива содержат одинаковое количество элементов и все соответствующие пары элементов в двух массивах равны. Возвращаетtrue, если два массива равны. Этот же метод может быть использован для других примитивных типов данных (byte,short,intи т.д.) также. - public static void fill(int[] a, int val): Назначает указанное целочисленное значение каждому элементу указанного массива
int. Этот же метод может быть использован для других примитивных типов данных (byte,shortи т.д.) также. - public static void sort(Object[] a): Сортирует указанный массив объектов в порядке возрастания в соответствии с естественным порядком их элементов. Этот же метод может быть использован для примитивных типов данных (
byte,short,intи т.д.) также.
Пример:
Напишите следующий код в файле /home/labex/project/arrayTest.java:
public class arrayTest
{
public static void main(String[] args){
// вы можете использовать new для инициализации пустого массива.
String[] nameArray1 = new String[5];
// заполните пустые элементы nameArray1 одним и тем же именем "abc"
java.util.Arrays.fill(nameArray1,"abc");
// цикл for также можно использовать для итерации по массиву
for (String name:nameArray1){
System.out.println(name);
}
// вы можете использовать некоторые значения для инициализации массива.
String[] nameArray2 = {"Candy", "Fancy", "Ann", "Ella", "Bob"};
// вы можете получить длину массива
System.out.println("Length of nameArray2: " + nameArray2.length);
// вы можете получить значение по индексу
System.out.println("The last item of nameArray2 is " + nameArray2[4]);
// отсортировать объект массива
java.util.Arrays.sort(nameArray2);
System.out.println("Sorted nameArray2 by alphabet:");
for(String name:nameArray2){
System.out.println(name);
}
}
}
Вывод:
Запустите файл arrayTest.java с использованием следующей команды:
javac /home/labex/project/arrayTest.java
java arrayTest
Посмотрите на вывод:
abc
abc
abc
abc
abc
Length of nameArray2: 5
The last item of nameArray2 is Bob
Sorted nameArray2 by alphabet:
Ann
Bob
Candy
Ella
Fancy
Резюме
Большинство задач заключается в манипуляции данными, такими как числа и строки, поэтому использование встроенных классов Java для выполнения этих задач простым и эффективным. Для более продвинутого использования вы можете прочитать официальную документацию.



