java 基础

来源:互联网 发布:node开发restful api 编辑:程序博客网 时间:2024/05/29 02:54

Windows下java运行环境配置:
  安装jdk(附带安装了jre)
  set path = %path%; xx:/jdk_1.6/bin
  set classpath = .; xx:/jdk_1.6=lib
  //注意:"."必不可少, 指的是当前目录

帮助文件: java API 规范 chm 中文版


  
1. javaee组成部分包括: java开发工具,java布署工具,用户界面工具,集成API,java核心API,java虚拟机(客户端VM,服务端VM)。
2. java模型:
   客户端表示层,服务端表示层,服务端应用逻辑层,企业信息系统层.
3. java: 分布式,多线程,动态, 安全性
4. java安全性:
   内存分配及布局由Java运行系统规定(C,C++是由编译器规定).
   安全控制模型
5. java语法:类,接口,程序包,多线程
6. JVM的实现:字节码的验证,解释器,内存回收器等.
   JVM规范的抽象逻辑组件:指令集; 寄存器组;类文件格式;栈结构;垃圾回收器;存储区.
7. java基本命令,RMI命令,国际化命令:


java基本知识:
1. 源程序三要素:包声明(package),引入类声明(import), 类(接口)的定义.
2. main 方法必须在public class中.
3. 一个源文件只能有一个public class 的定义,且源文件的名字与包含main方法的public class 类名相同,扩展名必须为 .java.
// 如无public类,则文件名任意
// main 方法的修饰符一定要为: public static void main(String args[])
// public 意为可访问 PName.CName.main , static 意为不产生对象而直接调用类方法

4. 对象之间的三种关系:包含,关联,继承   ----  组合
5. 多态:编译时的重载,运行时基类所指对象的具体类型来调用方法
6. 动态绑定:如同C++ 中virtual 方法

7. Object类是根类,类型是Object的变量可指向任意的对象,Object提供了所有方法

8. java 语言基础:
   注释: //, /* */, /**  */, 第三种是文档注释
   标识符: 可用Character的isJavaIdentifierStart(char ch)及isJavaIdentifierPart(char ch)来测试.
   风格约定:_和$不作为标识符的首字母; 类名,接口名,变量名及方法名采用大小写混合法; 常量名 NAMEPRE_NAMEEND; 方法名应该用动词;
   基本数据类型:boolean, char , (byte,short,int,long), (float,double)
   转义字符: /ddd, /uxxxx, /' , /", //, /r,/n,/f,/b,/t
   String 与 StringBuffer: !!!
   从char可到int的自动转换: int a= ch_name;
   整型: java中所有整型都是有符号类型, 默认为0.   08,0x16或0X16,10L;
   浮点: 默认为 double 型. 0.0f 为 float型.
  
   引用型类型:数据空间并不直接开辟,只开辟指针的空间。
   变量及作用域:
       局部变量:{},仅限于此代码块
       类成员变量: 整个类; static 变量在类加载时分配空间。
       方法参数: 其参数作用域就是在所在的方法。
       异常处理参数:作用域是在catch后的{}中。
   运算符与表达式:
       转换关系: byte->short->char->int->long->float->double
       //注意:即使两个操作数为 byte 或 short ,结果也为 int。
       // % 可用于 float 型。
   逻辑运算符: &&,||,!, 以及异或 ^
   其它运算符:?:, [], (),(type), new, instanceof .
   运算符的优先级: 后缀运算符 -> 一元运算符 -> 创建或强制类型转换---->赋值。
  
   语句:try-catch-finally, label:, throw.
   switch: switch中和case中均不能为long 和 float 型. 可为 byte, char, short, int.
   break 和 continue 均可带标签.
  
   数组:
       char [] s,m,n; //三个数组。
       // 数组的声明中不指定长度。它是作为类来处理的。故声明句柄时不分配空间。
       new char[20];  array.length;
   对象数组: 数组中存储的是句柄,即对象数组是一维的指针数组。
   通过初始化创建数组:
       String names[] = { "a","b" }
       Date dates[] = { new Date(2009), new Date(2010) }
   多维数组:从最高维起,给每一维分配空间。
  
   数组复制: java.lang.System.arraycopy
