Java学习笔记

来源:互联网 发布:便签同步软件 编辑:程序博客网 时间:2024/04/29 11:12

Java学习笔记

蒋明原

1.         Java中方法参数的使用情况

a)         一个方法不能够修改一个基本数据类型的参数(即布尔型和数值型)

b)        一个方法可以改变一个对象参数状态

c)        一个方法不能让一个对象引用另一个对象

2.         显式参数和隐式参数

public void raiseSalary(double byPercent) {

       double raise = salary * byPercent / 100;

       salary += raise;

}

下面的调用:

employee.raiseSalary(3);

这个调用具体点说是执行了下面的过程:

    double raise=employee.salary*byPercent/100;

    employee.salary+=raise;

raiseSalary方法有两个参数,第一个是出现在方法名前的Employee类对象employee,这个就是隐式参数.第二个参数是出现在方法名后括号内的数值3”,这是显式参数.

3.         方法的签名

方法的名字和参数列表被称为方法的签名.例如f(int)f(String)就是两个具有相同名字不同签名的方法。需要注意的是,返回类型不属于方法签名的一部分。

4.         重载

一个类中,若是有多个方法有相同的名字,但参数不同,这便产生了重载。

5.         Finalize

可以为任何一个类添加finalize方法,finalize方法将在垃圾回器清除对象之前被调用。

6.         类设计技巧

a)         一定将数据设计为私有

b)        一定要对数据进行初始化

c)        不要在类中使用过多的基本数据类型

d)        不是所有的域都需要独立的域访问器和域更改器

e)         使用标准格式进行类的定义(顺序如下)

                         i.              共有访问特性部分

                       ii.              报作用域访问特性部分

                      iii.              私有访问特性部分

f)         将职责过多的类进行分解

g)        类名和方法名应能体现出他们的职责

7.         覆盖(override)

超类中的某些方法对子类不一定适用,可以把这个方法在子类中进行改变(重新定义),这个过程就是覆盖(override).需要注意的是,子类方法的可见性不能低于父类的可见性。

8.         置换和多态

置换:在程序中出现超类对象的地方都可用子类的对象进行代替(置换).

多态:java语言中,对象变量是多态的.一个Employee类型变量(这是父类),既可以引用一个Employee类型对象,又可以引用一个Employee类的任意一个子类的对象,(Manager).

不能将一个超类的对象赋给子类。

9.         内联(inlining

如果一个没有被覆盖并且很短,编译器就能对它进行优化处理,这个过程就是内联。

比如:内联调用e.getName()将被替换成访问e.name

10.     抽象类、抽象方法

a)         包含一个或者多个抽象方法的类是必须被声明为抽象的。

b)        不能构造抽象类的对象。比如 abstract class A,是不能用于 A a=new A();

c)        若子类全部实现了抽象类中定义的抽象方法,那么子类不必声明为抽象的;若是没有全部实现抽象类中定义的抽象方法,那么子类也要定义为抽象的。

11.     Java中用于控制可见性的4个访问修饰符

a)         仅对本类可见:private

b)        对所有类可见:public

c)        对本包和所有子类可见:protected

d)        对本包默认可见:默认,就是不加任何的修饰符,这是一种糟糕的方式。不建议使用。

12.     ==的作用和equals的作用

a)         ==的作用是检测对象是否指向同一个存储区

b)        Equals的作用是检测两个对象是否相等.

13.     包装器

有时候需要将int这样的基本类型转换成对象.所有基本类型都有一个与之对应的类,Integer类对应int.通常将Integer这样的类成为包装器(wrapper)

14.     自动打包和拆包(装箱和拆箱)

比如: list.add(3)在编译器解释的时候会解释成list.add(new Integer(3));这种变换称为自动打包(装箱)。

比如:int a=list.get(i);在编译器编译的时候会解释成int a=list.get(i).intValue();这种变换成为自动拆包(拆箱)

15.     接口

接口主要描述类具有什么功能,而不是给出具体的实现.一个类可以实现多个接口,并在需要接口的地方随时使用实现了相应接口的对象..

接口不是类,而是一组对类的需求的描述.这些类药遵从接口描述的统一格式进行定义.

如果你的类遵循某个特定接口,那么我将履行这项服务是对接口的形象描述.

Arrays类中的sort方法承诺可以对对象数组进行排序,但是要求满足下列前途:对象所属的类必须实现了comparable接口.

16.     mvc

a)         模型:存储内容

b)        视图:显示内容

c)        控制器:处理用户输入

在设计模式中,模型存储完整的内容,视图给出了内容的可视化显示。模型就像一个给画家摆好pose的模特,此时取决于画家是如何看待模特的,并据此创作一幅画,可能是一幅水墨画,也可能是其它的。