toString:

1.每创建一个类时,都要重写 toString 方法,这是敲代码的基本素养;

2.重写规则:简单明了;

3.String 类中也有toString方法(SUN公司写的);

equals:

1.每创建一个类时,都要重写 equals 方法(因为 equals 方法比较的是地址,而我们需要比较对象的内容),这也是敲代码的基本素养;

2.作用:用来比较两个对象是否一致 / 相等;

3.重写规则:看自己的需求(你认为什么东西相等的时,对象相同);

注意:java 中比较基本数据类型大小一律用 “ == ” ,比较引用数据类型用 “ equals方法 ” ;

辅助理解代码;

  1. import java.util.Objects;
  2. class People{
  3. private int old;
  4. private String name;
  5. public People() {
  6. }
  7. public People(int old, String name) {
  8. this.old = old;
  9. this.name = name;
  10. }
  11. public int getOld() {
  12. return old;
  13. }
  14. public void setOld(int old) {
  15. this.old = old;
  16. }
  17. public String getName() {
  18. return name;
  19. }
  20. public void setName(String name) {
  21. this.name = name;
  22. }
  23. public String toString() {
  24. return "People{" +
  25. "old=" + old +
  26. ", name='" + name + '\'' +
  27. '}';
  28. }
  29. //两个人什么时候指的是同一个人?(在此类中只有年龄与名字两种属性的情况下)?那就年龄且名字相同呗
  30. public boolean equals(Object o) {
  31. //若导入的对象就是此对象,那肯定相同
  32. if (this == o) return true;
  33. //若导入的对象地址为空指针或者对象不是此类的实例,那肯定不同
  34. if (o == null ||!(o instanceof People)) return false;
  35. //执行到这里对象 o 一定是 people 的实例,所以可以直接进行向下转型
  36. People p = (People) o;
  37. return this.old == p.old && this.name.equals(p.name);
  38. }
  39. }
  40. class Room{
  41. //房间号
  42. private int no;
  43. //房间类型
  44. private String type;
  45. //房间是否空闲
  46. private boolean status;
  47. public Room() {
  48. }
  49. public Room(int no, String type, boolean status) {
  50. this.no = no;
  51. this.type = type;
  52. this.status = status;
  53. }
  54. public int getNo() {
  55. return no;
  56. }
  57. public void setNo(int no) {
  58. this.no = no;
  59. }
  60. public String getType() {
  61. return type;
  62. }
  63. public void setType(String type) {
  64. this.type = type;
  65. }
  66. public boolean isStatus() {
  67. return status;
  68. }
  69. public void setStatus(boolean status) {
  70. this.status = status;
  71. }
  72. public String toString() {
  73. return "Room{" +
  74. "no=" + no +
  75. ", type='" + type + '\'' +
  76. ", status=" + status +
  77. '}';
  78. }
  79. //俩个房间什么时候指的是同一房间?只要房间号相同,那必然就是一个房间呀
  80. public boolean equals(Object o) {
  81. if (this == o) return true;
  82. if (o == null ||!(o instanceof Room)) return false;
  83. Room r= (Room) o;
  84. return this.no==r.no;
  85. }
  86. }
  87. public class 重写equals {
  88. public static void main(String[] args) {
  89. People p1=new People(10,"张三");
  90. People p2=new People(20,"张三");
  91. People p3=new People(10,"李四");
  92. People p4=new People(10,"张三");
  93. System.out.println(p1.equals(p2)?"是同一人":"不是同一人");
  94. System.out.println(p1.equals(p3)?"是同一人":"不是同一人");
  95. System.out.println(p1.equals(p4)?"是同一人":"不是同一人");
  96. Room r1=new Room(101,"单人间",true);
  97. Room r2=new Room(101,"单人间",false);
  98. Room r3=new Room(201,"单人间",true);
  99. System.out.println(r1.equals(r2)?"是同一房间":"不是同一房间");
  100. System.out.println(r1.equals(r3)?"是同一房间":"不是同一房间");
  101. //简洁明了
  102. System.out.println(p1);
  103. //简洁明了
  104. System.out.println(r1);
  105. }
  106. }
  107. 运行结果:
  108. --------------------------
  109. 不是同一人
  110. 不是同一人
  111. 是同一人
  112. 是同一房间
  113. 不是同一房间
  114. People{old=10, name='张三'}
  115. Room{no=101, type='单人间', status=true}
  116. Process finished with exit code 0

