Компиляция исходного Java-кода в байт-код




- Компилируйте файлы *.java, получая *.class. Например: javac MyTest.java или javac HelloWorld.java

Запуск байт-кода

- Запустите класс, где есть функция public static void main(…). Например: java -cp. MyTest или java HelloWorld

2. Классэто шаблон для создания объекта. Класс определяет структуру объекта и его методы, образующие функциональный интерфейс. В процессе выполнения Java -программы система использует определения классов для создания представителей классов. Представители являются реальными объектами.

Методы в Javaэто законченная последовательность действий (инструкций), направленных на решение отдельной задачи. По сути, это функции (они же процедуры, подпрограммы) более ранних, не ООП языков.

Свойство — способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Обращение к свойству объекта выглядит так же, как и обращение к структурному полю (в структурном программировании), но, в действительности, реализовано через вызов функции. При попытке задать значение данного свойства вызывается один метод, а при попытке получить значение данного свойства — другой.

При применении свойств:

можно задать значение по умолчанию, которое будет храниться в данном свойстве (или указать, что никакого значения по умолчанию не предполагается);

можно указать, что это свойство только для чтения.

Объявление класса производится с помощью ключевого слова class. Пример: class < имя_класса > {// содержимое класса}.

Методы определяются всегда внутри классов:

public class Main {

public static void foo() {

// Тело метода

}

}

foo - это метод, который мы определили в классе Main, давайте его рассмотрим.

  • public — тип доступа (метод может вызываться из другого класса). Существуют и другие типы доступа, к примеру private (метод доступен только внутри класса) и protected (о нем мы будем говорить позже).
  • static означает что метод статический, он принадлежит классу Main, а не конкретному экземпляру класса Main. Мы можем вызвать этот метод из другого класса так: Main.foo().
  • void значит, что этот метод не возвращает значение. Методы могут возвращать значение в Java и оно должно быть определено при объявлении метода. Однако, вы можете использовать return просто для выхода из метода.
  • Этот метод не получает никаких аргументов, но методы java могут получать аргументы, как мы увидим далее на примерах.

Если тип возвращаемого значения не void, в теле метода должен быть хотя бы один оператор

Метод Main ()

В каждом приложении на java должен присутствовать один метод main, указывающий точку начала выполнения программы. в языке Java используется нижний регистр main.

Main может возвращать только int или void, и имеет необязательный аргумент массива строк для представления параметров командной строки.

Задача:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace ConsoleApplication4

{

class Vector

{

public Vector(double x1, double y1)

{

X = x1;

Y = y1;

}

public double X;

public double Y;

 

public double Length()

{

return Math.Sqrt(X * X + Y * Y);

}

public static Vector operator +(Vector l, Vector r)

{

return new Vector(l.X + r.X, l.Y + r.Y);

}

public static Vector operator *(Vector l, Vector r)

{

return new Vector(1.x * r.x + 1.y * r.y);

}

 

public static Vector operator -(Vector l, Vector r)

{

return new Vector(l.X - r.X, l.Y - r.Y);

}

public static double operator *(Vector l, Vector r)

{

return (l.X * r.X + l.Y * r.Y);

}

public static double Cos(Vector l, Vector r)

{

return (l * r) / (l.Length() * r.Length());

}

public override string ToString()

{

return string.Format("({0},{1})", X, Y);

}

}

 

class Program

{

static void Main(string[] args)

{

Console.Write("Введите координаты первого вектора ");

// начальные коодинаты 1-го вектора

Console.Write("Введите значение х1 вектора а: ");

double xx1 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите значение y1 вектора а: ");

double yy1 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите координаты конечного первого вектора ");

// конечные коодинаты 1-го вектора

Console.Write("Введите значение х2 вектора а: ");

double xx11 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите значение y2 вектора а: ");

double yy11 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите координаты второго вектора ");

// начальные коодинаты 2-го вектора

Console.Write("Введите значение х1 вектора b: ");

double xx2 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите значение y1 вектора b: ");

double yy2 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите координаты конечного второго вектора ");

// конечные коодинаты 2-го вектора

Console.Write("Введите значение х2 вектора b: ");

double xx22 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите значение y2 вектора b: ");

double yy22 = Convert.ToDouble(Console.ReadLine());

Console.Write("Результы работы программы: сумма,вычитание, умножение ");

//input

Vector v1 = new Vector(xx11 - xx1, yy11 - yy1);

Vector v2 = new Vector(xx22 - xx2, yy22 - yy2);

Vector v3 = v1 + v2;

Vector v4 = v1 - v2;

double m = v1 * v2;

double c = Vector.Cos(v1, v2);

double len1 = v1.Length();

double len2 = v2.Length();

int test = 0;

//exeption

try

{

len1 = v1.Length();

len2 = v2.Length();

 

if (len1 == 0 || len2 == 0)

{

throw new Exception("Вектор не может быть нулевым");

 

}

}

catch (Exception e)

{

Console.WriteLine("\nОшибка: " + e.Message);

test = 1;

}

 

//output

if (test!= 1)

{

Console.WriteLine();

Console.WriteLine("Вектор a: " + v1);

Console.WriteLine("Вектор б: " + v2);

Console.WriteLine("Вектор а+б: " + v3);

Console.WriteLine("Вектор а-б: " + v4);

Console.WriteLine("Вектор а*б: " + m);

Console.WriteLine("Косинус угла между векторами a и б: {0:0.000}", c);

Console.WriteLine("Длина вектора 1: {0:0.000}", len1);

Console.WriteLine("Длина вектора 2: {0:0.000} ", len2);

if (len1 > len2) { Console.Write("|a| > |б| "); } else { if (len1 < len2) { Console.Write("|б| > |а|"); } else { Console.Write("|б| = |а|"); } };

}

Console.ReadKey();

 

}

}

}

 

 

№ 11.

1)

