Java中基本数据类型精度由低到高依次为 byte、short、int、long、float、double。short和char同级,相互转换时需要显式转换。   低精度赋值给高精度不需要显式指明,这是默认转换。

        java中boolean数据类型就只有true或者false,没有别的,没有0假,非0真的说法。&&、||有短路机制,&、|没有短路机制。
        位运算在底层都是基于二进制的。
        赋值运算表达式(assign expr)的值为等号右边的值,表达式的类型取决于表达式中数据类型级别最高的操作数。(注意类型转换)
        switch(expression)中表达式必须为整型,而且必须为:byte、short、int、char的任何一种,不包括long。char在本质上还是int。

20:53 2011/08/11 
--------------------------------------------------------------------------------------------------------------------
        声明数组int[] myArray;、构造数组myArray = new int[2]、初始化数组myArray[0]=1;myArray[1]=2;。{}大括号为数组赋值。
        for循环判断条件时,当第一次就不满足条件时,就退出整个for循环执行后面代码。
       类中的方法代码存储在方法区(method area)中,所有对象共享方法,各个对象不会单独存储一份方法。
12:04 2011/08/15
       switch(expression)中表达式必须为整型,而且必须为:byte、short、int、char的任何一种,不包括long。char在本质上还是int。
       case ...:case后面必须是常量或者常量表达式。//此处要特别注意,不能在case中使用变量。
11:46 2011/08/16
-------------------------------------------------------------------------------------------------------------------
        static{}静态代码块,优先执行,而且只执行一次。static变量存储在静态存储区,区别堆内存。static属性在第一次被加载到JVM中后,分配静态存储区,在JVM终止前不再分配空间。
        默认下,eclipse对于静态属性、方法会以斜体显式。
        静态方法中不能使用this关键字,this表示当前对象引用,静态方法直接通过类名访问时可以没有对象。
        静态方法中可以访问静态变量,不可以直接访问非静态变量,同样是:静态方法直接通过类名访问时可以没有对象,那么就还没有非静态变量。但是可以通过实例化类,对象.变量来访问非静态变量。
        实例变量赋值:所有数据类型都会被加载到JVM中赋予默认初值。
        类的成员有属性、方法、程序块(block)。非静态块格式直接一个大括号{},非静态程序块执行多次,实例化一个对象执行一次非静态块。
        继承也称作子类化。
        子类实例化是在子类构造器第一行代码转到父类构造器,当父类构造器执行完毕后才执行子类构造器后面的代码。//所以所谓的在实例化子类时,先调用父类的构造器,其实,本质上还是先执行子类构造器,只是在子类构造器的第一行代码前,编译器默认去调用其父类默认构造器。
        重载发生在一个类中,重写发生在继承中,当然也就是发生在多个类的情况下。
        super(),调用父类构造器。this(),调用本类构造器。这两个构造器只能写在第一行。括号中传几个参数就去找带几个参数的的构造器。
        super.,表示对父类的引用,this.,表示对当前对象的引用。
        子类在继承时隐藏父类的属性、方法,可以通过super.来调用父类的属性、方法。
        final修饰变量表示Java中常量,赋值是在:1、声明时赋值或者,2、在构造器中赋值,3、在非静态代码块中赋值。final修饰方法时,在继承过程中子类不能重写该方法。final修饰类时,该类不能被继承,也就是所谓的最终类。
         abstract修饰方法时,只能放在抽象类中,抽象方法没有方法体,只能声明。
         抽象类中可以有抽象方法和具体方法(可以全部是抽象方法,也可以全部是具体方法),也可以有属性。//注意区别接口,接口中只能有抽象方法,或者常量,不能有具体方法。
         在接口中public static final修饰属性是默认的,public abstract修饰方法是默认的。
18:01 2011/08/16
----------------------------------------------------------------------------------------------------------------------
        方法重载不能以返回值作为重载区别,因为假设可以的话,eg:public void test(),public int test(),当调用方法时:对象.test(),不知道调用哪个方法。
         引用数据类型转换,上转型(upcasting)、下转型(downcasting)。
        Object是Java语言中唯一一个没有父类的类。
10:01 2011/08/17
        public int hashCode();public String toString();public boolean equals(Object obj)(比较两个对象引用值是否相等,即地址是否相同)。
         System.out.println(p),当p是引用数据类型时,p会自动调用toString()方法。没有重写父类toString()方法时自动调用Object继承来的toString方法,当重写了toString方法后调用重写后的toString方法。
        导入包中所有类,导入包中单个类。包管理的是类文件,不是源文件。
        classpath表示类路径,当有导入包时,编译包含外部包的源文件需要正确配置类路径,在classpath中添加包全名第一级目录的父目录。
        把包名当做一个一个整体,添加整个包所在操作系统的路径。例如包名:com.lzh.chapter,整个包在D:\根目录下面,即D:\com\lzh\chapter,在类路径中配置D:;当整个包在D:\com目录下,即D:\com\com\lzh\chapter,则类路径配置为D:\com;。
        在DOS窗口下执行带包的类文件时,必须java+类文件全名(即带上包名的类文件),即使类文件就在当前DOS所在目录。
12:00 2011/08/17
        public String substring(int beginIndex,int endIndex),关于字符串求子串函数,将字符串看成字符数组来看待,最小索引为0,结束索引不包括在子串在内,比如,str.substring(0,5),求的是从0到4位置的子串,不是0到5位置的子串。
