JAVA笔记2

Math类的使用(重点)

(1)数学操作类:该类没有构造函数,方法均为静态的

(2)掌握内容

A:成员变量

**E:比任何其他值都更接近e(即自然对数的底数)的double值。

**PI:比任何其他值都更接近pi(即圆的周长与直径之比)的double值。

B:成员方法

**static double abs(double a) 

返回 double 值的绝对值。返回绝对值

**static double ceil(double a) 

返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。 

**static double floor(double a) 

返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。 

**max:返回两个值中较大的那个

**min:返回两个值中较小的那个

**static long round(double a) 返回最接近参数的 long。

  static int round(float a) 返回最接近参数的 int。 

**static double random() 

返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 

**static double pow(double a, double b) 

返回第一个参数的第二个参数次幂的值。 

**static double sqrt(double a) 

 返回正确舍入的 double 值的正平方根。 

15、Random类的使用(重点)

(1)产生随机数的类

(2)掌握内容

A:构造方法

**Random() 创建一个新的随机数生成器。 

**Random(long seed) 使用单个 long 种子创建一个新的随机数生成器。

B:成员方法

**int nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 

**int nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、

在 0(包括)和指定值(不包括)之间均匀分布的 int 值。

16、Scanner类的使用

(1)可以获取从键盘的输入数据

(2)掌握内容

构造方法:

Scanner(InputStream source) 构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。

如:Scanner sc = new Scanner(System.in);

方法摘要

sc.nextInt();获取整型数据

sc.nextLine();获取字符串数据

17、继承(重点)

(1)把很多类的相同特征和行为进行抽取,用一个类来描述。让多个类和这个类产生一个关系。

   这样的话,多个类就可以省略很多代码。这个关系就是继承。java中用extends关键字表示。

(2)继承的体系结构

A:多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系。这个体系叫做继承体系。

B:继承体系的学习和使用原则

**学习顶层的内容。因为他是整个体系的共性内容。

**创建子类使用。也就是使用底层的具体对象。

(3)继承的特点:

A:java中只能单继承,没有多继承。

B:java可以有多重(层)继承。

(4)继承的好处:

继承的出现提高了代码的复用性。

继承的出现让类与类之间产生了关系,提供了多态的前提。

(5)子父类中的成员关系

A:成员变量

在子类方法中使用一个变量时:

首先,在方法的局部变量中找这个变量,有则使用。

否则,在本类中找成员变量,有则使用。

否则,在父类中找成员变量,有则使用。

否则,报错。

B:成员方法

用子类对象使用一个方法时。

首先,在子类中找这个方法,有则使用。

否则,在父类中找这个方法,有则使用。

否则,报错。

 

重写和重载的区别?

重载:在同一类中。方法名相同,参数列表不同。重载可以改变返回类型。

重写:在不同类中(子父类中)。

      方法声明相同(返回类型,方法名,参数列表均相同)。

重写需要注意:

**子类方法的访问权限要大于等于父类方法的访问权限。

**静态只能重写静态。但是这种情况一般不会出现。

 

构造方法

**子类的实例化过程

***子类创建对象时,会先去创建父类的对象。

    默认是去调用父类的无参构造方法。

***子类构造方法中,第一行默认是super()

***为什么子类中第一行会默认有super()

因为他继承父类的成员使用,使用前这些成员必须初始化,

而他们是父类的成员,所以,必须通过父类进行初始化。

所以,会先创建一个父类的对象。

**当父类没有无参构造方法时

必须使用this或者super调用其他的构造方法。

(6)this和super的区别

this:代表本类对象的引用。

super:代表父类的存储空间。

18、final关键字(重点)

(1)最终的意思,可以用于修饰类,方法,变量。

(2)final修饰的类不能被继承。

   final修饰的方法不能被重写。

   final修饰的变量是一个常量。只能被赋值一次。

   内部类只能访问被final修饰的局部变量。

19、抽象类(重点)

(1)多个类有相同的方法声明,但是方法体不一样。这个时候,我们考虑把方法声明进行抽取。

   让子类继承后,自己去实现方法体。没有方法体的方法,我们需要用抽象标志下。

   抽象的关键字是:abstract。

(2)抽象类:

该方法称为抽象方法,包含抽象方法的类就是抽象类。

(3)抽象类的特点:

A:抽象类和抽象方法都要用abstract进行修饰

B:抽象类不能被实例化

C:抽象类中不一定有抽象方法,但是,有抽象方法的类一定是抽象类。

(4)抽象类中数据的特点

A:成员变量

抽象类中可以有变量,也可以有常量。

B:成员方法

抽象类中可以有抽象方法,也可以有非抽象方法。

C:构造方法

抽象类是一个类,所以,它有构造方法。

虽然本身不能实例化。但是可以给子类实例化使用。

(5)抽象类中的问题