Типы в Java распределены на две категории: простые (примитивные) и [ссылочные (объектные)]. Простыми являются тип boolean и все числовые типы. Числовые типы распределяются на две категории целочисленные byte, short, int, long, char и числа с плавоющей точкой float и double.

int — основной целочисленный тип, используется в Java по умолчанию. Это значит что если вы пишете целое число оно будет рассматриваться компилятором как число типа int. Тип int наиболее удобен для компьютера из-за особенности конструкции вычислительных процессоров поэтому и используется по умолчанию. Используется в качестве счётчика циклов, индексов массивов и индексов символов в строках

long — целочисленный тип содержащий, можно сказать, бесконечное количество значений. Используется в случаях, где числа превосходят 2 миллиарда и стандартного int уже не хватает. Используется в повседневной жизни для создания уникальных значений.

byte — используется для передачи данных по сети, записи и чтения из файла. В математических операциях, как правило, не используется.

short — самый редко используемый тип в Java, может использоваться только в целях экономии памяти.

double — это числа с двойной точностью, максимально приближённые к заданным или полученным в результате вычислений значениям. Используется в Java для любых математических вычислений (квадратный корень, синус, косинус,..).

float — менее точный тип с плавающей точкой. Используется очень редко с целью экономии памяти

char — используется для представления символов. Символы преобразуются по таблице кодировки UTF-16. По большому счёту это все буквы, числа и специальные символы существующие на нашей планете. Каждому символу соответствует определённое число из таблицы и Java при виде этого числа в рамках типа char выводит его на экран как символ.

Операции


Над целочисленными типами

· операторы сравнения (>, <, >=, <=) и равенства (==, !=)

· унарные операторы (+, -)

· мультипликативные (*, /, %) и аддитивные (+, -) операторы

· инкремент (++) и декремент (--) в префиксной и постфиксной формах

· знаковые (>>, <<) и без знаковые (>>>) операторы сдвига

· побитовые операторы (~, &, ^, |)

· условный оператор (?:)

· оператор приведения типов

 

2)

Абстрактным называется класс, на основе которого не могут создаваться объекты. При этом наследники класса могут быть не абстрактными, на их основе объекты создавать, соответственно, можно. Для того, чтобы превратить класс в абстрактный перед его именем надо указать модификатор abstract.

Абстрактный метод — метод, который не имеет реализации. Если в классе есть хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным.

Использование абстрактных классов и методов позволяет описать некую абстракцию, которая должна быть реализована в других классах. Например, мы можем создать абстрактный класс Fighter и объявить в нём абстрактный метод fight(). Т.к. стилей борьбы может быть много, то, например, для JudoFighter extends Fighter метод fight() будет описывать приемы в стиле дзюдо и т.д.

