继承与Object

一.继承

Java语言的继承:单继承

1.类和类之间的关系

(1)组合关系

公司和员工,学校和学生

(2)继承关系

学生和人

二.Object类

public class Object {private static native void registerNatives();static {registerNatives();}
1.finalize()

对象被JVM回收的一定会自动调用。

~当对象已满

while (true) {A a = new A();
}

规则:当对象没有任何引用何其关联

A a = new A();

a = null;

package com.ffyca.entity;public class A {public void finalize() throws Throwable {System.out.println("我悄悄的走了,不带走一片树叶...");}
}
package com.ffyca.Test;import com.ffyca.entity.A;public class TestA {public static void main(String[] args) {A a = new A();a = null;System.gc();}
}
2.toString()

Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

System.out.println(c1);
System.out.println(c1.toString());
3.hashcode()

对象的一个唯一值,用来快速定位内存地址

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap. The general contract of hashCode is: Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. It is not required that if two objects are unequal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables. As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the Java™ programming language.)
4.==

判断两个引用是否指向同一个对象。

5.equals
public boolean equals(Object obj) {return (this == obj);}

判断内容相等

==比较的是字符串的地址,但因为有字符串常量池的存在,故str1,str2指向的地址是相同的,所以返回true

如果是以new String("java")的方式创建对象,那么无论内容是否相等,==判断返回的都是false

改写equals()

写一个汽车类:汽车牌号,品牌,价格,颜色

我们认为:如果两个汽车的牌号相同那么汽车相等

a.equals(b)

 Tip:尽量不要手写equals和hashcode

 