A:抽象类中是否有构造方法?能不能被实例化?如果不能,为什么有构造方法?

  抽象类有构造方法。

          抽象类不能被实例化。

  抽象类中的构造方法供子类实例化调用。

B:抽象关键字abstract不可以和哪些关键字共存?

  **private:

私有内容子类继承不到,所以,不能重写。

但是abstract修饰的方法,要求被重写。两者冲突。

          **final

final修饰的方法不能被重写。

而abstract修饰的方法,要求被重写。两者冲突。

  **static

假如一个抽象方法能通过static修饰,那么这个方法,就可以直接通过类名调用。

而抽象方法是没有方法体的,这样的调用无意义。所以,不能用static修饰。

C:抽象类中可不可以没有抽象方法?如果可以,这样的类有什么用吗?

  抽象类可以没有抽象方法。

  抽象类中没有抽象方法的作用,只是为了不让别的类建立该抽象类对象。这个在awt中有体现。

20、接口interface

(1)当一个类中的方法都是抽象的时候,java提供了另一种表示方式,叫接口。

   用interface关键字表示。类与接口关系用implements表示。

(2)接口的成员特点

A:成员变量

是常量,默认修饰 public static final

B:成员方法

都是抽象的,默认修饰 public abstract

(3)关系

A:类与类的关系

是继承关系。类与类只能单继承,可以多重继承。

B:类和接口的关系

是实现关系。类可以多实现接口。

类在继承一个类的同时,可以实现多个接口。

C:接口和接口的关系

是继承关系。接口可以多继承接口。

(4)接口的特点

A:是对外暴露的规则

B:是功能的扩展

C:接口的出现降低耦合性。

耦合(类与类之间的关系)

内聚(类完成功能的能力)

编程规范:低耦合,高内聚。

D:接口可以多实现。如:CPU和主板、笔记本的USB插口、插座

(5)接口和抽象类的区别

A:抽象类只能被单继承

   接口可以多实现,接口的出现避免了多继承的局限性。

B:抽象类中的数据特点:

成员变量:可以是变量,也可以是常量

成员方法:可以是抽象方法,也可以是非抽象方法

构造方法:有构造方法

   接口中的数据特点:

成员变量:是常量。默认修饰 public static final

成员方法:都是抽象方法。都有默认修饰 public abstract

构造方法:没有构造方法

C:抽象类中定义的是继承体系中的共性功能。

   接口中定义的是继承体系中的扩展功能。

D:抽象类被继承是"is a"关系:xx是yy的一种

   接口被实现是"like a"关系:xx像yy的一种

21、多态:

(1)同一个对象,在程序不同时刻的多种运行状态。举例:动物,狗是狗,狗是动物。水(气态,液态,固态)

(2)多态前提

A:存在着继承或者实现关系

B:有方法的重写

C:父类(接口)引用指向子类(实现)对象

(3)多态的好处和弊端:

好处:多态的存在提高了程序的扩展性和后期可维护性

弊端:虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容。

      不能预先使用子类中定义的特有功能。

(4)多态中对象调用成员的特点

Fu f = new Zi();

 

A:成员变量

编译看左边,运行看左边

B:成员方法 

编译看左边,运行看右边

C:静态方法

编译看左边,运行看左边

(5)多态的思想

指挥同一批对象做事情。举例:带兵打仗,下课等。

22、instanceof关键字

A:用于判断某个对象是否是某种类型。

B:格式

对象名 instanceof 子类(实现)名

23、Object类:

(1)是所有类的根类,超类。

   java中提供的类以及我们自定义的类都直接或者间接的继承自Object类。

(2)Object类中的方法

A:void finalize() 

  当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

B:Class getClass()

  获取对象的字节码文件的描述类,后面再讲反射的时候还会在说这个类。

  String name = s.getClass().getName();

C:int hashCode()

  获取对象的哈希值。其实就是对象的内存地址值十进制表示

D:String toString()

  返回对象的字符串表示。

  表示格式:

  getClass().getName()+"@"+Integer.toHexString(hashCode());

 

  一般我们输出对象名的时候,其实底层调用的就是该对象的toString()方法。

  这种返回没有意义,所以,我们会重写这个方法,显示类的成员变量信息。

E:boolean equals(Object obj)

  用于比较两个对象的地址值是否相同。

  我们获取对象后,比较它的地址值意义不大。所以也会对这个方法进行重写。

  重写要完成什么功能,是根据需求定的。

(3)==和equals的用法:

A:==怎么用?

**可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。

**可以用于比较引用数据类型,比较的是对象的地址值是否相等。

B:equals怎么用?

equals只能用于比较引用数据类型的。

**Object提供的equals是用于比较对象地址值是否相同。

**自定义类中,如果重写了equals方法,那么就是按照你自己的需求来比较的。

 

posted on 2018-03-29 19:56  黄志平  阅读(117)  评论(0编辑  收藏  举报

导航