Java开发基础(二)

Java开发基础(二)


文章系观看尚硅谷视频所写,侵删

文章目录

  • Java开发基础(二)
  • Part1
  • Part2
  • Part3
  • part4


Part1

  1. == 运算符
    (1)可以使用在基本数据类型和引用数据类型中。
    (2)基本数据类型比较的是保存的数据是否相等(有自动类型提升)、引用数据类型比较的是地址值是否相同。
  2. object类中的equals() 方法
    (1)是一个方法,不是运算符,只适用于引用数据类型
    (2)Object类中定义的equals()方法和==的作用是相同的,即比较两个对象的地址值
    (3)像string、date、file、包装类等都重写了object类中的equals()方法。重写以后比较的是实体内容是否相同
    (4)可以像String里面一样重写equals()函数。放在咱们自定义的类中,实际开发中可以用编译器自动生成。
  3. object类中的toString()方法
    (1)当我们输出一个对象的引用时,实际上就是调用当前对象得toString()。
    (2)像String、Date、File、包装类都重写了Object类中的toString()方法,调用时,返回实体内容。
    (3)与equals()方法一样,自定义类也可以重写toString,像String一样。
  4. Java中得JUnit单元测试
    (1)步骤:
    1.首先需要导入JUnit得相关包;
    2.创建Java类,进行单元测试,此时Java类的要求:public,提供公共的无参构造器(不用新建构造器,用默认的就好,这个类就是拿来做测试的,不是用来创建对象的);
    3.此类中声明单元测试方法,方法的权限是public,没有返回值,没有形参。此单元测试方法上需要声明注解: @Test ,并在单元测试类中导入: import org . junit. Test;
    4.声明好单元测试方法以后,就可以在方法体内测试相关的代码;
    5.写完代码以后,左键双击单元测试方法名,右键: run as - JUnit Test。
    (2)说明:
    1.如果执行结果没有任何异常:绿条
    2.如果执行结果出现异常:红条
  5. 包装类(Wrapper)的使用
    (1)包装类是针对八种基本数据类型定义的相应的引用数据类型,使得基本数据类型的变量具有类的特征。
    (2)基本数据类型—》包装类:调用包装类的构造器。Integer in1 = new Integer(num1);实际上可以用自动装箱:Integer in1 = num1。
    (3)包装类— >基本数据类型:调用包装类的xxxValue( )。也可以用自动拆箱,也可以直接赋值。
    (4)基本数据类型、包装类—》String类型:调用String重载的valueOf(xxx)
    (5)String类型— >基本数据类型、包装类:调用包装类的parseXxx(String S )
    (6)Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[] ,保存了从-128到127范围的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在-128~127范围内时,可以直接使用数组中的元素,不用再去new了。目的:提高效率
  6. static 关键字
    (1)static 可以用来修饰:属性、方法、代码块、内部类
    (2)static属性存在方法区中方法区一般放:类的加载信息、静态域、常量池
    (3)静态的方法中,只能调用静态的方法和属性。不能使用this关键字和super关键字
    (4)一般开发中,如果属性可以被多个对象共享,不随着对象不同而不同,就设为static的,类中的常量也常常声明为static。此外,操作静态属性的方法通常设为静态的,工具类中的方法也一般设为静态的。
  7. 单例设计模式(要求会写)
    (1)定义:所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。
    (2)饿汉式和懒汉式
    饿汉式:
    坏处:对象加载时间过长。
    好处:饿汉式是线程安全的
    懒汉式:
    好处:延迟对象的创建。
    目前的写法坏处:线程不安全。— >到多线程内容时,再修改
  8. main()方法的使用说明:
    (1)main()方法也可以作为普通的静态方法,比如可以在不同类创建相同的main()方法,只是运行的时候需要选择哪个是入口。
    (2)main()方法也可以作为与控制台交互的方式

Part2

  1. 代码块(初始化块、主要用于赋值和初始化或者用来放执行语句)
    (1)作用:初始化类、对象
    (2)只能用static来修饰,因此代码块分为静态和非静态。
    (3)静态代码块:
    内部可以有输出语句
    随着类的加载而执行,而且只执行一次
    多个静态代码块,按照定义的先后顺序执行
    静态代码块内只能调用静态属性和静态方法
    作用:初始化类的信息
    (4)非静态代码块
    内部可以有输出语句
    随着对象的创建而执行
    每创建一个对象, 就执行一次非静态代码块
    作用:可以在创建对象时,对对象的属性等进行初始化
  2. 对属性可以赋值的位置:
    ①默认初始化
    ②显式初始化
    ③构造器中初始化
    ④有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值
    ⑤在代码块中赋值
    由父及子,静态先行,代码块早于构造方法。
    执行的先后顺序:①-②/⑤-③-④
  3. final 关键字
    (1)可以用来修饰:类、方法、变量
    (2)final用来修饰一 个类:此类不能被其他类所继承。比如: String类、 System类、StringBuffer类
    (3)final用来修饰方法:表明此方法不可以被重写。比如: Object类中getClass();
    (4)final用来修饰变量:此时的"变量"就称为是一个常量
    final修饰属性: 可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化
    final修饰局部变量:
    尤其是使用final修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值
    以后,就只能在方法体内使用此形参,但不能进行重新赋值。
    (5)static final用来修饰属性:全局常量