Модификатор static говорит о том, что метод или поле класса принадлежат не объекту, а классу. Т.е. доступ можно будет получить и не создавая объекта класса. Поля помеченные static инициализируются при инициализации класса. К примеру, Class.forName(«MyClass», true, currentClassLoader), где второй параметр указывает на необходимость проведение инициализации.

На методы, объявленные как static, накладывается ряд ограничений.

Они могут вызывать только другие статические методы.

Они должны осуществлять доступ только к статическим переменным.

Они не могут ссылаться на члены типа this или super

finalize() - метод, который помогает при сборке мусора. Метод, который вызывается перед тем, как объект будет уничтожен сборщиком мусора.Не должен быть использован для освобождения ресурсов вне оперативной памяти, потому что Java имеет лимитированное количество этих ресурсов.

Для метода. Метод помеченный при помощи final не может быть переопределен в классах. Значение локальных переменных, а так же параметров метода помеченных при помощи слова final не могут быть изменены после присвоения.

3) package MyPack;

 

import static java.lang.Math.*;

 

/**

*

* @author yoghurt

* @param Kat_a катет прямоугольного треугольника

* @param Kat_b катет прямоугольного треугольника

* @param Gip_c гипотенуза прямоугольного треугольника

*

*/

 

abstract class Treangle {

 

private double Kat_a;

private double Kat_b;

private double Gip_c;

 

//конструктор без параметров

public Treangle() {

this. Kat_a = this. Kat_b = this. Gip_c = 1;

}

 

//конструктор с параметрами

public Treangle(double Kat_a, double Kat_b, double Gip_c) {

this. Kat_a = Kat_a;

this. Kat_b = Kat_b;

this. Gip_c = Gip_c;

}

 

//конструктор копирования

public Treangle(Treangle other) {

this. Kat_a = other.Kat_a;

this. Kat_b = other.Kat_b;

this. Gip_c = other.Gip_c;

}

 

//сеттер катета Kat_a

public void setKat_a(double Kat_a) {

this. Kat_a = Kat_a;

}

 

// геттер катета Kat_a

public double getKat_a() {

return this. Kat_a;

}

 

//сеттер гипотенузы Gip_c

public void setGip_c(double Gip_c) {

this. Gip_c = Gip_c;

}

 

// геттер гипотенузы Gip_c

public double getGip_c() {

return this. Gip_c;

}

 

//сеттер катета Kat_b

public void setKat_b(double Kat_b) {

this. Kat_b = Kat_b;

}

 

// геттер катета Kat_b

public double getKat_b() {

return this. Kat_b;

}

 

abstract public double area();

 

abstract public double perimeter();

 

abstract public String show();

}

 

/**

*

* @author yoghurt

* класс расширяющий класс абстрактный класс треугольник

* данный класс представляет частный случай - прямоугольный треугольник

*

*/

 

class PTreangle extends Treangle {

 

//конструктор без параметров

public PTreangle() {

super ();

}

 

//конструктор с параметрами

public PTreangle(double Kat_a, double Kat_b, double Gip_c) {

super (Kat_a, Kat_b, Gip_c);

}

 

//конструктор копирования

public PTreangle(PTreangle other) {

super (other);

}

 

//логический метод для определения существования треугольника

//основанный на теореме Пифагора

public boolean is_a_triangle() {

if (sqrt((pow(super. getKat_a(), 2) + pow(super. getKat_b(), 2))) == super. getGip_c())

return true;

Else

return false;

}

 

@ Override // Аннотация говорящая о том, что этот метод переопределен

//метод расчета периметра треугольника

public double perimeter() {

return super. getKat_a() + super. getKat_b() + super. getGip_c();

}

 

@ Override // Аннотация говорящая о том, что этот метод переопределен

//метод для вывода сторон трегольника

public String show() {

return "Kat_a: " + getKat_a() +

" \n Kat_b: " + super. getKat_b() +

" \n Gip_c: " + super. getGip_c() + " \n ";

}

 

@ Override // Аннотация говорящая о том, что этот метод переопределен

//метод для получения площади треугольника

public double area() {

return 0.5 * super. getKat_a() * super. getKat_b();

}

}

 

/**

*

* @author yoghurt

* класс тестер для проверки корректности работы

* класса треугольник

*/

 

