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

Java Primitive Data Types

Data Type Purpose Contents Default Value*
boolean Truth value true or false fales
char Character Unicode characters \u0000
byte Signed integer 8 bit two’s complement (byte) 0
short Signed integer 16 bit two’s complement (short) 0
int Signed integer 32 bit two’s complement 0
long Signed integer 64 bit two’s complement 0L
float Real number 32 bit IEEE 754 floating point 0.0f
double Real number 64 bit IEEE 754 floating point 0.0d

Один из способов помню Java примитивных типов данных с помощью этой мнемонический помощь:: С areful, В ушах S houldn't я ngest L Arge F Urry D ОГС.

Экземпляр переменным присваиваются значения по умолчанию; локальные переменные не могут быть присвоены значения по умолчанию.

Список объектов Java являются переменными, которые держат ссылки на объекты. В отличие от Java примитивных типов данных, которые хранят фактические данные, ссылки на объекты хранить только ссылки на фактические данные объекта.

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

"Наконец" создает блок кода, который будет выполнен после Try / Catch блока завершена и перед кодом после Try / Catch блока. И наконец блок будет выполнять или не генерируется исключение.

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


public class FinallyDemo {



  static void procA(){



    try{

      System.out.println("inside procA");

      throw new RuntimeException("demo");

      

    }finally{

      System.out.println("procA's finally");

    }

  }



  //Return from with in a try block.

  static void procB(){



    try{

      System.out.println("inside procB");

      return;

    }

    finally{

      System.out.println("procB's finally");

    }

  }



  //Execute a try block normally.

  static void procC(){



    try{

      System.out.println("inside procC");

    }

    finally{

      System.out.println("procC's finally");

    }  

  }



  public static void main(String[] args) {



    try{

      procA();

    }catch(Exception e){

      System.out.println("Exception caught");

      

    }



    procB();

    procC();



  }



}

Вывод на экран:

inside procA
procA's finally
Exception caught
inside procB
procB's finally
inside procC
procC's final

НЕТ! Удивительно большое число людей, в том числе многие веб-дизайнеры, не понимают разницы между Java и JavaScript. Вкратце его можно сформулировать следующим образом:

Java была разработана Sun Microsystems. Java является полноценным объектно-ориентированный язык программирования. Она может быть использована для создания автономных приложений и апплетов. Апплеты загружаются в виде отдельных файлов на вашем браузере ряд документов HTML, а также предоставить бесконечное множество дополнительных возможностей для веб-сайта вы посетили. Результаты отображаются апплетов может оказаться встроенных в страницу HTML (например, прокрутка сообщения баннер, которая так часто встречается на Java расширение участков), но код Java прибыли в виде отдельного файла.

JavaScript с другой стороны, был разработан Netscape, является меньшим и более простой язык сценариев, который не создает апплет или автономные приложения. В своей наиболее распространенной форме Сегодня, JavaScript находится внутри документы HTML, и может обеспечить уровень интерактивности далеко за рамки обычно плоские страницы HTML — без необходимости в серверных CGI (Common Gateway Interface) программами.

Некоторые серверного программного обеспечения, такими как SuiteSpot Netscape, позволяющая разработчикам веб-приложений написать CGI программ в серверной версии JavaScript. Оба клиентского и серверного JavaScript одни и те же основные языке JavaScript, но каждая сторона сделки с различными объектами. Клиентские объекты преимущественно компоненты веб-страницы HTML (например, формы, надписи, кнопки). На стороне сервера это те объекты, которые облегчают обработку заявок, которые приходят от клиентов, а также подключение к базам данных.

Когда объект копируется на другой с помощью оператора присваивания, копируются только ссылки объекта. Такое изменение в одном объекте отражает в другой.

Java использовать Clone () класса объекта, чтобы скопировать содержание одного объекта к другому. Проблема прибудет если класс, который должен быть скопирован также содержит ссылку на другой объект.

Классы могут Cloneable реализующий интерфейс перекрывает Clone () метод класса объекта.

Следующий пример покажет, порядок осуществления Cloneable интерфейса.


public class CloneExp implements Cloneable {



  private String name;

  private String address;

  private int age;

  private Department depart;

  public CloneExp(){

    

  }

  public CloneExp(String aName, int aAge, Department aDepart) {



    this.name = aName;

    this.age = aAge;

    this.depart = aDepart;

  }



