Java 中的一些知识点

Java 中的一些知识点

与C++相关【了解的不是很多】

  • 在Java程序中:一个方法以 ; 结尾,并且修饰符列表中有 native 关键字

  • 代表:底层调用C++写的dll程序【dll动态连接库文件】

toString方法

  • 来源:

    toString方法源自 java.lang.Object 中的方法

  • 因为所有的类默认继承Object所有,几乎所有类都有toString方法

  • toString方法实现

    // 以下是官方原文
    public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
    // 返回:类名字@哈希加密的内存地址
    }
  • toString方法的作用是什么?

    作用:将“java对象”转换“字符串形式”

  • toString方法的特性

    System.out.println(引用.toString());
    等价
    System.out.println(引用);
  • toString方法的价值:一般用于重写后用在开发时,数据的打印查看

    示例:

    public class ToStringTest {
    public static void main(String[] args) {
    MyDate date1 = new MyDate();
    MyDate date2 = new MyDate(2022, 1, 18);
    // toString()方法已经重新
    System.out.println(date1.toString());
    System.out.println(date1);
    System.out.println(date2.toString());
    System.out.println(date2);
    }
    }
    class MyDate {
    private int year;
    private int month;
    private int day;
    public MyDate() {
    this(1970,1,1);
    }
    public MyDate(int year, int month, int day) {
    this.year = year;
    this.month = month;
    this.day = day;
    }
    public String toString() {
    return this.year + "年" + this.month + "月" + this.day + "日";
    }
    }

super

  • super 是一个关键字

  • super和this对比学习

    this:

    • this能够出现在实例方法和构造方法中

    • this的语法是: this.this()

    • this不能使用在静态方法中

    • this. 大部分情况都可以省略

    • this. 什么时候不可以省略?

      public void setName(string name){
      this.name = name;
      }
    • this() 只能出现在构造方法第一行,通过当前的构造方法去调用“本类”中的其他构造方法

    super:

    • super能够出现在实例方法和构造方法中

    • super的语法是: this.this()

    • super不能使用在静态方法中

    • super. 大部分情况都可以省略

    • super. 什么时候不可以省略?

      如果父类和子类中有重名属性,你需要访问父类则必须使用 super.

    • super() 只能出现在构造方法第一行,通过当前的构造方法去调用“父类”中的其他构造方法;目的:构建子类对象的时候,先初始化父类特征

  • super()

    表示通过子类的构造方法调用父类的构造方法

  • 重要结论:

    当一个构造方第一行,没有this()或super()的话,会默认存在一个super()【无参】

    一个类如果手动提供一个构造方法,那么无参数构造系统将不再提供

  • 注意:this()与super()不共存

  • super(实参列表)初始化当前对象的父类型特性

总结

this: 本类

super: 当前类的父类

可以使用super访问或调用在当前类中被覆盖的方法和属性【注意静态问题,super是相对与this】

可以粗浅的理解:super相当于当前类的父类的this【并不准确,下面测试】

// 测试
public class Test{
public static void main(String[] args){
Test test_1 = new Test();
test_1.doSome();
}
// 实例方法
public void doSome(){
// Test@2f89e2d1
System.out.println(this);
// println输出 "引用" 默认调用toString()方法
System.out.println(super); // 报错
}
}

通过这个测试得出的结论:

  • super 不是引用,不保存内存地址,也不指向任何对象
  • super 只是代表当前对象内部的那一块父类型的特征
posted @   sha0dow  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示