Updated 2014/03/26 P300-P402

Updated 2014/03/25 P213-300

Updated 2014/03/20 P0-P213

对象本身已知的事物被称为: 实例变量(instance variable)

对象可以执行的动作称为: 方法(methods)

类不是对象,却是用来创建它们的模型。

3.Primitive主数据类型和引用--------------认识变量

Primitive主数据类型有8种:

Boolean, char, byte, short, int, long, float, double

数组也是对象

Dog dog = new Dog()   1)声明引用变量  2)堆上创建对象   3)将引用变量指向对象

Java值传递,拷贝传递

无需初始实例变量,因为它们会有默认值。数字的primitive(包括char)预设为0,boolean的预设为false,而对象引用则为Null

局部变量(声明在方法中)没有默认值!如果在变量被初始前就使用,编译器会报错

使用 == 来比较两个primitive主数据类型,或者判断两个引用是否引用同一个对象。

使用equals()来判断两个对象是否在意义上相等(如两个String对象是否带有相同字节组合)

运用多态时,引用类型可以是实际对象类型的父类。 Animal dog = new Dog();

问:你能够继承任何一个类吗?就像类的成员一样如果类是私有的你能不能继承?

答:内部类我们还没有介绍到。除了内部类之外,并没有私有类这样的概念。但是有三种方法可以防止某个类被作出子类。

第一种是存取控制。就算类不能标记为私有,但它还是可以不标记共有。非共有的类只能被同一个包的类作出子类。

第二种是使用final修饰符。表示它是继承树的末端,不能被继承。

第三种是让类只拥有private的构造程序

问:可不可以只用final去标识方法而不使用整个类。

答:如果你想要防止特定的方法被覆盖,可以将该方法标识上final这个修饰符。将整个类标识成final表示没有任何的方法可以被覆盖。

覆盖方法:

1)  参数必须要一样,且返回类型必须要兼容

2)  不能降低方法的存取权限。

重载的意义是两个方法的名称相同,但参数不同。它与继承或多态无关。

1)  返回类型可以不同

2)  不能只改变返回类型,参数需要不同

3)  可以更改存取权限

8 接口与抽象类     深入多态

抽象类:类前加abstract。 能够防止这个类被初始化,只有其子类可以被初始化

抽象的类代表此类必须要被extend过,抽象的方法代表此方法一定要被覆盖过。抽象的方法没有实体。 E.g. public abstract void eat();

如果你声明出一个抽象的方法,就必须将类也标记为抽象的。抽象类可以同时带有抽象和非抽象的方法。     继承下来的具体类必须实现其抽象父类的所有抽象方法。

Updated 2014/03/25 P213-300

编译器是根据引用类型来判断有哪些method可以调用,而不是根据Object确实的类型

接口可以用来解决多重继承的问题却又不会产生致命方块这种问题

Java的接口就好像是100%的纯抽象类。

接口的定义: public interface Pet {…..}

接口的实现: public class Dog extends Canine implements Pet {…}

要如何判断应该是设计类、子类、抽象类或接口呢?

如果新的类无法对其他的类通过IS-A测试时,就设计不继承其他类的类。

只有在需要某类的特殊化版本时,以覆盖或增加新的方法来继承现有的类。

当你需要定义一群子类的模板,又不想让程序员初始化此模板时,设计出抽象的类给它们用。

如果想要定义出类可以扮演的角色,使用接口。

栈存方法调用和局部变量。

堆存所有的对象。

如果局部变量是个对对象的引用,只有变量本身会放在栈上,对象本身只会存在于堆上。

super()必须放在构造函数的第一句。

使用this()来从某个函数调用同一个类的另外一个构造函数。

this()只能用在构造函数中,且必须是第一行语句。

super()与this()不能兼得

静态变量:被同类的所有实例共享的变量

静态方法:不需要对对象进行实例化,直接通过类名.方法名调用。静态方法中不能调用非静态成员和方法。

静态变量会在该类的任何对象创建之前就完成初始化;静态变量会在该类的任何静态方法执行之前就初始化

final的变量代表你不能改变它的值,final的method代表你不能覆盖掉该method,final的类代表你不能继承该类(也就是创建它的子类)

如果类只有静态的方法,你可以将构造函数标记为private的以避免被初始化(如Math类)。

在java中的常量是把变量同时标记为static和final的。

Final的静态变量必须在声明或静态初始化程序中赋值。E.g.:

static{

DOG_CODE = 420;

}

