Java语言程序设计——篇八(1)

在这里插入图片描述

     🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿

Java常用核心类

  • 主要内容
    • Object: 终极父类
      • toString( )方法
      • equals( )方法
      • getClass( )方法
      • hashCode( )方法
      • clone( )方法
      • finalize( )方法
        • 实战演练
    • Math类
      • Math类的使用
        • 实战演练
      • random()方法的使用
        • 实战演练

主要内容

  ①Object: 终极父类
  ②Math类
  ③基本类型包装类
  ④日期/时间API

Object: 终极父类

  • Java语言中有一个名为java.lang.Object的特殊类,所有的类都是直接或间接地继承该类而得到的。
  • 定义类时,若没有用extends指明继承哪个类,编译器会自动加上extends Object。
  • Object 类中定义的方法:

public String toString( ) //返回对象的字符串表示
public boolean equals( Object obj) //比较对象是否与obj相等
public class<?> getClass() //返回对象所属的类所对应的Class对象
public int hashCode() //返回对象的哈希码值
protected Object clone() //创建并返回对象的一个副本
protected void finalize() //当对该对象没有引用时由垃圾回收器调用

toString( )方法

  • 调用对象的toString()方法可以返回对象的字符串表示
  • 如果在Employee类中没有覆盖toString()方法,执行以下代码:
 Employee emp = new Employee("刘明",30,5000);System.out.println(emp.toString());

可能产生类似下面的输出:

  com.demo.Employee@1db9742 //类完全限定名+@+16进制数据

在Employee类中覆盖 toString()方法

public String toString(){return  "员工信息:" + name +"  "+ age + "  "+ salary;}
System.out.println(emp.toString());
System.out.println(emp); //自动调用toString()方法输出结果都为:员工信息:刘明  30  5000.0

equals( )方法

equals()方法主要用来比较两个对象是否相等,使用格式为:

 obj1.equals(obj2)
