发新话题
打印

[04-13] Java语法 小结

[04-13] Java语法 小结

有人说,总结是对已经做过的工作进行理性的思考。我喜欢偶尔做点小结,并不一定是为了理性的思考,只是做点笔记而已。
    Java是一门面向对象的高级语言,我不喜欢拿它和其它OO语言比较,正如Bjarne Stroustrup不喜欢拿C++同其它语言比较一样。“当程序员使用自己熟悉的语言时,,其工作效率要比使用陌生的语言高得多。TRW 公司的数据表明,两个水平和经验相当的程序员如果一个用一种他已用了三年的语言编程,而另一个则用一种他所陌生的语言编程,那么前者的效率要比后者高 30%。IBM 的调查表明,一个在某种语言上经验丰富的程序员,其效率要比在这种语言上没什么经验的程序员高三倍”,Steve McConnell如是说。所以我觉得有必要清楚Java的语法和设计思想,后者可以通过阅读JDK源码和诸如think in java和effectivejava的书籍来加深理解,前者可以参看Java API ducument和一大堆的语法书籍来了解。

   废话就说到这儿,开始我的Java application的语法小结。
1.你应该知道的几个概念:
数据类型:
基本类型:int、boolean、float...
引用类型:数组、类(没有包含数组)、接口、enumerated(枚举)、annotation(注解类型,如@Override)

literal value(常量):
常量池的概念很重要,主要用于存放各种基本类型的常量值和对象型(如String及数组)的常量值。                  
String str = new String("abc"); //在堆中新建一个对象  
String str = "abc";            //在栈中创建一个对String常量的引用变量

boolean:
true or false(默认),不可进行类型转换。

packege机制:
一般用Internet domain name(如org.eclipse.swt),包名是全局唯一的,并与本地的文件夹层次对应。
Naming conflicts举例:
    import java.util.List;
    import java.awt.List;
    //上述导入非法,可以将第二项改为import java.awt.*;
重名包的使用方法java.awt.List = new java.awt.List();

paticular operator:
+  字符串连接符,请不要看做运算符重载。
[] 数组随机访问符,但不推荐使用数组,因为它不是内存连续的存储结构,所以效率很低。
.  对象成员访问符
() 方法标示符或类型转换符
new 对象创建符

基本类型的包装器类型Wrapper Class:
java.lang.Bealean/Double/Integer/Long
为什么要另外提供包装器呢?包装器类提供了一组常用的高效的静态成员,极大的方便了基本类型的使用,其中 valueOf( )就是杰作。

几个关键字:
synchronized: 同步互斥段,可以作为方法原型声明前缀、段声明符(static、try、catch 、finally等有相同的段语法)。
final: 变量不可更改的、方法不可被覆盖的、类不可被继承的。final不能修饰interface。
try/catch/finally: 异常处理机制。



2.常用包名
java.lang         核心类库,包含了运行java程序必不可少的系统类(缺省加载)
java.io           标准输入/输出类库
java.util         整个集合体系,如Stack、List
java.util.regex   正则
java.math         任意精度的整形和浮点算术运算
java.net          有关网络编程的工厂类
......


3.Java规范
注释:
块(block)注释、单行(single-line)注释、尾端(trailing)注释和行末(end-of-line)注释。

文档注释:
/**...*/,一个注释对应一个类、接口或成员,规范见http://java.sun.com/j2se/javadoc/

命名规范:
   它可以提供一些有关标识符功能的信息,使程序更易读。
包:前缀总是全部小写的ASCII字母并且是一个顶级域名。全名一般为域名反序 eg: com.daxi.*
类、接口:一个名词,采用大小写混合的方式,每个单词的首字母大写。
方法:方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写.
变量:第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头。
实例变量:前面或后面加下划线,大小写规则和变量名相似 eg: String name_;
常量:应该全部大写,单词间用下划线隔开 eg: MAX_SIZE_OF_STUDENTS


4.类、接口、继承和多态
    面向对象的四大特性:封装、重载、继承、多态。重载太常见了,Java API ducument遍地都是;封装大部分人也都理解;继承是面向对象的基石,用它可以设计不同等级的类和接口层次,是很重要的工具,虽然有人说“继承是java设计里的一个失败的地方。”;多态是面向对象的精华,它对于java就如同指针对于C语言之重要,这是从OBP(基于对象设计)向OOP(面向对象设计)的关键。
   先谈类和继承。

class Shape {
    Shape() {
     show();
    }

    abstract protected void show();
}


class Circle extends Shape {
    Circle(double r) {
    //隐式调用super();如果不是默认的构造函数,则必须显示调用,并且只能放第一句
    this.r = r;
    show();
    }

    protected void show(){
    }

   private double r;
}


Java保证每个Shape实例被创建时,该类的构造函数被调用,同时保证其子类Circle的实例被创建时,该构造函数Shape()也被调用。

TOP

发新话题