2021-03-16

Java学习(五)

第五章 面向对象进阶

5.1 Object类

5.1.1 认识Object类

Java的类:一是Java基础类,二是自定义类。

External Librarys 存放了Java的类。

5.1.2 重写Object类
方法描述
public String toString()以字符串的形式返回该类的实例化对象信息
public boolean eauals(Object obj)判断两个对象是否相等
public native int hashCode()返回对象的散列码

原生toString()方法会返回对象的类名及散列值,直接打印对象默认调用toString()方法。

equals() 方法时通过内存地址对两个对象进行判断。String类对equals()完成了重写,一次比对字符串中的字符。

5.2 包装类

5.2.1 什么是包装类

Java的数据类型分为:8中基本数据类型和引用类型。

引用类型是通过构造函数new出来的对象。基本类型的数据不是对象,引用类型的数据才能称之为对象。

基本数据类型包装类(java.base\java.lang)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
5.2.2 装箱与拆箱

装箱是指将基本数据类型转为对应包装类对象;

拆箱是指将包装类对象转为对应的基本数据类型。

  1. public Type(type value)

    用来实例化包装类对象。

  2. public Type(String value)/public Type(char value)

    包装类有一个重载构造函数。Character类的重载构造函数为public Type(char value),其它类的重载构造函数为public Type(String value)。

    **注意:**Boolean类中只有当参数为true为真是,返回值为真。

  3. valueOf(type value)

    valueOf(type value)可以将基本数据类型转换为包装类。

  4. valueOf(String value)/valueOf(char value)

    重载方法valueOf(String value)/valueOf(char value),Character单独一个,其它一个。

拆箱是指将包装类对象转换为基本数据类型。

  1. *Value()

    将包装类转为基本数据类型

  2. parse*(String value)

    除Character类外,每一个包装类都有一个静态方法将字符串转为数据类型。

其它方法

toString(type value):每个包装类都有,可以将基本数据类型转为String类。

5.3 接口

5.3.1 什么是接口

面向接口编程就是将程序的业务逻辑进行分离,以接口的形式去对接不同的业务模块。

连接松散、不紧密叫做低耦合。

优点:

  • 能够最大县的的解耦,降低程序的耦合性;
  • 使程序易于扩展;
  • 有利于程序的后期维护
5.3.2 如何使用接口

创建接口文件,用class关键字标识类,用interface来表示接口。

public interface 接口名{

​ public 返回值 方法名(参数列表)

}

接口定义成员变量的条件:

  1. 不能定义private和protected修饰的成员变量;
  2. 接口中的成员变量在定义时必须被初始化;
  3. 接口的成员变量都是静态常量,即可以直接通过接口访问,同事值不能被修改。
package com.company.reinterface;

public interface MyInterface {
    public int ID = 0;
    String NAME= "";
    public void test();
}

实现类是指将接口实例化。

public class 实现类名 implements 接口名{

​ public 返回值 方法名(参数列表){

}

}

在实现类内部需要对接口的所有抽象方法进行实现,同时要求访问权限修饰符、返回值类型、方法名和参数列表完全一致。

一个实现类可以有多个接口。

5.3.3 面向接口编程的实际应用

例:见响应编程文件

5.4 异常

5.4.1 什么是异常

Java的错误大致分为:一是编译错误,二是运行时错误。

Java中的专门描述各种不同的运行时错误的类叫做异常类。包括Error和Exception。Error指系统错误,有Java虚拟机生成,我们编写的程序无法处理。Exception指程序运行期间出现的错误,我们编写的程序可以对其进行处理。

5.4.2 异常的使用

try{

//可能抛出异常

}eatch(异常对象){

//处理异常

}

try{

//可能抛出异常

}eatch(异常对象){

//处理异常

}finally{

//必须执行的代码}

一般会在finally中进行释放资源的操做。

5.4.3 异常类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BJm2QJSo-1615876727842)(E:\自学\java 编程\网课(海同网校)\网课\作业\20201-01-30\QQ截图20210131171334.png)]

Throwable有两个直接子类:Error和Exception,这两个类我们在上一节也提到过。Error表示系统错误,程序无法解决;Exception指程序运行时出现的错误,程序可以处理。Throwable、Error和Exception都存放在java.lang包中。
Error常见的子类有VirtualMachineError、AWTError、IOError。VirtualMachineError的常见的子类有StackOverflowError和OutOfMemoryError,用来描述内存溢出等系统问题。VirtualMachineError、StackOverflowError和OutOfMemoryError都存放在java.lang包中,AWTError存放在java.awt包中,IOError存放在java.io包中。

Exception常见的子类主要有IOException和RuntimeException,IOException存放在java.io包中,RuntimeException存放在java.lang包中。Exception类要重点关注,因为这部分异常是需要我们在编写代码的过程中手动进行处理的。
IOException的常用子类有FileLockInterruptionException、FileNotFoundException和FilerException,这些异常通常都是处理通过IO流进行文件传输时发生的错误,在后面IO流的章节我们会详细讲解。FileLockInterruptionException存放在java.nio.channels包中,FileNotFoundException存放在java.io包中,FilerException存放在javax.annotation.processing包中。以下这些类全部存放在java.lang包中*

RuntimeException的常用子类如下。
ArithmeticException:表示数学运算异常。
ClassNotFoundException:表示类未定义异常。
IllegalArgumentException:表示参数格式错误异常。
ArrayIndexOutOfBoundsException:表示数组下标越界异常。
NullPointerException:表示空指针异常。
NoSuchMethodError:表示方法未定义异常。
NumberFormatException:表示将其他数据类型转为数值类型时的不匹配异常。

5.4.4 throw和throws

使用throw是开发者主动抛出异常,作用于逻辑代码;

使用throws是开发者主动抛出异常,作用于方法。

不知道是啥异常就扔给Exception。

5.4.5 自定义异常类

看代码

5.5 综合练习

多练习,多熟悉。

2021-03-26 20:54:33,596 - Model - INFO - Epoch 1 (1/200): 2021-03-26 20:57:40,380 - Model - INFO - Train Instance Accuracy: 0.571037 2021-03-26 20:58:16,623 - Model - INFO - Test Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Best Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Save model... 2021-03-26 20:58:16,623 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 20:58:16,698 - Model - INFO - Epoch 2 (2/200): 2021-03-26 21:01:26,685 - Model - INFO - Train Instance Accuracy: 0.727947 2021-03-26 21:02:03,642 - Model - INFO - Test Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Best Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Save model... 2021-03-26 21:02:03,643 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 21:02:03,746 - Model - INFO - Epoch 3 (3/200): 2021-03-26 21:05:15,349 - Model - INFO - Train Instance Accuracy: 0.781606 2021-03-26 21:05:51,538 - Model - INFO - Test Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,538 - Model - INFO - Best Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,539 - Model - INFO - Save model... 2021-03-26 21:05:51,539 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 我有类似于这样的一段txt文件,请你帮我写一段代码来可视化这些训练结果
02-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HLY虎狼鹰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值