Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2010

Введение, синтаксис

Что такое Java?

Java широко известна как современный объектно-ориентированный язык, легкий в изучении и позволяющий создавать программы, которые могут исполняться на любой платформе без каких-либо доработок. Платформа Java Многоплатформенность Java достигается за счет использования виртуальной машины JVM, которая является обычной программой, исполняемой операционной системой и предоставляющей Java-приложениям все необходимые возможности. Поскольку все параметры JVM специфицированы, то остается единственная задача - реализовать виртуальные машины на всех существующих и используемых платформах.

Исходный код любой программы на языке Java представляется обычными текстовыми файлами, которые могут быть созданы в любом текстовом редакторе или специализированном средстве разработки и имеют расширение .java. Эти файлы подаются на вход Java-компилятора, который транслирует их в специальный Java байт-код, который сохраняется в бинарных файлах с расширением .class. Java-приложение, состоящее из таких файлов, подается на вход виртуальной машине, которая начинает их исполнять, или интерпретировать, так как сама является программой. Java является строго типизированным языком. Это означает, что любая переменная и любое выражение имеют известный тип еще на момент компиляции. Такое строгое правило позволяет выявлять многие ошибки уже во время компиляции. Компилятор, найдя ошибку, указывает точное место (строку) и причину ее возникновения, что позволяет избежать лишних запусков программы. Поэтому четкое понимание модели типов данных в Java очень помогает в написании программ.

Типы данных

Все типы данных разделяются на две группы: простые и объектные (про них будем говорить на сл. занятии). Первую составляют 8 простых (примитивных) типов данных. Они подразделяются на три подгруппы:

Название типа

Длина (байты)

Область значений

byte

1

-128 .. 127

short

2

-32.768 .. 32.767

int

4

-2.147.483.648 .. 2.147.483.647

long

8

-9.223.372.036.854.775.808 .. 9.223.372.036.854.775.807 (примерно 1019)

float

4

3.40282347e+38f ; 1.40239846e-45f

double

8

1.79769313486231570e+308 ; 4.94065645841246544e-324

Иллюстрировать логику работы с типами данных проще всего на примере переменных.

Как мы создавали переменные в Python? При первом упоминании и присваивании:

   1 a=0

При создании переменных в Java необходимо указывать их тип:

   1 int a; int b=0;

!!! теперь нельзя a=”Вася”

Операции

целые типы(byte, short, int, long)

дробные типы (float, double)

булевский тип (boolean)

арифметические операции (+, -, *, /, %)

int a=1+2;

double d = 0.9 + 1; !!! будьте внимательны с делением double d=1/2; double d=(double)1/2;

-

инкремент и декремент: ++ и –

i++; --j;

-

-

операции сравнения ==, != (возвращают boolean)

int a; if (a==3){ ...} 

float f, e; if (f!=e){...} 

boolean b; if(b==true){...} 

операции сравнения <,>,<=,>= (возвращают boolean)

int a = 2, b = 3; boolean b = (a > b); 

float f, e; ... if(f>=e){...} 

-

логические операции (|, &&, ||)

-

-

int x = 1; int y = 2; boolean is_one = (x==1) ||(y==1);

Преобразование типов

При передаче значения от менее емкой переменной к более емкой преобразования типа значения происходит автоматически. Например:

   1 byte a = 3; int b = a; double c = b;  // Теперь в с находится число 3.0
   2 

Но для обратного перехода необходимо делать это вручную, указывая в скобках перед значением новый тип данных:

   1 double c = 3.0; int b = (int)c; byte a = (byte)b;

Также автоматическое преобразование значений происходит при вычислении выражений. Если, например, вычисляется сумма над значениями разных типов, то меньший по размеру тип преобразуется к большему:

   1 int a = 1; double b = 2.0; double c = a*b;

Массивы

Как мы объявляли массивы (на самом деле списки) в Python?

   1 int[] a;

При создании массива нужно указать его длину. int[] array=new int[5]; Обращение к элементу массива происходит по индексу. При обращении к элементу с несуществующим индексом программа выдаст ошибку!!! Пример: Найти сумму элементов массива

   1 int[] array = {1, 2, 3, 10}; int sum=0;
   2 for (int i = 0; i < array.length; i++){
   3      sum += array[i];
   4 }
   5 System.out.println("Sum=" + sum);

Методы

Метод – это обособленная часть программы, которой можно передавать некоторые данные на вход и получать некоторые данные, полученные в результате работы метода. Как это было в Python?

   1 def cube(x):
   2         return x*x*x

и где-то в основной программе вызов:

   1 c= cube(3)

В Java указывается тип значения, которое возвращает метод, а также перечисляются входные параметры и их типы:

   1 int cube(int num){
   2         return num*num*num;
   3 }

и где-то в основной программе вызов:

   1 int c =cube(2);

Вынесем пример с суммой массива в отдельный метод:

   1 int arraySum(int[] array){
   2 int sum=0;
   3 for (int i = 0; i < array.length; i++){
   4         sum += array[i];
   5 }
   6 return sum;

В основной программе:

   1 int[] a = {3, 4, 5};
   2 System.out.println(“Sum=” + sum(a));