2008-05-29

Java 是做什么?

語言特性
Java之所以被開發,是要達到以下五個目的:
  • 應當使用物件導向程序設計方法學
  • 應當允許同一程序在不同的電腦平臺執行
  • 應當包括內建的對電腦網路的支持
  • 應當被設計成安全地執行遠端代碼
  • 應當易於使用,並借鑒以前那些物件導向語言(如C++)的長處。

Java技術主要分成幾個部分:Java語言、運行環境JVM、類庫。一般情況下說Java時並不區分指的是哪個部分。

Java modifier

source from: http://www.k8w.net/technology/java/200801/419.html
http://dev.21tx.com/2002/02/07/10057.html

Java语言定义了public、protected、private、abstract、static和final这6常用修饰词外
还定义了5 个不太常用的修饰词,下面是对这11个Java修饰词的介绍:



No.Modifier使用对象介绍
1public类、接口、成员无论它所处在的包定义在哪,该类(接口、成员)都是可访问的
2private成员成员只可以在定义它的类中被访问
3static类、方法、字段、初始化函数成名为static的内部类是一个顶级类,它和包含类的成员是不相关的。静态方法是类方法,是被指向到所属的类而不是类的实例。静态字段是类字段,无论该字段所在的类创建了多少实例,该字段只存在一个实例被指向到所属的类而不是类的实例。初始化函数是在装载类时执行的,而不是在创建实例时执行的。
4final类、方法、字段、变量被定义成final的类不允许出现子类,不能被覆盖(不应用于动态查询),字段值不允许被修改。
5abstract类、接口、方法类中包括没有实现的方法,不能被实例化。如果是一个abstract方法,则方法体为空,该方法的实现在子类中被定义,并且包含一个abstract方法的类必须是一个abstract类
6protected成员成员只能在定义它的包中被访问,如果在其他包中被访问,则实现这个方法的类必须是该成员所属类的子类。
7native成员与操作平台相关,定义时并不定义其方法,方法的实现被一个外部的库实现。
8strictfp类、方法strictfp修饰的类中所有的方法都隐藏了strictfp修饰词,方法执行的所有浮点计算遵守IEEE 754标准,所有取值包括中间的结果都必须表示为float或double类型,而不能利用由本地平台浮点格式或硬件提供的额外精度或表示范围。
9synchronized方法对于一个静态的方法,在执行之前jvm把它所在的类锁定;对于一个非静态类的方法,执行前把某个特定对象实例锁定。
10volatile字段因为异步线程可以访问字段,所以有些优化操作是一定不能作用在字段上的。volatile有时可以代替synchronized.
11transient字段字段不是对象持久状态的一部分,不应该把字段和对象一起串起。

meet with new friend, assertion from java island

damn...
kind of simple code, but today i just know...





Fig. 13.9 Checking with assert that a value is within range.
   1  // Fig. 13.9: AssertTest.java
2 // Demonstrates the assert statement 3 import java.util.Scanner; 4 5 public class AssertTest 6 {
7 public static void main( String args[] ) 8 { 9 Scanner input = new Scanner( System.in ); 10 11 System.out.print( "Enter a number between 0 and 10: " );
12 int number = input.nextInt(); 13
14 // assert that the absolute value is >= 0
15 assert ( number >= 0 && number <= 10 ) : "bad number: " + number;
16
17 System.out.printf( "You entered %d\n", number );
18 } // end main
19 } // end class AssertTest



Enter a number between 0 and 10: 5
You entered 5






Enter a number between 0 and 10: 50
Exception in thread "main" java.lang.AssertionError: bad number: 50
at AssertTest.main(AssertTest.java:15)