Курс по Java/Android
Занятие 6
Александр Русин
e-mail: alexander.rusin@simbirsoft.com
Android Developer
Mаth

Во-первых, идеальное представление вещественных чисел
является бесконечным, в то время как представление в
Java ограничено числом бит.

Во вторых использовании двоичного, а не десятичного
представления чисел

Дроби как, например, 1/5 и 7/50, которые точно
представимы в десятичной нотации (0.2 и 0.14
соответственно) оказываются периодическими в
двоичном коде. Эта проблема аналогична трудностям в
представлении периодических дробей, например 1/3 в
десятичном коде (0.3333333...).
Логарифмы по основанию 10
Значением логарифма является число, в степень
которого должно быть возведено основание, чтобы
получить заданный результат.
public class Logarithms {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
System.out.println(i + "t" +
Math.log10(i) + "t" + Math.log(i)+ "t" +
lg(i));
}
}
public static double lg(double x) {
return Math.log(x) / Math.log(2.0);
}
}
Кубические корни
public class CubeRoots {
public static void main(String[] args) {
for (int i = -5; i <= 5; i++) {
System.out.println(Math.cbrt(i));
}
}
}
Список функций

public static int abs(int a)

public static long abs(long a)

public static int max(int a, int b)

public static long max(long a, long b)

public static int min(int a, int b)

public static long min(long a, long b)

Список всех функций можно найти

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html
Логирование

Зачем нужно логирование?

Log4j

Наиболее известная библиотека для
логирования сообщений. Она позволяет
написать в java коде вызовы библиотеки и далее
гибко настраивать, не изменяя уже написанный
код.
Пример
import org.apache.log4j.Logger;
public class LogApp {
/**
* Hello world!
*/
public final static Logger LOG =
Logger.getLogger(LogApp.class);
public static void main(String[] args) {
LOG.info("Hello World!");
}
}
Логеры

Экземпляры класса org.apache.log4j.Logger, вызывая
методы которых в подсистему log4j посылается сообщение
для логгинга.

Приоритет

FATAL - произошла фатальная ошибка - у этого
сообщения наивысший приоритет

ERROR - в программе произошла ошибка

WARN - предупреждение в программе что-то не так

INFO - информация. К сведению трудящися.

DEBUG - детальная информация для отладки

TRACE - наиболее полная информация. трассировка
выполнения программы. Наиболее низкий приоритет.
Аппендеры

Объект который определяет что нужно
делать с логируемыми сообщениями.

Описываются в файле настроек
(log4j.xml)чтобы вывод логов в процессе
эксплуатации приложения можно было легко
менять.
Стандартные аппендеры.

org.apache.log4j.ConsoleAppender - наиболее часто
используемый во время разработки аппендер. Выводит
сообщения на консоль.

org.apache.log4j.FileAppender - просто записывает
логируемые сообщения в файл.

org.apache.log4j.DailyRollingFileAppender - тоже записывает
сообщения в файл но каждый день создаёт новый файл с
таким же именем.

org.apache.log4j.net.SMTPAppender - посылает сообщения
по электронной почте.
Util

Классы даты и времени

java.util.Calendar,

java.util.Date,

java.util.TimeZone.
Calendar

Абстрактный класс для работы с датами и
временем. Содержит большое количество
констант для дней недели и месяцев.

protected Calendar()

public static Calendar getInstance()

public static Calendar getInstance(TimeZone zone)

Создает экземпляр, настроенный на
текущий часовой пояс и локализацию дат.
Calendar

public final Date getTime()

public final void setTime(Date date)

protected long getTimeInMillis()

protected void setTimeInMillis(long millis)

Чтение и установка времени.

public final int get(int field)

public final void set(int field, int value)

Чтение и установка конкретного поля даты.

public void setTimeZone(TimeZone value)

Установка заданного часового пояса.
Date

Класс, представляющий дату и время.

public Date()

public Date(long date)

Устанавливает текущее значение времени
или заданное в миллисекундах от полночи 1
января 1970 года.

public long getTime()

public void setTime(long time)

Чтение и установка значений времени.
Random

Генератор псевдослучайных последовательностей.

public Random()

public Random(long seed)

Два экземпляра этого класса, инициализированные
одинаковыми значениями возвратят одинаковые
последовательности. По умолчанию
инициализируется текущим временем в
миллисекундах.

public void setSeed(long seed)

Инициализировать последовательность.
Random

protected int next(int bits)

Следующее псевдослучайное число.
Задается число младших бит, значение
которых будет вычислено.

public int nextInt()

Аналог next(32).

public long nextLong()

Возвращает псевдослучайное значение типа
long, составленное из двух 32-разрядных
значений.
Домашнее задние
Реализовать приложение, которое
выполняет 10 операций из стандартного
калькулятора.
Литература

http://docs.oracle.com/javase/1.5.0/docs/api/

http://www.log4j.ru/
Спасибо за внимание!