  protected Object clone() throws CloneNotSupportedException {



    CloneExp clone=(CloneExp)super.clone();



    // make the shallow copy of the object of type Department

    clone.depart=(Department)depart.clone();

    return clone;



  }

  public static void main(String[] args) {



    CloneExp ce=new CloneExp();



    try {

      // make deep copy of the object of type CloneExp

      CloneExp cloned=(CloneExp)ce.clone();

    catch (CloneNotSupportedException e) {

      e.printStackTrace();

    }

    

  }

Условная операция может быть выполнена с использованием либо короткое замыкание булевы операторы (

Но всегда лучше использовать короткие операторы схеме из-за быстрой обработки.

For example:
Operation 1: condition1 && condition2
Operation 2: condition1 & condition2

В operation1 первый компилятор будет проверять condition1 а если оно ложно то он не будет проверять condition2 и дать ложный результат.

В Operation2 компилятор будет проверить как условия, прежде чем давать результат.

Наследование что происходит, когда подкласс получает переменные или методы от суперкласса.

Java не поддерживает множественное наследование, кроме как в случае интерфейсов.

Класс Cat в следующем примере подкласса и класса животного является суперкласса. Cat получает едят () метод класса животного даже если мы не будем писать внутри класса.


public class Animal {



    public void eat() {

        System.out.println("Eat for Animal");

    }

}



public class Cat extends Animal {



    public void eat() {

        System.out.println("Eat for Cat");

    }

}

J2SE 5.0 введено много новых возможностей языка. Они включают поддержку для обобщения и улучшенный цикл. Предыдущий Tech Tips охватывает дженерики и улучшенный цикл. Другим важным нововведением в J2SE 5.0 аннотации. Этот совет изучает аннотации, которые встроены в J2SE 5.0.

Во-первых, что такое примечание? Определены как часть имени, аннотации предлагают способ связи метаданных с элементами программы (такие, как классы, интерфейсы и методы). Их можно рассматривать как дополнительный модификатор без изменения генерируемого байт-код для этих элементов.

Концепция внедрения метаданных в исходный код не является новой с J2SE 5.0. Вы можете добавить @ устаревшего тега Javadoc комментариев метода и компилятор воспринимает это как метаданные о методе. Эта способность была в месте с 1,0 освобождении J2SE. Исходная версия платформы уже устаревшими методами, GETENV () Метод системы (хотя это не было в спецификации языка программирования Java до 1,1 добавление). Концепция почти такое же, теперь, по крайней мере, @ частью синтаксиса. Только расположение изменилось — аннотации тэг в источнике, а не комментария. Основным моментом здесь является то, что аннотация систематический способ поддержки декларативной модели программирования.

Это приводит к первой аннотацией, которая поставляется с J2SE 5.0: @ рекомендуется. Обратите внимание на капитал D здесь. Функциональный, @ Запрещены Источник работает так же, как @ устаревшим Javadoc, связанный с классом или методом. По маркировки методами с @ Запрещены тега, вы предупреждений компилятора, чтобы предупредить пользователей при использовании метода или класса.

Следующие основные классе метод с именем deprecatedMethod (), который помечен @ Запрещены аннотации и, @ устаревшим комментарий:


   public class Main {

   

     /**

      @deprecated Out of date. Use System.foobar() instead.

     */ 



     @Deprecated

     public static void deprecatedMethod() {

       System.out.println("Don't call me");

     }

   }

Вы составить класс с аннотациями, так же, как вы делаете для одного без аннотации:

> javac Main.java

Как и ожидалось, это производит Main.class.

Если вы используете устаревшие методы, производит компиляцию времени предупреждение — так же, как использование устаревшей @ тег в Javadoc. Вот пример:


   public class User {

     public static void main(String args[]) {

       Main.deprecatedMethod();

     }

   }

Обобщение класс:

> javac User.java

и вы увидите следующее предупреждение об использовании устаревшего метода:

Note: User.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

Добавление-Xlint к составлению линия показывает, что конкретно является неправильным:

> javac -Xlint:deprecation User.java
User.java:3: warning: [deprecation] deprecatedMethod() in
Main has been deprecated
Main.deprecatedMethod();
^
1 warning

Переход от устаревшей @ комментарий к @ Запрещены аннотации не вносит ничего существенно нового в систему. Она лишь слегка изменяет способ делать то же самое. Две другие новые аннотации доступны на платформе J2SE 5.0, @ и @ Override SuppressWarnings, делать новые функциональные возможности платформы.

Аннотации @ Override может быть использован метод деклараций. Как следует из названия, вы используете @ Override аннотации к флагом метода, который должен переопределить метод суперкласса. Почему это? Чтобы найти ошибку раньше. Сколько раз вы хотели, чтобы переопределить метод, но либо ошибки название метода, указаны неправильные аргументы, или же другого типа взамен? Иными словами, как часто вы определили новый метод, когда то, что вы действительно хотели сделать, это переопределить существующую? С помощью @ Override, вы обнаружите проблемы в следующий класс скорее рано, чем поздно:


   public class Overrode {

     @Override

     public int hashcode() {

       return 0;

     }

     

     @Override

     public boolean equals(Object o) {

       return true;

     

   }

Проблема здесь в том, что имя метода должно быть HashCode, а не хэш. Предположим, что объявление метода похоронен в источник для гораздо большего класса. Без первого @ Override аннотации, сколько времени потребуется, чтобы вы знали, что Ваш хэш () метод (с верблюжьей случае для работы с орфографическими, не все в нижнем регистре) не вызывается, и вы получаете по умолчанию поведение родительского объекта класс? Благодаря аннотации @ Override, составление класс производит ошибка компиляции, предупреждая вас к этой проблеме:

> javac Overrode.java
Overrode.java:2: method does not override a method from its
superclass
@Override
^
1 error

Чем раньше вы можете обнаружить ошибки такого рода, стоимость коррекции становится значительно сокращены. Обратите внимание, что хэш () метод никогда не должен вернуться постоянно. Для более полного описания надлежащее использование хэш () и составляет (), см. пункт 8 в книгу Эффективное программирование на языке Java руководством Джошуа Блоха.

Окончательный трех новых аннотаций в J2SE 5.0, @ SuppressWarnings, является наиболее интересным. Она сообщает компилятору не предупредить вас о том, чего он обычно предупреждает Вас о. Предупреждение относятся к категории, так что вы должны сказать аннотации, какие типы предупреждений подавить. Javac компилятор определяет семь вариантов подавить: все, неодобрение, не остановить, проваливаемся, пути, последовательно и окончательно. (Спецификации языка определяет только два таких типа: неодобрение и бесконтрольно.)

Чтобы продемонстрировать, давайте посмотрим на пресечение проваливаемся вариант. Давайте начнем со следующего класса. Обратите внимание, что класс отсутствует перерыв заявлении за каждый случай переключатель заявление:


   public class Fall {

     public static void main(String args[]) {

       int i = args.length;

       switch (i) {

         case 0:  System.out.println("0");

         case 1:  System.out.println("1");

         case 2:  System.out.println("2");

         case 3:  System.out.println("3");

         default: System.out.println("Default");



       }

     }

   

Обобщение класс с Javac. Вы увидите, что оно просто создает файлы. Файле класса, и не проявляет никаких предупреждений:

javac Fall.java

Если вы хотите, чтобы компилятор предупредит вас о переключении заявлений, которые попадают через (то есть одно или несколько заявлений перерыва отсутствует), вам компилировать с-Xlint: проваливаемся вариант:

javac -Xlint:fallthrough Fall.java

Это дает следующее предупреждение:

Fall.java:6: warning: [fallthrough] possible fall-through
into case
case 1: System.out.println("1");
^
Fall.java:7: warning: [fallthrough] possible fall-through
into case
case 2: System.out.println("2");
^
Fall.java:8: warning: [fallthrough] possible fall-through
into case
case 3: System.out.println("3");
^
Fall.java:9: warning: [fallthrough] possible fall-through
into case
default : System.out.println("Default");
^
4 warnings

Но что если вы хотите игнорировать тот факт, что переключатель заявлении отсутствует перерыв заявлением в каждом конкретном случае? Вот где @ SuppressWarnings аннотацию вступает в игру. Если добавить следующие строки перед основными () Метод декларации:

@SuppressWarnings("fallthrough")

Компиляция класс-Xlint: проваливаемся вариант:

javac -Xlint:fallthrough Fall.java

создадим. классе файла и отображения никаких предупреждений.

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

Это действительно об этом встроенный в аннотации. Однако одна вещь дополнительные сведения, аннотации (с любым аргументам) обычно указаны на линии сами по себе.

Существует гораздо больше, что можно сделать, когда вы определите свой собственный аннотации, а не использовать те, которые уже определены в J2SE 5.0. Дополнительную информацию об определении аннотации см.

Copyright (C) 2004-2005 Sun Microsystems, Inc
Все права защищены.