Part3

  1. abstract 关键字的使用
    (1) abstract可以用来修饰的结构:类、方法
    (2)abstract修饰类:抽象类
    此类不能实例化
    抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)
    开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作
    (3)abstract修饰方法: 抽象方法
    抽象方法只有方法的声明,没有方法体
    包含抽象方法的类,一 定是一个抽象类。反之,抽象类中可以没有抽象方法的。
    若子类重写了父类中的所有的抽象方法后,此子类方可实例化
    若子类没有重写父类中的所有的抽象方法,则此子类也是一个抽象类, 需要使用abstract修饰
    (4)abstract不能用来修饰:属性、构造器等结构
    abstract不能用来修饰私有方法、静态方法、final的方法、final的类
    (5)抽象类的匿名子类(与匿名对象对比),主要是为了省事儿。
  2. 四大组件
    数据结构和算法:大话数据结构,剑指offer,刷题。
    计算机网络:TCP/IP详解
    操作系统:深入理解操作系统
    设计模式:大话设计模式
  3. 抽象类的应用:模板方法的设计模式
  4. 接口:
    (1)接口用interface 来定义,Java中,接口和类是并列的两个结构
    (2)如何定义接口:定义接口中的成员
    4.2.1 JDK7及以前: 只能定义全局常量和抽象方法
    全局常量: public static final的。 但是书写时,可以省略不写
    抽象方法: public abstract的
    4.2.3 JDK8: 除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法(略)
    (3)接口中不能定义构造器的! 意味着接口不可以实例化
    (4)Java开发中, 接口通过让类去实现( implements )的方式来使用.
    如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化
    如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为-一个抽象类
    (5)Java类可以实现多个接口 — >弥补了Java单继承性的局限性
    格式: class AA extends BB implements CC,DD, EE
    (6)接口与接口之间可以继承,而且可以多继承
    (7)接口的具体使用,体现多态性
    (8)接口,实际上可以看做是一种规范
    (9)创建接口匿名实现类的对象
    (10) 接口应用:代理模式、接口模式
  5. JDK8 接口新特性:
    (1)除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法
    (2)知识点1:接口中定义的静态方法,只能通过接口来调用。
    (3)知识点2:通过实现类的对象,可以调用接口中的默认方法。可以重写,调用时是重写后的方法
    (4)知识点3:如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,
    那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法。-- >类优先原则
    (5)知识点4:如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,
    那么在实现类没有重写此方法的情况下,报错。-- >接口冲突。这就需要我们必须在实现类中重写此方法
    (6)知识点5:如何在子类(或实现类)的方法中调用父类、接口中被重写的方法

part4

  1. 内部类
    (1)分类:成员内部类(静态、非静态) 和 局部内部类(方法内、代码块内、构造器内)
    (2)成员内部类:
    一方面,作为外部类的成员:
    调用外部类的结构
    可以被static修饰
    可以被4种不同的权限修饰
    另一方面,作为一个类:
    类内可以定义属性、方法、构造器等
    可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承
    可以被abstract修饰
    (3)关注以下三个问题
    如何实例化成员内部类的对象(静态的和非静态的注意区分)
    如何在成员内部类中区分调用外部类的结构(this.name 、Person.this.name)
    开发中局部内部类的使用
  2. 异常
    (1)常见异常举例要会
    (2)try catch finally
    finally是 可选的。
    使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常, 就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配
    一旦try中的异常对象匹配到某一 个catch时,就进入catch中进行异常的处理。一旦处理完成,就跳出当前的try-catch结构(在没有写finally的情况)。继续执行其后的代码
    catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓。
    catch中的异常类型如果满足子父类关系,则要求子类- -定声明在父类的上面。否则,报错
    常用的异常对象处理的方式:①String getMessage( ) ②printStackTrace( )
    在try结构中声明的变量,在出了try结构以后,就不能再被调用
    (4)finally
    finally中声明的是一定会被执行的代码。即使catch中又出现异常了,try中有return语句,catch中有
    return语句等情况。
    像数据库连接、输入输出流、网络编程Socket等资源,JVM是不能自 动的回收的,我们需要自己手动的进行资源的
    释放。
    (5)
    体会1:使用try-catch-finally处理编译时异常,是得程序在编译时就不再报错,但是运行时仍可能报错。
    相当于我们使用try-catch-finally将-个编译时可能出现的异常,延迟到运行时出现。

体会2:开发中,由于运行时异常比较常见,所以我们通常就不针对运行时异常编写try-catch-finally了。
针对于编译时异常,我们说一定要考虑异常的处理。
(6)异常处理的方式二: throws +异常类型
1."throws +异常类型"写在方法的声明处。指明此方法执行时,可能会抛出的异常类型。
一旦当方法体执行时,出现异常,仍会在异常代码处生成-一个异常类的对象,此对象满足throws后异常
类型时,就会被抛出。异常代码后续的代码,就不再执行!
2.体会: try-catch-finally :真正的将异常给处理掉了。
throws的方式只是将异常抛给了方法的调用者。并没有真正 将异常处理掉。
(7)开发中如何选择使用try-catch-finally还是使用throws?
如果父类中被重写的方法没有throws方式处理异常,则子类重写的方法也不能使用throws,意味着如果
子类重写的方法中有异常,必须使用try-catch-finally方式处理。
执行的方法a中,先后又调用了另外的几个方法,这几个方法是递进关系执行的。我们建议这几个方法使用throw
的方式进行处理。而执行的方法a可以考虑使用try-catch-finally方式进行处理。
(8)也可以手动抛出异常,用throw
(9)如何自定义异常类?
1.继承于现有的异常结构: RuntimeException 、Exception
2.提供全局常量: serialVersionUID
3.提供重载的构造器

你可能感兴趣的:(Java,java)