Lec 15

  • 1.
    Курс по Java/Android Занятие6 Александр Русин e-mail: alexander.rusin@simbirsoft.com Android Developer
  • 2.
    Mаth  Во-первых, идеальное представлениевещественных чисел является бесконечным, в то время как представление в Java ограничено числом бит.  Во вторых использовании двоичного, а не десятичного представления чисел  Дроби как, например, 1/5 и 7/50, которые точно представимы в десятичной нотации (0.2 и 0.14 соответственно) оказываются периодическими в двоичном коде. Эта проблема аналогична трудностям в представлении периодических дробей, например 1/3 в десятичном коде (0.3333333...).
  • 3.
    Логарифмы по основанию10 Значением логарифма является число, в степень которого должно быть возведено основание, чтобы получить заданный результат. public class Logarithms { public static void main(String[] args) { for (int i = 1; i <= 100; i++) { System.out.println(i + "t" + Math.log10(i) + "t" + Math.log(i)+ "t" + lg(i)); } } public static double lg(double x) { return Math.log(x) / Math.log(2.0); } }
  • 4.
    Кубические корни public classCubeRoots { public static void main(String[] args) { for (int i = -5; i <= 5; i++) { System.out.println(Math.cbrt(i)); } } }
  • 5.
    Список функций  public staticint abs(int a)  public static long abs(long a)  public static int max(int a, int b)  public static long max(long a, long b)  public static int min(int a, int b)  public static long min(long a, long b)  Список всех функций можно найти  http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html
  • 6.
    Логирование  Зачем нужно логирование?  Log4j  Наиболееизвестная библиотека для логирования сообщений. Она позволяет написать в java коде вызовы библиотеки и далее гибко настраивать, не изменяя уже написанный код.
  • 7.
    Пример import org.apache.log4j.Logger; public classLogApp { /** * Hello world! */ public final static Logger LOG = Logger.getLogger(LogApp.class); public static void main(String[] args) { LOG.info("Hello World!"); } }
  • 8.
    Логеры  Экземпляры класса org.apache.log4j.Logger,вызывая методы которых в подсистему log4j посылается сообщение для логгинга.  Приоритет  FATAL - произошла фатальная ошибка - у этого сообщения наивысший приоритет  ERROR - в программе произошла ошибка  WARN - предупреждение в программе что-то не так  INFO - информация. К сведению трудящися.  DEBUG - детальная информация для отладки  TRACE - наиболее полная информация. трассировка выполнения программы. Наиболее низкий приоритет.
  • 9.
    Аппендеры  Объект который определяетчто нужно делать с логируемыми сообщениями.  Описываются в файле настроек (log4j.xml)чтобы вывод логов в процессе эксплуатации приложения можно было легко менять.
  • 10.
    Стандартные аппендеры.  org.apache.log4j.ConsoleAppender -наиболее часто используемый во время разработки аппендер. Выводит сообщения на консоль.  org.apache.log4j.FileAppender - просто записывает логируемые сообщения в файл.  org.apache.log4j.DailyRollingFileAppender - тоже записывает сообщения в файл но каждый день создаёт новый файл с таким же именем.  org.apache.log4j.net.SMTPAppender - посылает сообщения по электронной почте.
  • 11.
    Util  Классы даты ивремени  java.util.Calendar,  java.util.Date,  java.util.TimeZone.
  • 12.
    Calendar  Абстрактный класс дляработы с датами и временем. Содержит большое количество констант для дней недели и месяцев.  protected Calendar()  public static Calendar getInstance()  public static Calendar getInstance(TimeZone zone)  Создает экземпляр, настроенный на текущий часовой пояс и локализацию дат.
  • 13.
    Calendar  public final DategetTime()  public final void setTime(Date date)  protected long getTimeInMillis()  protected void setTimeInMillis(long millis)  Чтение и установка времени.  public final int get(int field)  public final void set(int field, int value)  Чтение и установка конкретного поля даты.  public void setTimeZone(TimeZone value)  Установка заданного часового пояса.
  • 14.
    Date  Класс, представляющий датуи время.  public Date()  public Date(long date)  Устанавливает текущее значение времени или заданное в миллисекундах от полночи 1 января 1970 года.  public long getTime()  public void setTime(long time)  Чтение и установка значений времени.
  • 15.
    Random  Генератор псевдослучайных последовательностей.  publicRandom()  public Random(long seed)  Два экземпляра этого класса, инициализированные одинаковыми значениями возвратят одинаковые последовательности. По умолчанию инициализируется текущим временем в миллисекундах.  public void setSeed(long seed)  Инициализировать последовательность.
  • 16.
    Random  protected int next(intbits)  Следующее псевдослучайное число. Задается число младших бит, значение которых будет вычислено.  public int nextInt()  Аналог next(32).  public long nextLong()  Возвращает псевдослучайное значение типа long, составленное из двух 32-разрядных значений.
  • 17.
    Домашнее задние Реализовать приложение,которое выполняет 10 операций из стандартного калькулятора.
  • 18.
  • 19.