9. java 面向对象特性:
   类的定义:
   <修饰符> class <类名>{
        <属性声明>;
        <构造函数声明>;
        <成员方法>;
   }
   [pulbic][abstract|final] class className [extends SuperClassName] [implements  InterfaceNameList]{ ... ... }
   类成员的四种访问级别:public, protected, private,默认
   成员变量的声明: final 表示常量.
         [pulbic|private|protected] [static] (transient,volatile) type varName;     // transient, volatile 的用法 ?
   成员方法:
         [<accessLevel>][static][final | abstract][native][synchronized]<return_type> <name> ([<argument_list>])[throws <exception_list>]{ <block> }
         // native 表示方法用其它语言实现,synchronized 表示多线程时同步访问.

   java中参数传递是传值.
   方法重载:
       参数表必须不同,注意调用时可能产生的二义性问题。
       对于返回值则没有要求。修饰符也没有要求。
   构造方法:
       [public | private | protected ] <class_name> ([argument_list]){}
       访问限制符表明能够创建相应对象的作用域.
       pulbic: 任何类都可创建该类实例的对象。
       protected: 只有这个类的子类以及与该类在同一个包中的类可以创建这个类的实例对象 。
       private: 没有其它类可实例化该类.  工厂方法.
       默认: 只有与这个类在同一包中类可创建这个类的实例对象.
       //注意:用户不能直接调用构造函数,只能通过new 来自动调用它。
   缺省的构造方法:
       如不定义构造函数,则系统编译时自动生成一个;但是如果定义了构造函数,则缺少的构造方法就不加入到类的定义中。
       注意在一个类的构造方法中可以: this(arg_list) 用来调用其它的构造方法.
   对象的创建与初始化:
       分配空间->将成员变量进行默认初始化->执行显式初始化->执行构造方法.
   对象的清除:当使用了本地资源时 finalize()
  
   继承: extends   
       子类不能继承父类的private方法,也不能继承父类构造方法.
       super调用的方法也可以是父类通过继承过来的方法.
      
       子类的创建与初始化过程:
            分配全部空间->自顶向下显式初始化->自顶向下调用构造函数.
            注意:在子类的构造方法中如果没有使用 super(arg_list) 则子类将会调用父类默认构造方法.!!! 并且,当父类没有默认构造方法时将会出错. !!!
   方法的重写:变量的隐藏,方法的重写。
       当子父成员变量同名时,子类会隐藏父类变量.
       当子类与父类具有相同方法名,相同参数表,相同返回值时,发生了重写。
       注:重写时,范围不能缩小;不能拋出新的异常;返回值类型要相同;
   运行时多态:
       父类对象变量指向子类对象。
   对象的强制类型转换: (type)obj;  instanceof 目标类型要是当前类变量的子类。
   Object 类:
       可以重写的方法:  clone(),equals()/hashCode(), finalie,toString()      
       不可以重写的方法:getClass(), notify(), notifyAll(), wait()
       String.class <=> class.forName("String")
       obj.getClass().getName(), obj.getClass().newInstance()
  
10. java 高级特性
   static:
        可修饰类成员变量,成员方法及内部类.
        静态方法:
            其它方法可调用static方法,而static方法只能调用static方法.
            子类不能重写父类的static方法,但是可声明与父类静态方法相同的方法。
            子类不能把父类的非静态方法重写为静态方法。
            注意:重写!! 不能在重写的基础上添加,添上或减去static.  
            重写:修饰符可不同。
   静态初始化块: static {  }
   final:
        类声明:不可继承。
        成员方法:不被重写。
        成员方法: 不被改变。常量.
        final变量的赋值问题:对于成员变量,若声明时没有赋值,则在每个构造函数中要对其赋值。对于局部变量,或声明时没有赋值,则只能赋值一次.

   抽象类:声明时加 abstract , 可以没有 abstract 方法.
        一般将抽象类的访问权限声明为protected而不是public,从而保证构造方法能够由子类调用而不被其他无关的类调用。
        默认权限: absytacy default
        父类抽象方法修饰符权限<= 子类相应方法的修饰符。
   接口:interface
         接口体中变量定义默认有: public final static 的属性.
         interface 可通过 extends 来继承多个接口 。
         成员方法默认权限: abstract default    !!!!
         优先考虑接口,其次才考虑抽象类。
   包:
        放在指定目录下;编译单元;类的名字空间;import不加载包中的类。
        package .    默认值
        import java.lang.*  默认值
        javac -d :如果某目录下没有包名,则产生相应的包名。
   访问控制: public, private, protected, default
        注意:访问控制处于类层次,而不处理对象层次。
        //故:在一个类中可以访问本类类型对象的私有成员变量。该对象可为 this或other.
 protected 比 default更广,可让本身访问,可让本包中类访问,可让子类访问(同包或不同包皆可)。
   内部类: ??
  
   基本包装类:
       Boolean,Byte,Character,Short,Integer,Long,Float,Double
       XXX.valueOf(XXX)
       对于封箱,拆箱只能用于同类型类变量和对象.
       int 与 Long不行; long  与 Integer也不行.
   集合类:Set,List,Map
       Collection(Set,List)
       Map

      注:集合类只能存储对象。
      遍历:Iterator
      for迭代器: for(obj_name: list_name) System.out.println(obj.value);
11.异常处理
   throw (抛出) 与 throws (列出)
   try-catch-finally         Exception e.getMessage()
   throw new MyException()后,程序将停止下一条的执行,寻找异常处理程序。
   自定义异常:
   try{}catch(){ try{} catch(){} }
 
12. 输入与输出
13. AWT
14. Applet
15. 线程
16. Swing
17. java网络
18. JDBC