美丽涵涵童装店--说我博客名字,给你们打折!
随笔 - 82  文章 - 266  trackbacks - 0
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678


点击这里给杨爱友发消息
美丽涵涵童装店
说我博客名字,给你们打折!

常用链接

留言簿(6)

随笔分类

随笔档案

文章档案

好友的BLOG

搜索

  •  

最新评论

阅读排行榜

评论排行榜

第一章 概述

名词解释
    体系结构中立:java编译器会生成与特定的计算机体系结构无关的字节码,只要有java运行时系统,就可以在许多处理器上运行,而且还可以跨素的翻译成本地机器的代码。
    高性能:它通过即时编译器,一次把字节码编译为本地代码,并将结果缓存起来,在需要的时候重新调用,从而提高运行速度。
    可移植性:各种类型的数据都明确的规定了其大小,不随处理器的改变而改变;二进制有严格的格式,这样就能轻松移植到其他处理器上执行。
第三章 JAVA语法基础

1.书中提到JAVA中的每个类都要有一个main方法,但我们平时设计的类里都没有main方法,怎么解释?
2.在jdk 5.0中用p表示指数。
3.浮点数不适合用于禁止出现舍入误差的金融计算中,因为浮点数采用的是二进制系统表示的,而在二进制中无法精确表示出0.1,就好象十进制无法精确表示出1/3一样,这时应该用BigDecimal。
4.熟悉math类和String类的常用方法。
5.JAVA中将String类的对象称为不可变字符串,原因是不能修改JAVA字符串,平时所谓的修改,只是将字符串变量指向了另外个字符串常量。equals方法判断两字符串内容是否相等,而‘==’检测两字符串的内存位置是否相等。
6.大数值BigInteger、BigDecimal,可以处理任意长度的数值,但是他们没有+ 、*等运算,而是使用他们的add()、multiply()方法。
7.Arrays类(不是Array类)方法:sort(type[] a)排序,binarySearch(type[] a,v)二分查找法查找v所在的位置,若数组a事先没有排序结果将返回负数。
第四章 类和对象

关键句子:
1. 一个对象并没有实际包含对象,而仅仅引用一个对象。
2. 为了保持数据的隐藏性,强烈建议将实例域标记为private。
3. 一发方法可以访问所属类的所有对象的私有数据。
4. 本地方法可以修改由final修饰的常量值。
5. 因为静态方法不能操作对象,所以不能在静态方法中访问实例域。但是,静态方法可以访问自身类的静态域。
6. 方法参数使用:
JAVA中的参数传递都是值传递。
   1).一个方法不能修改一个基本数据类型的参数。
   2).一个方法可以改变一个对象参数的状态。
   3).一个方法不能让对象参数引用另一个对象(如果可以那就是指针即引用传递了)。
7. 变量在使用前必须进行初始化,否则会出现编译时错误,而域如果不初始化将为默认值(0、false或null)。
8. 仅当类没有提供任何构造器时,系统才会提供一个默认的构造器。若类提供了至少一个构造器,但是没有 
    提供默认的构造器,那么在构造对象时若不提供参数将视为不合法。
9. 调用构造器的步骤:
   1).所有数据域被初始化为默认值(0、flase或null)。
   2).按顺序执行所有域初始化语句和初始化块。
   3).如果构造函数第一行调用了另一个构造器,则先执行第二构造器,再执行第一构造器主体部分。
10. 创建一类对象的方法称为工厂方法,如NumberFortmat类中的getNumberInstance()方法,此方法返回类型为
      NumberFormat的对象。
11. 对静态域进行初始化可以使用静态初始化块,用static{}标志。可以利用静态初始化块写一个没有main函数 
      的程序。
12. 用类似import java.util.*;的形式导入所使用的类,对代码的大小没有任何负面影响,但是读者不易知道程序
      加载了哪些类,可读性差一些。
13. 静态导入:JDK 5.0增加了导入静态方法和静态域的功能,但可读性明显降低,在使用Math类的方法和使用
     Calendar类的常量时可以使用这种静态导入,使代码简洁。
14. 虚拟机如何定位类?
有关时间的两个类:Date类和GregorianCalendar类,前者用来表示时间点,后者是人们所熟悉的日历表示形式,用不同的类表示不同的概念是个很好的思想。

时间操作:
获取当前时间
获取某个时间的某个格式
设置时间
时间有关计算