package com.ffyca.entity;import java.util.Objects;public class Car {private String num;private String brand;private double price;private String color;public String getNum() {return num;}public void setNum(String num) {this.num = num;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public Car(String num, String brand, double price, String color) {this.num = num;this.brand = brand;this.price = price;this.color = color;}@Overridepublic boolean equals(Object obj) {Car c2 = (Car)obj;String s1 = this.getNum();String s2 = c2.getNum();return s1.equals(s2);}@Overridepublic String toString() {return "Car{" +"num='" + num + '\'' +", brand='" + brand + '\'' +", price=" + price +", color='" + color + '\'' +'}';}
}
package com.ffyca.Test;import com.ffyca.entity.Car;public class TestCar {public static void main(String[] args) {Car car1 = new Car("陕F12345","BWM",2000000.0,"绿色");Car car2 = new Car("陕F12345","BWM",2000000.0,"绿色");System.out.println(car1.equals(car2));}
}

四.final关键词

1.修饰引用

c永远绑定此对象

final Car c = new Car();

2.变量

a永远是3

final int a = 3;

3.属性

只能通过构造器,或者属性直接给值

public class E{private final int a;
}

4.class

不能被继承

public final class E {
}

5.方法

子类,实现类不能重写的方法

public final void run(){}

五.接口企业中的应用

1.定规则

2.常量

public interface Constants {int SUNDAY = 7;int LAST_MONDAY = 1;
}

六.String

1.包

java.lang包下的类会自动引用

2.类

3.内部实现

4.StringBuilder

提高字符串的拼接能力

StringBuilder sb = new StringBuilder();
sb.append("hello");long s1 = System.currentTimeMillis();
for (int i=0;i<1000000;i++){sb.append(" world");
}
long s2 = System.currentTimeMillis();
System.out.println("时间:"+(s2-s1)+"ms")

5.String常用的api

(1)将基本类型转换为字符串

Integer.parseInt(str)

Double.parseDouble(str)

char[] s = {'s','a','p','t'};String t = String.valueOf(s,0,3);  System.out.println(t);

(2)字符大小转换,空格处理

(2.1)空格处理

输入时不小心多输入空格

username: admin

过滤掉前后空格 trim()

(2.2)大小转换

        String str ="apple";str = str.toUpperCase();System.out.println("str:"+str);

3.字符串截取

substring(int,int);

包头不包尾,索引从0开始

substring(int);

substring(int,int);的重载方法,从当前索引位置一直截取到字符串的末尾

  String str = "1000-赵云-蜀国-武将";  System.out.println(str.substring(8));      System.out.println(str.substring(8, 10));

4.查找子字符串

5.拆分字符串

把字符串按照某个指定内容分割成多个字符串,返回一个字符串数组

6.startwith

public class StringTest06 {public static void main(String[] args) {String str = "hello,this is beautiful HanZhong";String str2 = "xuexiao.jpgx";        System.out.println(str.startsWith("this"));        if(str2.endsWith(".jpg")||str.endsWith(".png")||str.endsWith(".bmp")){            System.out.println("是图片");}else {System.out.println("其它文件");}}
}

7.替换

8.正则表达式

(1)[a-z]

a-z的其中一个字符

(2)[0-9]

[0-9]的一个数字

[0-9]{17}[0-9Xx]

(3){n}

前面的数据出现的次数

[0-9Xx]:数字0-9或者X或者x

(4){m,n}

9.charAt()

获取某个索引位置的字符

String str = "apple";
System.out.println(str.charAt(3));//"p"

10.contains()

判断字符串中是否包含str

public class StringTest03 {public static void main(String[] args) {String str = "01234567";System.out.println(str.contains("2"));}
}

11.toCharArray()

将字符串转换为字符数组

public class StringTest03 {public static void main(String[] args) {String str = "01234567";char[] chars = str.toCharArray();for (int i = 0;i < chars.length;i++){System.out.println(chars[i]);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA时钟:驱动数字逻辑的核心

一、引言 在FPGA&#xff08;现场可编程门阵列&#xff09;设计中&#xff0c;时钟信号是不可或缺的关键要素。时钟信号作为时序逻辑的心跳&#xff0c;推动着FPGA内部各个存储单元的数据流转。无论是实现复杂的逻辑运算还是处理高速数据流&#xff0c;都需要精确的时钟信号来保…

Vanna使用ollama分析本地MySQL数据库

上一章节中已经实现了vanna的本地运行&#xff0c;但是大模型和数据库都还是远程的&#xff0c;因为也就没办法去训练&#xff0c;这节一起来实现vanna分析本地mysql数据库&#xff0c;因为要使用本地大模型&#xff0c;所以开始之前需要给本地安装好大模型&#xff0c;我这里用…

WPF/C#:理解与实现WPF中的MVVM模式

MVVM模式的介绍 MVVM&#xff08;Model-View-ViewModel&#xff09;是一种设计模式&#xff0c;特别适用于WPF&#xff08;Windows Presentation Foundation&#xff09;等XAML-based的应用程序开发。MVVM模式主要包含三个部分&#xff1a;Model&#xff08;模型&#xff09;、…

期权具体怎么交易详细的操作流程?

期权就是股票&#xff0c;唯一区别标的物上证指数&#xff0c;会看大盘吧&#xff0c;交易两个方向认购做多&#xff0c;认沽做空&#xff0c;双向t0交易&#xff0c;期权具体交易流程可以理解选择方向多和空&#xff0c;选开仓的合约&#xff0c;买入开仓和平仓没了&#xff0…

【Spring Cloud】API网关

目录 什么是API网关为什么需要API网关前言问题列表 API网关解决了什么问题常见的网关解决方案NginxLuaSpring Cloud Netflix ZuulSpringCloud Zuul的IO模型弊端 Spring Cloud Gateway 第二代网关——GatewayGateway的特征Spring Cloud Gateway的处理流程Spring Cloud Gateway的…

轻兔推荐 —— vfox

简介 vfox 是一个跨平台且可扩展的版本管理工具&#xff0c;终于有一个可以管理所有运行环境的工具了 - 支持一键安装 Java、Node.js、Flutter、.Net、Golang、PHP、Python等多种环境 - 支持一键切换不同版本 特点 支持Windows(非WSL)、Linux、macOS! 支持不同项目不同版本、…

22.Volatile原理

文章目录 Volatile原理1.Volatile语义中的内存屏障1.1.volatile写操作的内存屏障1.1.1.StoreStore 屏障1.1.2.StoreLoad 屏障 1.2.volatile读操作的内存屏障1.2.1.LoadStore屏障1.2.2.LoadLoad屏障 2.volatile不具备原子性2.1.原理 Volatile原理 1.Volatile语义中的内存屏障 在…

APM2.8如何做加速度校准

加速度的校准建议准备一个六面平整&#xff0c;边角整齐的方形硬纸盒或者塑料盒&#xff0c;如下图所示&#xff0c;我们将以它作为APM校准时的水平垂直姿态参考&#xff0c;另外当然还需要一块水平的桌面或者地面 首先用双面泡沫胶或者螺丝将APM主板正面向上固定于方形盒子上&…

JavaScrip原型对象

参考 JavaScrip原型对象 | LogDicthttps://www.logdict.com/archives/javascripyuan-xing-mo-shi

每天写两道(二)LRU缓存、

146.LRU 缓存 . - 力扣&#xff08;LeetCode&#xff09; 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存…

Revit——(2)模型的编辑、轴网和标高

目录 一、关闭缩小的隐藏窗口 二、标高&#xff08;可创建平面&#xff0c;其他标高线复制即可&#xff09; 三、轴网 周围的四个圈和三角表示四个里面&#xff0c;可以移动&#xff0c;不要删除 一、关闭缩小的隐藏窗口 二、标高&#xff08;可创建平面&#xff0c;其他标…

深入分析 Android Activity (二)

文章目录 深入分析 Android Activity (二)1. Activity 的启动模式&#xff08;Launch Modes&#xff09;1.1 标准模式&#xff08;standard&#xff09;1.2 单顶模式&#xff08;singleTop&#xff09;1.3 单任务模式&#xff08;singleTask&#xff09;1.4 单实例模式&#xf…

利用边缘计算网关的工业设备数据采集方案探讨-天拓四方

随着工业4.0时代的到来&#xff0c;工业设备数据采集成为了实现智能制造、提升生产效率的关键环节。传统的数据采集方案往往依赖于中心化的数据处理方式&#xff0c;但这种方式在面对海量数据、实时性要求高的工业场景时&#xff0c;往往显得力不从心。因此&#xff0c;利用边缘…

二叉树的链式结构(二叉树)与顺序结构(堆)---数据结构

一、树的概念与结构 1、树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。我们常把它叫做树&#xff0c;是因为它看起来像一棵倒挂的树&#xff0c;它的根是朝上的&#xff0c;而叶是朝下的。 下面…

每日复盘-20240528

今日重点关注&#xff1a; 20240528 六日涨幅最大: ------1--------300956--------- 英力股份 五日涨幅最大: ------1--------301361--------- 众智科技 四日涨幅最大: ------1--------301361--------- 众智科技 三日涨幅最大: ------1--------301361--------- 众智科技 二日涨…

联邦和反射器实验

拓扑图 一.实验要求 1.AS1存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能在任何协议中宣告 AS3存在两个环回&#xff0c;一个地址为192.168.2.0/24&#xff0c;该地址不能在任何协议中宣告 AS1还有一个环回地址为10.1.1.0/24&#xff…

[C][动态内存分配][柔性数组]详细讲解

目录 1.动态内存函数的介绍1.malloc2.free2.calloc4.realloc 2.常见的动态内存错误3.C/C程序的内存开辟4.柔性数组1.是什么&#xff1f;2.柔性数组的特点3.柔性数组的使用4.柔性数组的优势 1.动态内存函数的介绍 1.malloc 函数原型&#xff1a;void* malloc(size_t size)功能…

【PB案例学习笔记】-11动画显示窗口

写在前面 这是PB案例学习笔记系列文章的第11篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

颈源性头痛症状及表

颈源性头痛一般表现为&#xff0c;就是说从枕后一直颞侧&#xff0c;到太阳穴附近&#xff0c;这个是枕小的一个疼痛&#xff0c;还有一部分人从枕后&#xff0c;沿着一个弧线&#xff08;如下图&#xff09;的轨迹到了前额&#xff0c;到我们前额&#xff0c;这样一个疼痛&…

ADIL简单测试实例

参考资料&#xff1a;https://blog.csdn.net/geyichongchujianghu/article/details/130045373这个连接是Java的代码&#xff0c;我根据它的链接写了一个kotlin版本的。 AIDL&#xff08;Android Interface Definition Language&#xff09;是Android平台上用于进程间通信&…