public class Test {

 

//статический метод для вывода данных о треугольнике

public static void show_test(PTreangle tr) {

 

System. out.println("Треугольник: \n " + tr.show());

System. out.println("Может ли существовать такой треугольник: " + tr.is_a_triangle());

System. out.println("Площадь треугольника: " + tr.area());

System. out.println("Периметр треугольника: " + tr.perimeter());

System. out.println();

}

 

public static void main(String [] args) {

 

PTreangle tr_1 = new PTreangle(3, 4, 5);

PTreangle tr_2 = new PTreangle(8, 10, 12);

PTreangle tr_3 = new PTreangle(tr_1);

PTreangle tr_4 = new PTreangle();

PTreangle tr_5 = tr_2;

 

show_test(tr_1);

show_test(tr_2);

show_test(tr_3);

show_test(tr_4);

show_test(tr_5);

 

}

 

}

 

 

№ 12.

1)

В спецификации примитивный тип char принадлежит к целочисленным типам (или integral types), но поскольку он играет немного другую роль, можно выделить для него собственную категорию. Его роль — представлять символы Unicode. Для хранения символов требуется 16 бит. Странно, ведь для представления символов основных языков (например, английского, французского, испанского) достаточно 8 бит. Но такая цена интернационализации. Unicode использует полный набор международных символов на всех известных языках мира.

2)

Пакет (package) — это некий контейнер, который используется для того, чтобы изолировать имена классов. Например, вы можете создать класс List, заключить его в пакет и не думать после этого о возможных конфликтах, которые могли бы возникнуть, если бы кто-нибудь еще создал класс с именем List. Пакеты — это механизм, который служит как для работы с пространством имен, так и для ограничения видимости.

Пространство имён — некоторое множество, под которым подразумевается модель, абстрактное хранилище или окружение, созданное для логической группировки уникальных идентификаторов (то есть имён). Идентификатор, определенный в пространстве имён, ассоциируется с этим пространством. Один и тот же идентификатор может быть независимо определён в нескольких пространствах. Таким образом, значение, связанное с идентификатором, определённым в одном пространстве имён, может иметь (или не иметь) такое же значение, как и такой же идентификатор, определённый в другом пространстве.

После оператора package, но до любого определения классов в исходном Java-файле, может присутствовать список операторов import. Пакеты являются хорошим механизмом для отделения классов друг от друга, поэтому все встроенные в Java классы хранятся в пакетах. Общая форма оператора import такова:

import пакет1 [.пакет2].(имякласса|*);

Здесь пакет1 — имя пакета верхнего уровня, пакет2 — это необязательное имя пакета, вложенного в первый пакет и отделенного точкой. После указания пути в иерархии пакетов указывается либо имя класса, либо метасимвол «звездочка». Звездочка означает, что, если Java-транслятору потребуется какой-либо класс, для которого пакет не указан явно, он должен просмотреть все содержимое пакета со звездочкой вместо имени класса.

В языке Java имеется три уровня доступа, определяемых ключевыми словами: private (закрытый), public (открытый) и protected (защищенный), которые употребляются в различных комбинациях. Содержимое ячеек таблицы определяет доступность переменной с данной комбинацией модификаторов (столбец) из указанного места (строка).

Есть несколько правил, которые помогут вам разобраться. Элемент, объявленный public, доступен из любого места. Все, что объявлено private, доступно только внутри класса и нигде больше. Если у элемента вообще не указан модификатор уровня доступа, то такой элемент будет виден из подклассов и классов того же пакета.

3)

 

№ 13.

1)

С логическими операторами все просто. Существует только два логических литерала:

boolean yes = true; // истина

boolean no = false; // ложь

Логические литералы можно присваивать только переменным типа boolean. Также важно понимать, что false не равен 0, а true не равен 1. Преобразовать переменную типа boolean в другие примитивные типы не выйдет.

Операции

Над логическим типом

· операторы равенства (== и !=)

· логические операторы (!, &, |, ^)

· условные логические операторы (&&, ||)

· условный оператор (?:)

 

2)

Интерфейс — это явно указанная спецификация набора методов, которые должны быть представлены в классе, который реализует эту спецификацию. Реализация же этих методов в интерфейсе отсутствует. Подобно абстрактным классам интерфейсы обладают замечательным дополнительным свойством — их можно многократно наследовать. Конкретный класс может быть наследником лишь одного суперкласса, но зато в нем может быть реализовано неограниченное число интерфейсов

Оператор implements — это дополнение к определению класса, реали­зующего некоторый интерфейс(ы).