equals()方法在Object类中的定义:public boolean equals(Object obj){return (this == obj); //比较引用是否相等}

相当于两个对象使用“==”号进行比较。

getClass( )方法

  • 返回运行时的对象所属的类所对应的Class对象。
  • 每当一个类被加载时,JVM就会自动为其生成一个Class对象。由于Class类没有构造方法,需要通过Object类的getClass()方法取得对象对应的Class对象。
  • getClass().getName()是用来返回Class对象所代表的具体对象的名称。

hashCode( )方法

  • hashCode()方法返回对象的哈希码(hash code)值,即对象在内存中的十进制地址。
  • 在覆盖Object类的hashCode()方法时,要保证相同对象的哈希码必须相同。
    覆盖时常调用java.util.Objects类的hash()方法
  • 可以使用不同算法生成对象的哈希码,例如,String类使用下面算法生成它的哈希码:
     int hash = 0;for(int i =0; i < length(); i++)hash = 31 * hash +charAt(i);//相同字符串的哈希码相同

clone( )方法

  • 使用Object类的clone()方法可以克隆一个对象,即创建一个对象的副本。
  • 要使类的对象能够克隆,类必须实现Cloneable接口。
  • clone()方法声明抛出CloneNotSupportedException异常。
  • clone()方法的返回类型为Object。

finalize( )方法

  • 在对象被销毁之前,垃圾回收器允许对象调用finalize( )方法进行清理工作,称为对象终结。
  • finalize( )方法的定义格式为:
protected void finalize( )  throws Throwable
  • 每个对象的finalize( )方法仅被调用一次。
实战演练

Object类中toString()、equals(Object obj)、hashCode()、getClass()、clone()方法使用

package shujia_test1;public class CsdN8_1 implements Cloneable {// Object类中toString()、equals(Object obj)、hashCode()、getClass()、clone()方法使用private int id; // 编号private String brand; // 品牌private String color; // 颜色public CsdN8_1(int id, String brand, String color) {this.id = id;this.brand = brand;this.color = color;}public String toString() {return "汽车:id = " + id + " brand=" + brand + "color=" + color;}public boolean equals(Object obj) {return this.id == ((CsdN8_1) obj).id;}protected void finalize() throws Throwable {System.out.println("The object is destroyed");}public static void main(String[] args) throws CloneNotSupportedException {CsdN8_1 c1 = new CsdN8_1(101, "宝马", "棕色");CsdN8_1 c2 = (CsdN8_1) c1.clone();System.out.println(c1 == c2);System.out.println(c1.equals(c2));System.out.println(c1.getClass().getName());System.out.println(c1.hashCode());System.out.println(c1);c1 = null;c2 = null;System.gc(); // 执行垃圾回收}
}

运行结果:
在这里插入图片描述

Math类

Math类的使用

java.lang.Math类中定义了一些方法实现数学上的基本函数功能:

  • 指数函数
  • 对数函数
  • 平方根函数
  • 三角函数
  • 两个常量PI和E
  • Math类中定义的所有的方法和两个常量都是static的,仅能通过类名访问。
    在这里插入图片描述
实战演练

sqrt()、pow()、rint()、round()方法以及常量PI的使用

//sqrt()、pow()、rint()、round()方法以及常量PI的使用
public class MathDemo {
public static void main(String[] args) {
System.out.println("sqrt(2) = " + Math.sqrt(2)); //求2的平方根
System.out.println("pow(2,5) = " + Math.pow(2, 5)); //求2的5次方
//double rint(double x)返回与x最接近的整数,若x到两个整数的距离相等则返回偶数
System.out.println("rint(2.5) = " + Math.rint(2.5));
System.out.println("rint(-3.5) = " + Math.rint(-3.5));
//long round(double x)返回(long)Math.floor(x+0.5)
System.out.println("round(3.5) = " + Math.round(3.5));
System.out.println("round(-3.5) = " + Math.round(-3.5));
double pi = Math.PI;
pi = Math.round(pi * 10000) / 10000.0; // 四舍五入到小数点后4位
System.out.println("PI = " + pi);}
}

random()方法的使用

Math类中的random()方法用来生成大于等于0.0小于1.0的double型随机数
(0.0<=Math.random()<1.0)

(int)(Math.random() * 10)                 //  [0,9]50 + (int)(Math.random() * 51)        //  [50, 100]a + (int)(Math.random() * (b+1))     //  [a, a +b]
实战演练

问题描述:
编写一个方法,随机返回一个小写字母。用该方法随机生成100个小写字母输出,每行20个。

 public static char getLetter()

思路:小写字母的ASCII码值在97(‘a’)到122(‘z’)之间,因此只需随机产生97到122之间的整数,然后把它们转换成字符即可。

//编写一个方法,随机返回一个小写字母。
//用该方法随机生成100个小写字母输出,每行20个。
public class RandomCharacter {
//随机返回一个小写字母'a'~'z'public static char getLetter(){//[97+0, 97+26)即[97, 122]即['a','z']return (char)(97 + Math.random() * (26)); }public static void main (String[] args) {for(int i = 1 ;i <= 100 ; i ++){System.out.print(getLetter()+" ");if( i % 20 ==0)    // 每行输出20个字母后换行System.out.println();}}
}

博主用心写,读者点关注,互动传真情,知识不迷路

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

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

相关文章

8. kubernetes资源——ingress

kubernetes资源——ingress 一、ingress介绍1、作用2、实现方式3、核心组件 二、部署ingress1、下载ingress_1.9.6.yaml文件2、事先导入镜像3、部署ingress 三、通过ingress发布k8s中的服务1、创建服务2、创建ingress规则发布服务3、测试访问 一、ingress介绍 1、作用 ingres…

若依+AI项目开发(二)

后端代码分析 二次开发 开始执行 生成成功 创建子模块

docker安装jenkins,并配置jdk、node和maven

拉取jenkins镜像 docker pull jenkins/jenkins:2.468-jdk21 创建一个文件夹&#xff0c;用于二次打包jenkins镜像 mkdir -p /data/jenkins cd /data/jenkins 提前准备好jdk和maven&#xff0c;并放到/data/jenkins下 由于3.8.x以上版本的maven只支持https协议&#xff0c;我们…

深入理解SQL中的INNER JOIN操作

本文介绍了INNER JOIN的定义、使用场景、计算方法及与其他JOIN的比较。INNER JOIN是关系数据库中常用的操作&#xff0c;用于返回两个表中匹配的行&#xff0c;只有在连接条件满足时才返回数据。本文详细解释了INNER JOIN的语法及其在一对多、多对多关系中的应用&#xff0c;通…

Redis实战---分布式锁

1. 什么是Redis分布式锁&#xff1f; 分布式锁&#xff0c;顾名思义&#xff0c;就是分布式系统中使用的锁&#xff0c;在单体应用中我们使用synchronized、ReentrantLock来解决线程时间的共享资源的访问问题&#xff0c;而在分布式系统中&#xff0c;资源贡献问题已经由线程之…

【Ubuntu】安装 Snipaste 截图软件

Snipaste 下载安装并使用 Snipastefor more information报错解决方案每次启动软件需要输入的命令如下添加开机自启动 下载 下载地址 安装并使用 Snipaste 进入终端输入命令 # 1、进入到 Snipaste-2.8.9-Beta-x86_64.AppImage 所在目录&#xff08;根据自己的下载目录而定&…

Corsearch 用 ClickHouse 替换 MySQL 进行内容和品牌保护

本文字数&#xff1a;3357&#xff1b;估计阅读时间&#xff1a;9 分钟 作者&#xff1a;ClickHouse Team 本文在公众号【ClickHouseInc】首发 Chase Richards 自 2011 年在初创公司 Marketly 担任工程负责人&#xff0c;直到 2020 年公司被收购。他现在是品牌保护公司 Corsear…

JAVA笔记十六

十六、异常Exception 1.概念 异常&#xff1a;非正常情况&#xff0c;包括空的引用、数组下标越界、内存溢出等 Java提供了异常对象描述这类异常情况。 Java提供了异常机制来进行处理&#xff0c;通过异常机制来处理程序运行期间出现的错误&#xff0c;可以更好地提升程序的…

波特率和比特率的区别联系【理解】

波特率&#xff08;Baud rate&#xff09;&#xff1a;表示单位时间内载波调制状态变化的次数 &#xff0c;单位为波特(Baud)&#xff1b; 【值得注意的是】单位“波特”本身就已经是代表每秒的调制数&#xff0c;不能用“波特每秒”&#xff08;Baud per second&#xff09;为…

MySQL练手 --- 1141. 查询近30天活跃用户数

题目链接&#xff1a;1141. 查询近30天活跃用户数 思路&#xff1a; 题目要求&#xff1a;统计截至 2019-07-27&#xff08;包含2019-07-27&#xff09;&#xff0c;近 30 天的每日活跃用户数&#xff08;当天只要有一条活动记录&#xff0c;即为活跃用户&#xff09; 要计算…

react中简单的配置路由

1.安装react-router-dom npm install react-router-dom 2.新建文件 src下新建page文件夹&#xff0c;该文件夹下新建login和index文件夹用于存放登录页面和首页&#xff0c;再在对应文件夹下分别新建入口文件index.js&#xff1b; src下新建router文件用于存放路由配置文件…

「Ant Design」Antd 中卡片如何完全不展示内容区域、按需展示内容区域、不展示标题

前言 下面是默认的 Antd 卡片&#xff0c;由以下区域组成 处理 Antd 的 Card 展示形式大致有下面三种 卡片完全不展示内容区域 const App () > (<Card title"Default size card" extra{<a href"#">More</a>} style{{ width: 300 }}b…

nginx的学习(二):负载均衡和动静分离

简介 nginx的负载均衡和动静分离的简单使用 负载均衡配置 外部访问linux的ip地址:80/edu/a.html地址&#xff0c;会轮询访问Tomcat8080和Tomcat8081服务。 Tomcat的准备 准备两个Tomcat&#xff0c;具体准备步骤在nginx的学习一的反向代理例子2中&#xff0c;在Tomcat8080…

崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB

前言 首届YashanDB「迁移体验官」开放后&#xff0c;陆续收到「体验官」们的投稿&#xff0c;小崖在此把优秀的投稿文章分享给大家~今天分享的用户文章是《崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB》&#xff08;作者&#xff1a;小草&#xff09;&#xff0c;满满…

让你的程序有记忆功能。

目录 环境 代码 环境 大语言模型&#xff1a; gpt-40-mini Mem0: Empower your AI applications with long-term memory and personalization OpenAPI-Key: Mem0-Key&#xff1a; 代码 import osfrom dotenv import load_dotenv from openai import OpenAI from m…

网络安全领域五大注入攻击类型介绍

在网络安全领域&#xff0c;注入攻击是一种常见的攻击方式&#xff0c;攻击者通过向应用程序发送恶意数据来操控应用程序的行为。以下跟随博主通过具体样例一起来掌握以下五种知名的注入攻击类型。 1. SQL注入&#xff08;SQL Injection&#xff09; 1.1. 概述 SQL注入是最常见…

OAuth2 + Gateway统一认证一步步实现(公司项目能直接使用),密码模式授权码模式

文章目录 认证的具体实现环境的搭建基础版授权服务搭建引入依赖创建数据表yml配置配置SpringSecurity定义认证授权的配置类授权服务器存储客户端信息修改授权服务配置&#xff0c;支持密码模式 基础版授权服务测试授权码模式测试密码模式测试**测试校验token接口** 整合JWT使用…

内网对抗-隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线

知识点&#xff1a; 1、隧道技术篇-传输层-工具项目-Frp&Nps&Chisel 2、隧道技术篇-传输层-端口转发&Socks建立&C2上线Frp Frp是专注于内网穿透的高性能的反向代理应用&#xff0c;支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过…

探索算法系列 - 滑动窗口

目录 长度最小的子数组&#xff08;原题链接&#xff09; 无重复字符的最长子串&#xff08;原题链接&#xff09; 最大连续1的个数 III&#xff08;原题链接&#xff09; 将 x 减到 0 的最小操作数&#xff08;原题链接&#xff09; 水果成篮&#xff08;原题链接&#x…