涉及到的类有java.util.Date;java.sql.Date;java.text.SimpleDateFormate;java.util.Calendar;
1.获取当前时间直接用Date()既可。
2.获取时间格式 用到时间格式化类SimpleDateFormate,首先创建一个格式化的实例,并指定其时间模式与区   
   域;然后去格式化原始时间。代码示例:
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日_HH时mm分ss  
    秒",Locale.SIMPLIFIED_CHINESE);//定义一个格式化器,包括一个模式和时区
   String timeStr = sdf.format(new Date()); //真正格式化当前时间
3.设置时间 与获取时间类似,这里只写出代码示例
    SimpleDateFormat sdf = new SimpleDateFormat("",Locale.SIMPLIFIED_CHINESE);
    sdf.applyPattern("yyyy年MM月dd日_HH时mm分ss秒");
    Date date = sdf.parse("2006年07月01日_14时00分00秒");
4.时间计算
   主要用到Calendar类,此类可以轻松获取当前时间的年、月、日、小时、分、秒,获取到这些值后关于计算
   只是简单整型数学算术了。代码示例:
   Calendar ca1 = Calendar.getInstance();
   Calendar ca2 = Calendar.getInstance();
   ca1.setTime(date1);
   ca2.setTime(date2);
   int distanceHour = ca2.get(Calendar.HOUR_OF_DAY) - ca1.get(Calendar.HOUR_OF_DAY);

 第五章 继承

1. super不能指向一个对象,不即不代表当前类对象引用,也不代表超类对象引用,他只是一个调用超类方法 
    的一个关键字。如果子类没有显式的调用超类的构造器,则将自动地调用超类默认的构造器。
2. 一个对象变量可以引用多种实际类型的现象被称为多态。尤其是一个对象变量可以引用其子类的对象。在
    运 行时能够自动地选择调用的适当方法的现象称为动态绑定。如果方法是private、static、final或者构造器,
    那么编译器可以准确地知道应该调用哪个方法。我们将这种调用方式称为静态绑定。在覆盖一个方法时,
    子类方法不能低于超类方法的可见性。
4. 如果将一个类声名为final,其方法将自动地成为final,而它的域则不一定是final的。
5. 强制类型转换规则:只能在继承层次内进行类型转换;在将超类转换成子类之前,应该使用instanceof方法进
    行检查。
6. 抽象类:它有什么必要?它可以包括非抽象方法和具体数据,不包含抽象方法的类也可以声名为抽象类,
    但它仍然不可以实例化。可以定义一个抽象类型的对象变量,但它只能引用非抽象子类的对象。
7. 数据封装原则之一,在本类做了任何修改不影响其他地方。
8. 4个访问修饰符的可见性:private只对本类可见;public对所有类可见;protected对本包及所有子类可见;默
    认对本包可见。
9. Object类的equals方法设计讲究很多原则,他用于比较两个对象是否相等,是比较两个对象的内存地址是否 
    相等。若子类不覆盖此方法,相等性比较将也是比较两个变量是否引用同一快内存空间,这显然是没有任 
    何意义的,所以设计类时一般要覆盖掉Object类的equals方法。
10. hashCode方法:是由对象导出的一个没有规律的整型值,所以若x和y是两个不同对象,其散列码基本上不
     会相等。Object的散列码值是对象的存储地址。若子类重写了Object的equals方法,也必须重写Object的
     hashCode,因为两个对象相等,他们必须保证有相同的散列码。
11. toString()方法,用于返回表示对象状态值的字符串,Object中的toString()方法得到类名和散列码,很多方法
     都覆盖了Object的toString方法,用于输出对自己有意义的结果
12. ArrayList是一个采用类型参数的泛型类。此功能在JDK5.0以后才出现。
13. 将基本数据类型如 int转换为包装类型如 Integer的构成叫打包,反过来叫拆包。在JDK5.0以前必须手工地
     插入打包和拆包的代码,现在编译器可以自动的进行打包拆包动作。
14. JDK5.0以后支持参数个数可变的方法。
15. 反射:这个久闻的词对我来说一直很神秘,今天拜读了这章内容,了解了一些概念,但仍然没有领会到
     其中的原理,只听说spring的IOC就是基于这个原理而设计的。这里我只记录一些需要记忆性的概念、方
     法,至于深层的原理,还得再来一遍了。
     能够分析类能力的程序称为反射。可以利用反射机制:
         a. 在运行时分析类的能力。
         b. 在运行时查看对象,例如,编写一个toString方法供所有类使用。
         c. 实现数组的操作代码。
         d. 利用Method对象,使用一个叫“对象指针”的东西。
    反射是一个功能强大但复杂的机制,它的主要使用对象是工具构造者,并不针对项目开发中的代码编写
    者。