class имя_класса [extends суперкласс]

[implements интерфейс0 [, интерфейс1...]] { тело класса }

 

Если в классе реализуется несколько интерфейсов, то их имена раз­деляются запятыми.

 

 

3)

 

№ 14.

1)

Когда мы производим какие-то действия с переменными, то нужно следить за типами. Нельзя умножать котов на футбольные мячи, это противоречит здравому смыслу. Также и с переменными. Если вы присваиваете переменной одного типа значение другого типа, то вспоминайте теорию. Например, вы без проблем можете присвоить значение типа int переменной типа long, так как все числа из диапазона типа int гарантировано помещаются в диапазон чисел long. В этом случае Java выполнит преобразование автоматически, вы даже ничего не заметите.

Представим обратную картину - мы хотим присвоить переменной типа byte значение типа double. Java не сможет автоматически выполнить ваше желание. Не все числа типа double могут стать числом типа byte. Но часть чисел может, например, число 9. В таком случае используется так называемое приведение типов, чтобы подсказать Java о допустимости операции.

Итак, автоматическое преобразование типов осуществляется, если оба типа совместимы и длина целевого типа больше длины исходного типа. В этом случае происходит преобразование с расширением. Вы всегда можете преобразовать любое число типа byte в число типа int. Такая операция произойдёт без вашего участия автоматически.

Таблица выглядит следующим образом.

Сплошные линии обозначают преобразования, выполняемые без потери данных. Штриховые линии говорят о том, что при преобразовании может произойти потеря точности. Типы целых чисел и чисел с плавающей точкой совместимы частично. Например, число 5 вполне может быть числом с плавающей точкой (5.0).

Совсем не совместимы, например, char и boolean.

 

Пора обобщить и запомнить несколько правил:

Типы всех значений byte, short, char повышаются до типа int, как это было рассмотрено выше.

Если один операнд имеет тип long, то тип всего выражения повышается до long.

Если один операнд имеет тип float, то тип всего выражения повышается до float.

Если один операнд имеет тип double, то тип всего выражения повышается до double.

2)

Исключениями или исключительными ситуациями (состояниями) называются ошибки, возникшие в программе во время её работы. Все исключения в Java являются объектами. Поэтому они могут порождаться не только автоматически при возникновении исключительной ситуации, но и создаваться самим разработчиком.

В Java все исключения делятся на три типа: контролируемые исключения (checked) и неконтролируемые исключения (unchecked), к которым относятся ошибки (Errors) и исключения времени выполнения (RuntimeExceptions, потомок класса Exception).

Контролируемые исключения представляют собой ошибки, которые можно и нужно обрабатывать в программе, к этому типу относятся все потомки класса Exception (но не RuntimeException).

Обработка исключения может быть произведена с помощью операторов try…catch, либо передана внешней части программы. Например, метод может передавать возникшие в нём исключения выше по иерархии вызовов, сам его не обрабатывая.

Неконтролируемые исключения не требуют обязательной обработки, однако, при желании, можно обрабатывать исключения класса RuntimeException.

Для защиты программного кода от исключений необходимо использовать связанные блоки с ключевыми словами try catch; catch помещается сразу же после try-блока. В блоке catch задается тип исключения, которое необходимо обработать. Целью большинства хорошо сконструированных catch-разделов должна быть обработка возникшей исключительной ситуации и приведение переменных программы в некоторое разумное состояние - такое, чтобы программу можно было продолжить так, будто никакой ошибки и не было

Программа может явно вызывать исключение, используя оператор throw. После выполнения оператора throw процесс выполнения программы приостанавливается и последующие операторы не выполняются. JVM просматривает ближайший блоки try... catch, соответствующий типу исключения, для "передачи управления". Если подходящий блок не будет найден, то обработчик исключений остановит программу и "распечатает" при этом состояние стека вызовов.

В случае, когда необходимо гарантировано выполнить определенный участок кода необходимо использовать ключевое слово finally. Использование связи try...finally позволяет обеспечить выполнение кода независимо от того, какие исключения были возбуждены и перехвачены, даже в тех случаях, когда в методе нет соответствующего возбужденному исключению раздела catch.

У каждого раздела try должен быть по крайней мере или один раздел catch или блок finally. Блок finally очень удобен для закрытия файлов и освобождения любых других ресурсов, захваченных для временного использования в начале выполнения метода.

