Java入门

Java入门

每5秒生成一个随机数代码

   import java.util.Random;

  import java.util.Timer;

  import java.util.TimerTask;

  /**

  * Java如何每5秒生成一个随机数

  *

  * @author Java人(java2000.net)

  */

  public class Test {

  public static void main(String[] args) {

  final Random random = new Random();

  Timer executeSchedule = new Timer();

  executeSchedule.schedule(new TimerTask() {

  @Override

  public void run() {

  System.out.println(random.nextInt());

  }

  }, 0, 5000);

  }

  }

举例说明什么是JAVA序列化

 首先来看看要序列化的对象
[code]
  Person.java

  package com.zjut.yunfeiyang;

  import java.io.Serializable;

  public class Person implements Serializable{

  private static final long serialVersionUID = -5434734211562785652L;

  public Person() {

  }

  private String name;

  private String password;

  private String id;

  private String address;

  /**

  * @return the name

  */

  public String getName() {

  return name;

  }

  /**

  * @param name the name to set

  */

  public void setName(String name) {

  this.name = name;

  }

  /**

PING和TELNET用法介绍

JAVA里的PING是在JDK 1.5后用了新的函数isreachable去实现,具体介绍如下:

  InetAddress对象的常用方法

  InetAddress类有很多get方法,用来获取主机名,主机地址等信息。主要有:

  byte[] getAddress() 返回次InetAddress对象的原始IP地址,保存为一个byte数组

  String getCanonicalHostName() 获取此IP地址的完全限定域名

  String getHostAddress() 获取IP地址的字符串,返回为一个String

  String getHostName() 获取此IP地址的主机名

  下面一个简单的例子展示这些方法的使用:
[code]
  package org.dakiler.javanet.chapter1;
  import java.net.InetAddress;
  public class Example3
  {
  public static void main(String args[])throws Exception
  {
  InetAddress address=InetAddress.getByName("www.microsoft.com");

Java异常类总结

算术异常类:ArithmeticExecption

  空指针异常类:NullPointerException

  类型强制转换异常:ClassCastException

  数组负下标异常:NegativeArrayException

  数组下标越界异常:ArrayIndexOutOfBoundsException

  违背安全原则异常:SecturityException

  文件已结束异常:EOFException

  文件未找到异常:FileNotFoundException

  字符串转换为数字异常:NumberFormatException

  操作数据库异常:SQLException

  输入输出异常:IOException

  方法未找到异常:NoSuchMethodException

  java.lang.AbstractMethodError

  抽象方法错误。当应用试图调用抽象方法时抛出。

  java.lang.AssertionError

  断言错。用来指示一个断言失败的情况。

  java.lang.ClassCircularityError

引用类型和原始类型

 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。另外,Java 还为每个原始类型提供了封装类(Wrapper)。如果需要一个整型变量,是使用基本的 int 型呢,还是使用 Integer 类的一个对象呢?如果需要声明一个布尔类型,是使用基本的 boolean,还是使用 Boolean 类的一个对象呢?本文可帮助您作出决定。

  下表列出了原始类型以及它们的对象封装类。

  原始类型 封装类

  =================

  boolean Boolean

  char Character

  byte Byte

  short Short

  int Integer

  long Long

  float Float

  double Double

  引用类型和原始类型的行为完全不同,并且它们具有不同的语义。例如,假定一个方法中有两个局部变量,一个变量为 int 原始类型,另一个变量是对一个 Integer 对象的对象引用:

  int i = 5;                       // 原始类型

  Integer j = new Integer(10);     // 对象引用

值传递和引用传递

在java中实质只存在一种传递方式:即值传递。 而引用传递是对C/C++而言的。结论:

  对于基本类型,在方法体内对方法参数进行重新赋值,并不会改变原有变量的值。

  对于引用类型,在方法体内对方法参数进行重新赋予引用,并不会改变原有变量所持有的引用。

  方法体内对参数进行运算,不影响原有变量的值。

  方法体内对参数所指向对象的属性进行运算,将改变原有变量所指向对象的属性值。

  在JAVA中变量有以下两种:

  基本类型变量,包括char、byte、short、int、long、float、double、boolean。

  引用类型变量,包括类、接口、数组(基本类型数组和对象数组)。

  最后我们得出如下的结论:

  基本类型和基本类型变量被当作参数传递给方法时,是值传递。在方法实体中,无法给原变量重新赋值,也无法改变它的值。

  对象和引用型变量被当作参数传递给方法时,在方法实体中,无法给原变量重新赋值,但是可以改变它所指向对象的属性。
[code]
  2 public class Person

  3 {

  4 private String name = null;

  5 private int age = 0;

  6

如何应用Clone

对于克隆(Clone),Java有一些限制:

  1、被克隆的类必须自己实现Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。Cloneable 接口实际上是个标识接口,没有任何接口方法。

  2、实现Cloneable接口的类应该使用公共方法重写 Object.clone(它是受保护的)。某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。

  3、在Java.lang.Object类中克隆方法是这么定义的:

  protected Object clone()

  throws CloneNotSupportedException

  创建并返回此对象的一个副本。表明是一个受保护的方法,同一个包中可见。

  按照惯例,返回的对象应该通过调用 super.clone 获得。

  引题:

  举个例子说吧,现在有一个对象比如叫foo,你需要在创建当前对象的一个副本作为存根你能怎么做?

  假如你不用Clone,那么你可以先new一个对象foo1:Foo foo1=new Foo(),然后用foo给foo1对象set值,这样就得到foo的副本foo1;除此之外,别无选择。

解决Java内存泄露问题方案

内存泄漏的慨念

  1.c/c++是程序员自己治理内存,Java内存是由GC自动回收的。

  我虽然不是很熟悉C++,不过这个应该没有犯常识性错误吧。

  2.什么是内存泄露?

  内存泄露是指系统中存在无法回收的内存,有时候会造成内存不足或系统崩溃。

  在C/C++中分配了内存不释放的情况就是内存泄露。

  3.Java存在内存泄露

  我们必须先承认这个,才可以接着讨论。虽然Java存在内存泄露,但是基本上不用很关心它,非凡是那些对代码本身就不讲究的就更不要去关心这个了。

  Java中的内存泄露当然是指:存在无用但是垃圾回收器无法回收的对象。而且即使有内存泄露问题存在,也不一定会表现出来。

  4.Java中参数都是传值的。

  对于基本类型,大家基本上没有异议,但是对于引用类型我们也不能有异议。

  Java是如何管理内存

对Java进行初始化应避免的问题

为了说明这个问题先给大家出个问题吧:

  请看代码:
[code]
  view plaincopy to clipboardprint?

  public abstract class A {

  public A() {

  initMethod();

  }

  public abstract void initMethod();

  }

  public abstract class A {

  public A() {

  initMethod();

  }

  public abstract void initMethod();

  }

  view plaincopy to clipboardprint?

  public class B extends A {

  static String staticStr = "static1";

  private String testStr = "Test1";

  /*

  * (non-Javadoc)

  *

  * @see A#initMethod()

  */

  public void initMethod() {

如何改善系统对JVM的使用方式

应用程序服务器是一个 Java 进程,它需要 Java 虚拟机(JVM)才能运行以及支持它所运行的 Java 应用程序。在配置应用程序服务器的过程中,可以对设置进行微调以改善系统对 JVM 的使用方式。

  关于本任务

  JVM 为基于 Java 的应用程序提供了运行时执行环境。WebSphere Application Server 是 JVM 运行时环境与基于 Java 的服务器运行时的组合。它可以在不同 JVM 提供程序提供的 JVM 上运行。要确定正在运行 Application Server 的 JVM 的提供程序,请从 WebSphere Application Server 的app_server_root/java/bin 目录中发出 java -fullversion 命令。您也可以检查其中一个服务器的 SystemOut.log。当应用程序服务器启动时,Websphere Application Server 会将关于 JVM 的信息(包括 JVM 提供程序信息)写入此日志文件。

  从调整 JVM 的观点看,有两种主要的 JVM 类型:

  IBM JVM

  基于 Sun HotSpot 的 JVM,其中包括 Solaris 上的 Sun HotSpot JVM 以及 HP 的 JVM for HP-UX

同步内容