16. Class类:在程序运行期间,JAVA运行时系统始终为所有的对象维护一个被称为运行时的类型标志。这个
      信息保存着每个对象所属的类足迹。虚拟机利用运行时信息选择相应的方法执行。可以通过专门的JAVA
      类访问这些信息。保存这些信息的类被称为Class。虚拟机为每个类型管理着一个Class对象。
          java.lang.Class类:
         static Class forName(String className)返回类名为className的Class对象。
         Object newInstance()返回一个该类的实例。
         典型的应用在加载数据库驱动时,先创建一个驱动类的对象,再返回该类的实例。
         Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
17. 使用反射分析类的能力(检查类的结构):
      在java.lang.reflect包中有三个类Field、Method、Constructor分别用语描述类的域、方法和构造器。公用的方
      法有getName()--返回该条目的名字;getModifiers()返回一个整形数值,此数值用于判断该条目的修饰符。
     Class类的getFields、getMethods、getConstructors方法将分别返回类支持的Public域、方法和构造器数组,其
     中包括类的公有成员。Class类的getDeclareFields、getDeclareMethods、getDeclareConstructors方法将分别返回
     类中声明的全部域、方法和构造器,其中包括私有域,但不包括超类中的条目。
      ... ...


第六章 接口与内部类

1. 接口不是类,而是一组对类的需求描述,这些类要遵从接口描述的同意格式进行定义。
接口中的所有方法
    自动地属于public,域自动的属于public static final,因此在声明方
法时,不必提供关键字public,但为了增强
    代码阅读性,依然要加上关键字public。接口
不能含有实例域和静态方法,但可以包含常量。
2. JAVA机制提供接口的必要性:JAVA是一种强制类型语言,在调用方法的时候编译器将会
检查这个方法是
    否存在。检查接口中是否存在此方法比在本类中检查是否存在此方法要快
得多?
3. 书中提到的一个有用例子:Arrays类中有个sort(Object[] a)方法,可以对a中的元素
排序,但要求数组中的元
    素必须实现compareable接口,并且在元素对象中要提供具体的
compareTo()方法。compareTo()方法的设计很
    有讲究,其一是要符合“反对称”原则。
4. 对象克隆:生成一个对象的一个拷贝,对它进行修改不会影响原来对象的状态。默认的
克隆操作是“浅拷
    贝”,它并没有克隆包含在对象中的对象,比方说user.menus。为了实
现对象的深烤贝,我们应该重写   
    Object类的clone()方法,对对象内部的对象域再进行克隆

5. 使用clone()方法并不必须要实现Cloneable,因为clone()方法可以从Object类中继承过
来;是这样的吗?
6. 回调:是一种设计模式,在这种设计模式中,可以指出某个特定事件发生时应该采取的
动作。但如下:
       for(int i = 0;i < 10;i++){
            if(i == 5){
               System.out.println("i's value is:" + i);
           }
       }
    即当i==5时采取out.println()事件,这算是回调吗?回调与方法调用区别在哪里?
7. 内部类:定义在类中的类。它有如下特点:
       a. 内部类方法可以访问该类定义的所在的作用域中的数据,包括私有的数据。
       b. 内部类可以对同一个包中的其他类隐藏起来。
       c. 当想定义一个回调函数,又不想编写大量代码时,使用匿名内部类非常便捷。
    对于 ${c}完全不能理解,内部类到底有多大必要,没有体会。
8. 代理:...

第11章 异常与调试
俩概念--1、已检查异常,需要我们进行声明或捕获的异常类型,当异常发生时,我们要寻找合适的处理器进行异常处理;2、未检查异常,要么不可控制(error),要么就应该避免他们的发生(数组下标越界)。

 

posted on 2007-08-11 01:55 杨爱友 阅读(1060) 评论(2)  编辑  收藏

FeedBack:
# re: java核心技术读书笔记 2007-08-11 08:45 飘摇
呵呵 又有进步了  回复  更多评论
  
# re: java核心技术读书笔记 2007-08-13 09:41 cresposhi
不错,厉害!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
美丽涵涵童装店
亲,说我博客名字,给你们打折!