Object 类中的 finalize ( ) 方法:

1.格式: protected void finalize ( ) throws Throwable   {   方法体    }

2.作用:可以类比静态代码块,因在类加载时,会执行静态代码块中的的代码,所以又称为类加载时机;而在对象内存被垃圾回收器回收时,在其类体中的 finalize ( ) 方法就会执行,所以又叫做垃圾回收时机;

举个栗子:(当qq对象被垃圾回收器回收时,会输出:” qq即将被销毁 “)

  1. class qq{
  2. protected void finalize() throws Throwable {
  3. System.out.println("qq即将被销毁!");
  4. }
  5. }

package与import:
1.package:出现在 java源文件的第一行;格式: package + 包名;

2.import:出现在所有类之上;格式:import + 完整类名 / 包名 . * ;  ,例如:import  java . util . Scanner ;//完整包名,或写成  import  java . util . *  ;//都可以访问” Scanner “类;

3.注意:导包中的 “ * ” 只限于类名,例如:import java.* ; //这样就是错误的;

  访问权限修饰符(按权限大小排序):

修饰对象:属性(4个都行)/方法(4个都行)/类(public / 默认 )/接口(public / 默认)

内部类:

1.分类:静态内部类(类似于静态变量);实例内部类(类似于实例变量);局部内部类(类似于局部变量);

2.由于内部类的缺点(代码可读性差;类没有名字,无法重复使用),所以内部类几乎不用;

3.就匿名内部类稍微记一下:

  1. public class pra{
  2. public static void main(String[] args) {
  3. //对Math对象中的sum方法进行重写,正常应该找一个子类继承Math,再对其方法进行重写,但也可以通过匿名内部类的方法覆盖对其进行重写:
  4. int z=new Math(){
  5. public int sum(int x, int y) {
  6. return x+y;
  7. }
  8. }.sum(1,2);
  9. System.out.println(z);
  10. }
  11. }
  12. class Math {
  13. public int sum(int x,int y){
  14. return 0;
  15. }
  16. }
  17. 运行结果:
  18. ------------------
  19. 3
  20. Process finished with exit code 0

随笔:

1..Object 类中的 hashCode 方法:

1)格式: public native int hashCode ( ) ;   (native 表示底层调用C++程序)

2)作用:通过 哈希算法 运算对象内存地址得到的一个值;

举个栗子:

  1. public class pra{
  2. public static void main(String[] args) {
  3. Math math1=new Math();
  4. System.out.println(math1.hashCode()+"------将math1储存的对象内存地址通过哈希算法得到的值");
  5. Math math2=new Math();
  6. System.out.println(math2.hashCode()+"------将math2储存的对象内存地址通过哈希算法得到的值");
  7. }
  8. }
  9. class Math {
  10. }
  11. 运行结果:
  12. -------------------
  13. 1163157884------将math1储存的对象内存地址通过哈希算法得到的值
  14. 1956725890------将math2储存的对象内存地址通过哈希算法得到的值
  15. Process finished with exit code 0

由于博主目前只是一只猿宝宝,所以有些地方可能说的有些片面,若前辈们能够指点一二就更好了      (~ ̄(OO) ̄)ブ