3) public class Ab {

 

double a;

double b;

 

Ab() {

}

 

Ab(double a, double b) {

this. a = a;

this. b = b;

}

 

boolean isSquare() {

return a == b? true: false;

}

 

double getPerimeter() {

return 2 * a + b * 2;

}

 

double getArea() {

return a * b;

}

 

public static void main(String [] args) {

Ab p = new Ab(3, 4);

if (p.isSquare()) {

System. out.print("Kvadrat \n ");

} else {

System. out.print("Ne kvadrat \n ");

}

System. out.println("P = " + p.getPerimeter());

System. out.println("S = " + p.getArea());

}

}

 

 

№ 15.

1)

Массив (англ. Array) это объект, хранящий в себе фиксированное количество значений одного типа. Другими словами, массив — это нумерованный набор переменных. Переменная в массиве называется элементом массива, а ее позиция в массиве задается индексом. Например, нам нужно хранить 50 различных имен, согласитесь, неудобно для каждого имени создавать отдельную переменную, поэтому мы будем использовать массив. Нумерация элементов массива начинается с 0, а длинна массива устанавливается в момент его создания и фиксируется.

При создании массива в Java первым делом его нужно объявить. Это можно сделать следующим образом:

int[] myFirstArray;

Тип массива задается следующим образом type[], где type это тип данных содержащихся в нем элементов. Скобки являются специальным обозначением того, что переменные содержатся в массиве. Имя массива может быль любым, однако, оно должно соответствовать правилам именования переменных.

Массивы можно создавать не только из переменных базовых типов, но и из произвольных объектов.

При объявлении массива в языке Java не указывается его размер и не резервируется память для него. Происходит лишь создание ссылки на массив.

Размер массива не всегда очевиден, поэтому для того, чтобы его узнать следует использовать свойство length, которое возвращает длину массива.

myColor.length;

Данный код поможет нам узнать, что длина массива myColor равна 3.

 

2)

Библиотека классов языка включает в себя набор вспомогательных классов, широко используемых в других встроенных пакетах Java. Эти классы расположены в пакетах java.lang и java.util. Они используются для работы с наборов объектов, взаимодействия с системными функциями низкого уровня, для работы с математическими функциями, генерации случайных чисел и манипуляций с датами и временем.

Как вы уже знаете, Java использует встроенные примитивные типы данных, например, int и char ради обеспечения высокой производительности. Эти типы данных не принадлежат к классовой иерархии Java. Они передаются методам по значению, передать их по ссылке невозможно. По этой причине для каждого примитивного типа в Java реализован специальный класс.

Абстрактный класс Number представляет собой интерфейс для работы со всеми стандартными скалярными типами: — long, int, float и double.

У этого класса есть методы доступа к содержимому объекта, которые возвращают (возможно округленное) значение объекта в виде значения каждого из примитивных типов:

• doubleValue() возвращает содержимое объекта в виде значения типа double.

• floatValue() возвращает значение типа float.

• intValue() возвращает значение типа int.

• longValue() возвращает значение типа long.

Double и Float

Double и Float — подклассы класса Number. В дополнение к четырем методам доступа, объявленным в суперклассе, эти классы содержат несколько сервисных функций, которые облегчают работу со значениями double и float. У каждого из классов есть конструкторы, позволяющие инициализировать объекты значениями типов double и float, кроме того, для удобства пользователя, эти объекты можно инициализировать и объектом String, содержащим текстовое представление вещественного числа.

Character

Character — простой класс-оболочка типа char. У него есть несколько полезных статических методов, с помощью которых можно выполнять над символом различные проверки и преобразования.

  • isLowerCase(char ch) возвращает true, если символ-параметр принадлежит нижнему регистру (имеется в виду не просто диапазон a-z, но и символы нижнего регистра в кодировках, отличных отISO-Latin-1).
  • isUpperCase(char ch) делает то же самое в случае символов верхнего регистра.
  • isDigit(char ch) и isSpace(char ch) возвращают true для цифр и пробелов, соответственно.
  • toLowerCase(char ch) и toupperCase(char ch) выполняют преобразования символов из верхнего в нижний регистр и обратно.

Boolean

Класс Boolean — это очень тонкая оболочка вокруг логических значений, она бывает полезна лишь в тех случаях, когда тип boolean требуется передавать по ссылке, а не по значению.

 

3)



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: