zoukankan      html  css  js  c++  java
  • 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方法,那么就是按照你自己的需求来比较的。

  • 相关阅读:
    声音走样
    Terrain
    输出循环小数
    解决代码中多余的空行
    与二进制有关的几道面试题
    反转一个整数
    DirectX常见编译错误及解决办法
    STLset
    Visual Studio Autoexpand Information for DirectX 9
    素数环谈代码优化
  • 原文地址:https://www.cnblogs.com/hzp0619/p/8672033.html
Copyright © 2011-2022 走看看