RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Java>列表

Java语法总结

来源:BlogJava 作者: 时间:2007-10-15 点击:
从几本书里总结出来的,有些是很难注意到的。Java一直在发展,这份总结也要一直更新的。

一、关键字与标识符
1-1、关键字不能被用作类、变量、方法或者其他任何内容的标识符。
1-2、所有关键字都以小写字母开头。
1-3、关键字是发展变化的。jdk1.5中加入了enum枚举关键字。
1-4、true、fasle、null、const以及goto不是关键字,但也不能用作标识符。如:boolean const = true;是不能编译的。
1-5、不要把Java的关键字和其他语言混淆了。如:C++的include、unsigned等。
1-6、标识符由字母、数字、下划线(_)、美元符号($)、人民币符号 (¥)组成,并且第一个字符不能是数字,也不能把JAVA中的关键字和保留关键字作为标识符。另外,标识符可以使用汉字、日文片假名等Unicode字符,如:boolean 吃饱了吗 = true;。Unicode字符集的前128个是ASCII码表。

二、常量和所有原始数据类型的范围
2-1、byte--8位,short--16位,int--32位,long--64位,float--32位,double--64位。这六种数字类型都是有符号的。
2-2、使用公式-2的(位数-1)次幂到2的(位数-1)次幂-1确定整数类型的范围(byte、short、int、long)。
2-3、char是16位Unicode字符或者说是16位无符号整数,范围从0到65535。即便如此,可以强制转换非法的数据,如:char c1 = (char) 10000;  char c2 = (char) -200;。可以从二进制存储的角度理解这点。
2-4、整数有八进制(以0开头的整数)、十进制、十六进制(以0x或0X开头的整数)表示。
2-5、char可以用单引号表示单个字符,如:'良'。也可以用unicode值'"ucafe'(四位十六进制数)。
2-6、boolean只能是true或者false。boolean b = 0;是错误的。(这不是C++)
2-7、默认的浮点类型是双精度(double),要想要一个float必须在浮点数后面加F或者f。如:float pi = 3.14;是错误的。
2-7、默认的整数类型是int型,要想使用长整型可在后面加“l”或“L”,如:1000L。(小写l容易被误认为1,不推荐用)
2-8、float可以精确到7位有效数字,第8位的数字是第9位数字四舍五入上取得的;double可以精确到16位有效数字,第17位的数字是第18位数字四舍五入上取得的。
2-9、如果要求精确的答案,请不要使用float和double,因为它们是为了在广域数值范围上提供较为精确的快速近似运算而精心设计的。然而,它们没有提供完全精确的结果。尤其是对货币计算尤为不适合,因为要让一个float或double精确地表达0.1(或者10的任何)

三、数组
3-1、数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。(注意保存的是对象的引用,而不是对象本身。)
3-2、数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
3-3、数组声明的两种形式:一、int[] arr; 二、int arr[];  推荐使用前者,这符合Sun的命名规范,而且容易了解到关键点,这是一个int数组对象,而不是一个int原始类型。
3-4、在数组声明中包含数组长度永远是不合法的!如:int[5] arr; 。因为,声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
3-5、在数组构造的时候必须指定长度,因为JVM要知道需要在堆上分配多少空间。反例:int[] arr = new int[];
3-6、多维数组的声明。int[][][] arr; 是三维int型数组。
3-7、一维数组的构造。形如:String[] sa = new String[5]; 或者分成两句:String[] sa;  sa = new String[5];
3-8、原始类型数组元素的默认值。对于原始类型数组,在用new构造完成而没有初始化时,JVM自动对其进行初始化。默认值:byte、short、 int、long--0  float--0.0f double--0.0  boolean--false  char--'"u0000'
3-9、对象类型数组中的引用被默认初始化为null。如:Car[] myCar = new Car[10]; 相当于从myCar[0]到myCar[9]都这样被自动初始化为myCar[i] = null;
3-10、对象类型的数组虽然被默认初始化了,但是并没有调用其构造函数。也就是说:Car[] myCar = new Car[10];只创建了一个myCar数组对象!并没有创建Car对象的任何实例!
3-11、多维数组的构造。float[][] ratings = new float[9][]; 第一维的长度必须给出,其余的可以不写,因为JVM只需要知道赋给变量ratings的对象的长度。
3-12、数组索引的范围。数组中各个元素的索引是从0开始的,到length-1。每个数组对象都有一个length属性,它保存了该数组对象的长度。(注意和String对象的length()方法区分开来,这两者没有统一起来是很遗憾的。)
3-13、Java有数组下标检查,当访问超出索引范围时,将产生ArrayIndexOutOfBoundsException运行时异常。注意,这种下标检查不是在编译时刻进行的,而是在运行时!也就是说int[] arr = new int[10];  arr[100] = 100; 这么明显的错误可以通过编译,但在运行时抛出!Java的数组下标检查是要消耗一定的系统资源,但是出于安全的权衡还是值得的,因为很多语言在使用数组时是不安全的,编译运行都不会报错,很难追踪!

共2页: 上一页 1 [2] 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册