Этот совет Java иллюстрирует метод копирования элементы одного массива в другой массив. Разработчики могут иногда требуется для передачи данных в исходном массиве на целевые массив для другого использования. Эта подсказка может быть helful для них.


    System.arraycopy(sourcearray, 0, targetarray, 0

            Math.min(sourcearray.length, targetarray.length));

Класс Java представляет собой группу методов Java и переменные.

Каждый код Java исходный файл может содержать один общественный класс. Название этого общественного класса должно совпадать с названием файла исходного кода Java. Если на общественный класс "HelloWorld", то имя файла будет "HelloWorld.java".

Класс Java образцов представлены в таблице:


public class HelloWorld {

 

  private String name;



  public HelloWorld(String name) {

    this.name = name;

  }



  public void sayHello() {

    System.out.println("Hello " + name);

  }



  public static void main(String[] args) {



    HelloWorld hw = new HelloWorld("Java Tips");

    hw.sayHello();



  }

}

Поскольку каждое приложение работает в его собственной виртуальной машины Java, нет очевидного способа обнаружить, если particuliar приложение уже запущено.

Socket техника

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

В этом примере простой сервер работает на той же машине, что применение такой машины называется "Localhost" используется порт 80, Вы можете настроить номер порта для вашей машины.


[JustOneServer.java]

        

import java.io.*;

import java.net.*;



public class JustOneServer extends Thread {

    // you may need to customize this for your machine

    public static final int PORT = 80 ;

    

    ServerSocket serverSocket = null;

    Socket clientSocket = null;

    

    public void run() {

        try {

            // Create the server socket

            serverSocket = new ServerSocket(port, 1);

            while (true) {

                // Wait for a connection

                clientSocket = serverSocket.accept();

                // System.out.println("*** Got a connection! ");

                clientSocket.close();

            }

        catch (IOException ioe) {

            System.out.println("Error in JustOneServer: " + ioe);

        }

    }

}





[JustOne.java]

        

import java.io.*;

import java.net.*;



public class JustOne {

    

    SimpleDummyServer sds = null;

    

    public static void main(String args[]){

        new JustOne().doit();

    }

    

    public void doit() {

        

        try {

            Socket clientSocket = new Socket("localhost", JustOneServer.PORT);

            System.out.println("*** Already running!");

            System.exit(1);

        catch (Exception e) {

            sds = new JustOneServer();

            sds.start();

        }

        

        while(true) {

            try 

            

                System.out.print(".")

                Thread.sleep(60)

            

            catch(Exception e) { 

                e.printStackTrace()

            }

        }

    }

}

Чтобы проверить это, откройте консоль 2.

В консоли 1, тип Java JustOne.

В консоли 2, тип JustOne и Java-приложение должно реагирования "уже работает!".

Техника File Lock

[JDK1.4] Вы можете использовать флаг файла с блокировки механизма. Идея заключается в создании и блокировку файлов на user.home папку с названием условия. Одновременное исполнение попытается заблокировать и тот же файл и не удалось. Специальные "Shutdown крючок" обеспечивается, чтобы разблокировать файл, если JVM выключается.


[JustOneLock.java]

        

import java.io.*;

import java.nio.channels.*;



public class JustOneLock {



    private String appName;

    private File file;

    private FileChannel channel;

    private FileLock lock;

    

    public JustOneLock(String appName) {

        this.appName = appName;

    }

    

    public boolean isAppActive() {

        try {

            file = new File(System.getProperty("user.home"), appName + ".tmp");

            channel = new RandomAccessFile(file, "rw").getChannel();

            

            try {

                lock = channel.tryLock();

            catch (OverlappingFileLockException e) {

                // already locked

                closeLock();

                return true;

            }

            

            if (lock == null) {

                closeLock();

                return true;

            }

            

            Runtime.getRuntime().addShutdownHook(new Thread() {

                // destroy the lock when the JVM is closing

                public void run() {

                    closeLock();

                    deleteFile();

                }

            });

            return false;

        catch (Exception e) {

            closeLock();

            return true;

        }

    }

    

    private void closeLock() {

        try lock.release();  catch (Exception e) {  }

        try channel.close()catch (Exception e) {  }

    }

    

    private void deleteFile() {

        try file.delete()catch (Exception e) { }

    }

}



[JustOneTest.java]

        

public class JustOneTest {

    

    public static void main(String[] args) {

        new JustOneTest().test();

    }

    

    void test() {

        JustOneLock ua = new JustOneLock("JustOneId");

        

        if (ua.isAppActive()) {

            System.out.println("Already active.");

            System.exit(1);

        else {

            System.out.println("NOT already active.");

            try {

                while(true) {

                    try 

                        System.out.print(".")

                        Thread.sleep(60)

                    catch(Exception e) { 

                        e.printStackTrace()

                    }

                }

            catch (Exception e) {  }

        }

    }

}

Этот совет Java иллюстрирует метод преобразования строки в число. Этот совет очень полезна для разработчиков, которые ждут номер в качестве входных, но и получить номер в строку формата. Разработчики могут использовать этот код для преобразования полученной строки в числовой формат.


    byte b = Byte.parseByte("123");

    short s = Short.parseShort("123");

    int i = Integer.parseInt("123");

    long l = Long.parseLong("123");

    float f = Float.parseFloat("123.4");

    double d = Double.parseDouble("123.4e10");

Java ME является Java 2 Micro Edition. Java ME предназначен для работы на КПК, мобильных телефонов, телевизионных приставок и интеллектуальных автомобилей.

Более подробную информацию о J2ME, вы можете посетить J2ME.

Каждая программа Java должен быть только один основной метод. Основным методом является первым методом, который Java Virtual Machine выполняет. Основным методом затем вызывает другие методы, как они необходимы.

Это хорошая практика программирования поддерживать очень малой основные методы и двигаться все возможные кода в другие методы.

Вот основные () метода из программы Java, которая выводит "Привет мир":


public static void main (String[] args) {

   // This Java program prints "Hello World!"

   System.out.println{"Hello World!");

}

Следующий фрагмент кода показывает, как получить доступ к классу вмещающих от внутреннего класса.


public class TestIt {

  public static void main(String a[]){

     new TestIt().doit();

  }

  public void doit() {

      new InnerClass().sayHello();

  }

  public void enclosingClassMethod(){

      System.out.println("Hello world!");

      }

   class InnerClass {

      public void sayHello() {

         TestIt.this.enclosingClassMethod();

         }

    }

}



or



public class TestIt {

  TestIt testItClass = this;

  public static void main(String a[]){

     new TestIt().doit();

  }

  public void doit() {

      new InnerClass().sayHello();

  }

  public void enclosingClassMethod(){

      System.out.println("Hello world!");

      }

   class InnerClass {

      public void sayHello() {

         testItClass.enclosingClassMethod();

         }

    }

}

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

  • Letter
  • Underscore
  • Dollar sign

После первого символа, Java Имена переменных могут содержать числа.

Java переменная имена не могут быть одним из Java зарезервированные слова:

  • assert
  • boolean
  • break
  • byte
  • case
  • catch
  • char
  • class
  • const
  • continue
  • default
  • do
  • double
  • else
  • extends
  • false
  • final
  • finally
  • float
  • for
  • goto
  • if
  • implements
  • import
  • instanceof
  • int
  • interface
  • long
  • native
  • new
  • null
  • package
  • private
  • protected
  • public
  • return
  • short
  • static
  • strictfp
  • super
  • switch
  • synchronized
  • this
  • throw
  • throws
  • transient
  • true
  • try
  • void
  • volatile
  • while

Строка неизменными в то время как StringBuffer и StringBuilder может изменить их значения.

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

Критерий выбора между строк, StringBuffer и StringBuilder

  1. If your text is not going to change use a string Class because a String object is immutable.
  2. If your text can change and will only be accessed from a single thread, use a StringBuilder because StringBuilder is unsynchronized.
  3. If your text can changes, and will be accessed from multiple threads, use a StringBuffer because StringBuffer is synchronous.