【JAVA】笔记(6)--- toString方法;equals方法;finalize方法;package与import;内部类;的更多相关文章

  1. [java]final关键字、finally关键字与finalize()方法

    final关键字: final关键字通常指的是“无法改变的”,使用“无法改变”这样修饰可能出于两个原因:设计或者效率. final可以修饰变量.方法和类. 一.final变量 一个既是static又是 ...

  2. Java 声明和访问控制(三) finalize方法 成员访问修饰符

    finalize()方法是Object类的一个方法,在垃圾回收器执行的时候,会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如文件关闭等. 成员访问修饰符: 默认访问:包访问 ...

  3. String类型中ToString hashCode equals compareTo等方法的经典实现

    private final char value[]; private int hash; // Default to 0 public String(String original) { this. ...

  4. Java笔记4-do while循环,break,修饰符,方法的调用

    do while循环语法:do{ //循环体}while(条件表达式); 注:它是先执行循环体,后再判断的循环结构. 如:int i = 0;do{ System.out.println(" ...

  5. Java提高篇——equals()与hashCode()方法详解

    java.lang.Object类中有两个非常重要的方法: 1 2 public boolean equals(Object obj) public int hashCode() Object类是类继 ...

  6. java的finalize()方法与C++的析构函数

    ---<java编程思想> 读书笔记 --- 2017/3/15 读<java编程思想>读到初始化与清理一章,文中提及java的finalize()方法,联想到了C++的析构函 ...

  7. Java finalize方法使用

    <JAVA编程思想>: Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize(). (1).对象不一定会被回收. (2).垃圾回收不是析构函数. ( ...

  8. java finalize方法总结、GC执行finalize的过程

    注:本文的目的并不是鼓励使用finalize方法,而是大致理清其作用.问题以及GC执行finalize的过程. 1. finalize的作用 finalize()是Object的protected方法 ...

  9. java的finalize方法使用

    1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法. finalize()与C++中的析构函数 ...

  10. Java类的finalize()方法

    Java的Object类提供了一个finalize()方法,签名如下: protected void finalize() throws Throwable { } 该方法在JVM进行垃圾回收时之行, ...

随机推荐

  1. YbtOJ#883-最大的割【带修线性基】

    正题 题目链接:http://www.ybtoj.com.cn/contest/118/problem/3 解题思路 给出\(n\)个点,\(m\)次动态插入一条无向边询问:割掉一些边使得图中至少两点 ...

  2. Jmeter压测学习3---通过正则表达式提取token

    上一个随笔记录的是用json提取器提取token,这个随笔记录用正则表达式提取token 一.添加正则表达式 登录右击添加->后置处理器->正则表达式提取器 正则提取器参数说明: 要检查的 ...

  3. kubelet源码分析——监控Pod变更

    前言 前文介绍Pod无论是启动时还是关闭时,处理是由kubelet的主循环syncLoop开始执行逻辑,而syncLoop的入参是一条传递变更Pod的通道,显然syncLoop往后的逻辑属于消费者一方 ...

  4. MySQL学习总结:提问式回顾 undo log 相关知识

    原文链接:MySQL学习总结:提问式回顾 undo log 相关知识 1.redo 日志支持恢复重做,那么如果是回滚事务中的操作呢,也会有什么日志支持么? 也回滚已有操作,那么就是想撤销,对应的有撤销 ...

  5. eclipse下载安装

    1.下载 网址:https://www.eclipse.org/downloads/ 找到:eclipse-inst-jre-win64.exe 下载... 2.安装 找到-->Eclipse ...

  6. Rclone使用教程 - 挂载Onedrive和谷歌网盘

    1. 介绍 Rclone 是一个用于多个云平台之间同步文件和目录的命令行工具,其支持多种运营商网盘. 官网网址:https://rclone.org 开源地址:https://github.com/n ...

  7. ArcPy数据列表遍历

    ArcPy数据列表遍历 批处理脚本的首要任务之一是为可用数据编写目录,以便在处理过程中可以遍历数据. ArcPy 具有多个专为创建此类列表而构建的函数. 函数 说明 ListFields(datase ...

  8. pip安装加速

    PIP国内镜像源 名称 源地址 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/s ...

  9. 3D渲染

    3d渲染的本质是在三维坐标系中绘制很三角形,用三角形拼成物体,然后投影到二维图像上,所以做渲染就是画好这些三角形;3d渲染输入的是很多三角形的3个顶点和属性,输出的是一张2d图.画好三角形要研究给三角 ...

  10. [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上)

    [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 目录 [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 0x00 摘要 0x01 总体逻辑 0x02 废弃 ...