autoboxing:不必把primitive主数据类型与对象分得那么清楚.

可以把int类型的放入ArrayList<Integer>里,把boolean类型的放入ArrayList<Boolean>里,把char类型的放入ArrayList<Character>中

autoboxing不只是包装与解开primitive主数据类型给collection用而已,它还可以让你在各种地方交换地运用primitive主数据类型与它的包装类型。(P291)

1.方法的参数   2.返回值              3.boolean表达式             4.数值运算               5.赋值

Interger.parseInt(string)          Double.parseDouble(string)

要取得当前的日期时间就用Date,其余功能可以从Calendar上面找。Calendar抽象类

Calendar cal = Calendar.getInstance();

Format()  格式化参数 %[argument number][flags][width][.precision]type

%符号: 把参数放在这里,若在%后加上,数字将以逗号分隔开,如476,578.10234

[argument number]: 如果要格式化的参数超过一个以上,可以在这里规定是哪一个。

[flags]: 特定类型的特定选项,例如数字里加逗号或正负号

[width]: 宽度,最小的字符数,不足补齐,可超过此宽度

[.precision]: 精确度

Type:   一定要指定的类型标识

Updated 2014/03/26 P300-P402

不是由编译器检查的RuntimeException的子类,被称为检查异常。编译器的检查异常和运行期间的异常都可以被捕获到

异常处理规则

1)  catch与finally不能没有try.

2)  try与catch之间不能有程序。

3)  try一定要有catch或finally。

4)  只带有finally的try必须要声明异常。

Void go() throws FooException{

Try{

x.doStuff();

}finally{  }

}

5)如果try或catch块有return 指令,finally 还是会执行!流程会跳到finally然后再回到return 指令

Graphics2D引用上可以做的事情比Graphics对象更多。

PaintComponent(Graphics g){}                  由g参数所引用的对象实际上是个Graphics2D的实例。

创建GUI四个步骤:

1)  创建Window(JFrame) JFrame frame = new JFrame();

2)  创建组件       JButton button = new JButton(“click me”);

3)  把组件加到frame上 frame.getContentPane().add(BorderLayout.EAST,button);

4)  显示出来  frame.setSize(300,300); frame.setVisible(true);

内部类可以使用外部所有的方法和变量

可以直接从外部类程序代码中初始化内部的类,也可以从外部类以外的程序代码来初始内部实例。

Class Foo{

Public static void main(String[] args){

MyOuter outerObj = new MyOuter();

MyOuter.MyInner innerObj = outObj.new MyInner();

}

}

《head first java 》读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. JAVA之经典Student问题1

    通过“三目运算符”求最大值与最小值. class student { //定义学生编号 private String stu; //学生姓名 private String name; //学生书信成绩 ...

  2. javascript函数没有重载测试

    今天继续学习javascript系列教程,虽然是基础,但我觉得还是有必要用心来学习的,不要怕难,不用怕忘记,不要怕学不会.哪个高手不是从零开始的,我要坚定自己的学习信心,并且认真的走下去.虽然路途艰辛 ...

  3. ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码

    实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ...

  4. 关于web请求中 获取真实IP

    HttpRequest request = HttpContext.Current.Request; if (!string.IsNullOrEmpty(request.ServerVariables ...

  5. Hibernate 拥有 Mybits 的SQL/HQL特性 (注解、XML两不误)

        第一次写博客.文章有点渣,喜欢就看看,不喜欢路过点个赞.     效果:直接一条语句多种用法     FROM User A    WHERE    1=1    <#if id??&g ...

  6. Codevs 5126 推销员 2015年NOIP全国联赛普及组

    5126 推销员 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死 ...

  7. What are Upgrade, Product and Package Codes used for? By pusu

    Following content is reprinted from here, please go to the original website for more information. Au ...

  8. Windows内存管理[转]

    本文主要内容:1.基本概念:物理内存.虚拟内存:物理地址.虚拟地址.逻辑地址:页目录,页表2.Windows内存管理3.CPU段式内存管理4.CPU页式内存管理 一.基本概念1. 两个内存概念物理内存 ...

  9. grails导入excel

    grails导入excel,意思是说从excel表中读取多条数据,批量写入数据库. 有2种方案,1是使用grails的excel插件,2是调用java代码使用POI等第三方java控件. 今天比较累, ...

  10. AngularJS(6)-选择框Select

    1.在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出 <!DOCTYPE html> <html lang=" ...