17:30 2011/08/17
        单例模式思想:首先要对类中构造方法声明为private,使得在其它类中创建对象时不能使用new运算符,然后通过提供创建对象的方法来创建对象。
        创建对象的方法要声明为static,使得可以通过类名调用方法来创建对象。在类中定义一个该类对象的静态引用,并调用构造方法生成一个对象。
        创建对象的方法返回静态引用即可。
20:55 2011/08/17
--------------------------------------------------------------------------------------------------------------------------
         String转成包装类,大部分包装类都提供了类似Integer(String s)这样接受字符串参数的构造器。Character和Boolean特殊,Character没有提供字符串参数构造器。
         注意:包装类的equals方法和toString方法都重写了,equals比较的是值是否相等,toString是返回的是以值为内容的字符串。
        注意在接受各种类型的字符串,要转成相应包装类时,对字符串是有要求的,比如字符串转整型时,字符串只能是数字,且长度不能超过整型所表示的32位。
        包装类转基本数据类型:通过包装类方法:typeValue(),如:a.intValue(),b.longValue()将引用a、b转换为基本数据。
       注意:对于包装类,可以直接将基本数据赋值给引用数据,只有在这里是特例,例如:Integer i = 10。其实这里是装箱,在底层用了装箱机制,首先将10转换成对象,再将对象的引用传给i。
       属性、方法、程序块、内部类,--->类的组成部分(类的成员)。
       局部内部类:定义在方法中的类,只能在当前方法中使用该类。
       1、当内部类定义了和外部类相同的变量、方法时,会覆盖外部类变量、方法,在内部类中要想访问外部类同名变量和方法只能通过这种方式:外部类名.this.同名变量(同名方法)。2、内部类可以直接使用外部类的变量和方法,不需要实例化。3、外部类不能直接使用内部类的变量和方法,必须通过实例化内部类,通过对象才能调用内部类的变量和方法。外部类的方法同样如此,只能通过实例化内部类对象才能使用内部类的变量和方法。
19:14 2011/08/18

        可以把内部类当做类的普通成员变量或者成员函数来看待,static可以修饰类的变量和方法,那么也可以修饰内部类,当修饰内部类时,可以类比静态方法,静态方法中是不可以直接使用外部类的非静态变量,静态方法中可以直接使用外部类中静态变量。
        从其它类访问内部类:对于非静态内部类,先new一个外部类对象,Outer o = new Outer(),然后再通过这种格式:Outer.Inner oi = o.new Inner()来实例化一个内部类,可以将Outer.Inner整体看成一个类型,o.new看成new操作符。对于静态内部类又例外:Outer.Inner oi = new Outer.Inner()。
        String类型转包装类:1、通过包装类构造器。2、通过包装类静态方法,比如:str = “123”,Integer.valueOf(str)。
       String类型转基本数据类型:通过包装类的静态方法,int i = Integer.parseInt(“123”)。
       注意:类的访问权限只能是public或者default(friendly、package),一定不能是private或者protected。属性或者方法可以是四种访问修饰符,访问权限由高到低:public、protected、default、private。
       抽象类中定义的抽象方法在子类继承时必须将其实现,总结:抽象方法在子类中必须实现,否则只能将子类定义成抽象类。
       抽象类中可以有构造器,接口中没有构造器。//接口中所有方法都为抽象方法,所以不能有构造方法。
20:54 2011/08/18
------------------------------------------------------------------------------------------------------------
        Java利用面向对象的方法来处理异常,异常同样是对象,异常对象是由JVM创建。
        NullPointerException,空指针异常,在C#中叫做NullReferenceException(空引用异常),在Java中也叫空引用异常更好。
        一个try后面可以跟多个catch,但是多个catch只能捕获一个,捕获到一个catch后,后面的catch不再捕获。
catch块不能在没有try块而单独存在。在没有finally块时,不能只有try,而没有catch。在有finally块时,可以只有try,没有catch,构成try...finally...。
        finally块无论是否发生异常都会执行,catch块只会在发生异常时才执行。catch块中有return结束时,当catch块执行后,finally块同样会执行,所以return对于finally块不起作用,但是对于finally块后面的代码是起作用的,也就是说finally块后面的代码是不执行的。
        try是catch和finally存在的前提,没有try就一定不能有catch或者finally,try可以和catch或者finally中一个或者两个存在。
        System.exit(0),表示终止JVM,当遇到该语句时,其后面的代码块一定不会再执行。JVM是执行Java代码的基础。
        Throwable 类是 Java 语言中所有错误或异常的超类,Throwable是一个类不是接口,它下面的两个直接子类:Error、Exception。
11:54 2011/08/19
-----------------------------------------------------------------------------------------------------------------------------------
        关于String的public String substring(int beginIndex,int endIndex)方法需要特别注意,返回beginIndex到endIndex-1的子串,正常情况下,endIndex应该<length(),不可能等于字符串长度,但是对于该方法例外,endIndex可以取到length(),表示从beginIndex到最后一个字符,等同于substring(int beginIndex),对于endIndex超过字符串长度时会抛出字符串下标越界异常。在charAt(str.length())就会抛出下标越界,但是substring(int beginIndex,str.length())就例外,记住这个例外。
2011/8/25