8 Java常用API(基本语法6)-- Object和Objects类、Math、System、浅克隆和深克隆、手动下载导入第三方jar包

文章目录

  • 前言
  • 一、Math(工具类)
    • 1 属性
    • 2 常见方法
  • 二、System(工具类,和系统相关的)
    • 1 public static void exit(int status) --- 终止当前运行的 Java 虚拟机。
    • 2 public static long currentTimeMillis() --- 以毫秒为单位返回当前unix时间。
    • 3 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) --- 拷贝数组(对引用数据类型是浅拷贝(拷贝引用))
    • 4 System.out.println(参数) : 获取打印的对象
  • 三、Runtime(和当前虚拟机运行环境相关的一个类)
    • 1 基本方法
    • 2 public Process exec(String command)--- 执行括号内的cmd命令 方法开发恶搞基友软件练习
  • 四、Object(重要!!!)和Objects类
    • 1 Object类 --- java.lang.Object
      • (1)public String toString() :返回对象的字符串表示形式(对象地址)
        • 直接使用
        • 高级重写toString使用
      • (2)public boolean equals(Object obj) :(比较两个对象是否相等) --- 没有重写默认是==(比较地址)
        • 直接使用(比较地址,和==一样)
        • 高级用法,重写比较值
      • (3)public protected Object clone() :创建并返回此对象的副本(默认是浅拷贝)。
    • 2 Objects类: 一个工具类(提供了一些判断null的方法)
      • (1)public static boolean equals(Object a, Object b):先做非空判断,再比较两个对象
      • (2)public static boolean isNull(Object obj) :判断对象是否是 null,则返回 true,否则返回 false。
  • 五、浅克隆和深克隆(重要!!)
    • 1 浅克隆和深克隆基本知识(内存逻辑)
    • 2 使用第三方jar包的克隆 api 接口
      • (1)手动添加 gson
      • (2)使用 gson 实现深克隆
  • 六、BigInteger(大整数)和BigDecimal(大小数)
    • 1 BigInteger(大整数)
      • (1)创建大整数BigInteger的方法
      • (2)大整数BigInteger的运算
      • (3)BigInteger的底层原理(扩展)
    • 2 BigDecimal(大小数)


前言

需要注意,这些常用API的方法属性千万不要背,背是背不完的,用到再去查阅帮助文档就是了。我在这里写这个系列博客也是为了形成一个私人的文档查询库。


一、Math(工具类)

Math是java.lang.Math包下的一个静态工具类,由于是静态的,我们只需要类名调用即可。

1 属性

该类下面有两个字段属性
在这里插入图片描述

2 常见方法

主要介绍几个常见的方法,需要其他具体的方法,查阅帮助文档即可。

方法名说明
piblic static intabs(int a)获取参数的绝对值
piblic static doubleceil(double a)向上取整
piblic static doublefloor(double a)向下取整
piblic static intround(float a)四舍五入
piblic static intmax(int a, int b)获取两个int值中的较大值
piblic static doublepow(double a,double b)返回 a b a^b ab的值
piblic static doublerandom()返回值为double的随机值,范围为[0.0, 1.0)
piblic static doublesqrt(double a)返回 double 值的正确四舍五入的正平方根

其实上述方法都还有各自的重载方法,所以你记肯定是不好记的,我们要学会查阅帮助文档。

double pi = Math.PI;
System.out.println("PI = " + pi);   // PI = 3.141592653589793int a = 4;
System.out.println(Math.sqrt(a));   // 2.0  ,自动隐藏转换为double类型

二、System(工具类,和系统相关的)

System也是一个工具类,提供了一些与系统相关的方法,这里我们主要介绍三个

1 public static void exit(int status) — 终止当前运行的 Java 虚拟机。

  • int status:状态码
    (1)0 : 表示当前虚拟机正常停止
    (2)非0(一般1即可):表示当前虚拟机异常停止
public class Test {public static void main(String[] args) {System.exit(0);System.out.println("hello");    // 这行代码不会被执行}
}

2 public static long currentTimeMillis() — 以毫秒为单位返回当前unix时间。

  • 问题:什么叫做unix时间?
    (1)由1970年1月1日 00:00:00 到当前时间一共经过了多少毫秒,这就是unix时间。
    (2)由于北京时间与国际时间晚8小时,因此国内是从1970年1月1日 08:00:00开始算

  • 毫秒又是什么,为什么是 1970年1月1日 00:00:00 这个时间?
    这个时间称为计算机中的时间原点,这里有一个小故事。
    在这里插入图片描述
    没错,就是C语言诞生的时间,C语言可是一门伟大的语言。

  • 应用:通常可以用来统计程序的运行时间

public class Test {public static void main(String[] args) {long start = System.currentTimeMillis();System.out.println(start);    // 1723818371814int sum = 0;for(int i = 0; i < 10000000; i++) {sum += i;}long end = System.currentTimeMillis();System.out.println(end);       // 1723818371819System.out.println(end-start);  // 5毫秒 ,这个时间是不固定的}
}

3 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) — 拷贝数组(对引用数据类型是浅拷贝(拷贝引用))

  • public static void arraycopy(数据源数组, 源数组起始索引, 目标数组, 目标数组起始索引, 拷贝个数)
    将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。

【注】:

  • 对于基本数据类型:拷贝的是值,互不影响
  • 对于引用数据类型:浅拷贝,拷贝的是引用
package cn.hjblogs.demo;public class Test {public static void main(String[] args) {int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int[] arr2 = new int[10];System.arraycopy(arr1, 0, arr2, 0, arr1.length);// 验证for (int i = 0; i < arr2.length; i++) {System.out.print(arr2[i]+" ");   // 1 2 3 4 5 6 7 8 9 10}System.out.println();  // 换行int[] arr3 = new int[10];System.arraycopy(arr1, 3, arr3, 0, 5);// 验证for (int i = 0; i < arr3.length; i++) {System.out.print(arr3[i]+" ");   // 4 5 6 7 8 6 7 8 9 10}}
}

关于这个方法还有几个注意事项:

  • 1 如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错
  • 2 在拷贝的时候需要考虑数组的长度,如果超出范围也会报错
  • 2 如果数据源数组和目的地数组都是引用数据类型,那么子类型可以可以拷贝到父类型(隐式转换),不过拿出来的时候需要进行一步强转就可以了。---- 多态哪里的父类(大范围)与子类(小范围)的隐式转换和强转
// 减少展示长度,Student,Person类就不展示了public class Test {public static void main(String[] args) {Student s1 = new Student("张三", 18);Student s2 = new Student("李四", 20);Student s3 = new Student("王五", 22);Student[] arr1 = {s1, s2, s3};Person[] arr2 = new Person[3];System.arraycopy(arr1, 0, arr2, 0, 3);// 遍历arr2数组for (Person p : arr2) {Student s = (Student) p;  // 强制类型转换 父类转子类System.out.println(p.getName());  // 张三 李四 王五}}
}

4 System.out.println(参数) : 获取打印的对象

细节:System.out.println(参数)

  • System: 类名
  • out: 静态成员变量
  • System.out: 获取打印的对象
  • println: 打印方法
  • 参数:表示打印的内容
  • 结合后面的 Object的toString方法会更加深入理解这行代码
package cn.hjblogs.demo;public class Test {public static void main(String

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

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

相关文章

在Windows上配置VSCode MinGW+CMake(包括C++多线程编程的两套API:posix和win32)

创建目录 首先&#xff0c;需要电脑上安装VSCode, 并且创建三个文件夹&#xff1a;cmake、MinGW-posix、MinGW-w32 文件下载 下载posix-seh posix和win32分别是c多线程变成的两套API,可根据不同需求安装&#xff0c;现在先下载配置环境需要的几个文件 百度搜索MinGW-64 点…

Apache--简介与基本使用

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、Apache简介 Apache HTTP Server&#xff08;在Red Hat发行版中俗称Apache或httpd&#xff09;是由Apache Software Foundation在Apache License…

WPF打印控件内容

当我们想打印控件内容时&#xff0c;如一个Grid中的内容&#xff0c;可以用WPF中PrintDialog类的PrintVisual()方法来实现 界面如下&#xff1a; XAML代码如下 <Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width"300"…

pygame开发课程系列(4): 游戏元素

第四章 游戏元素 在本章中&#xff0c;我们将深入探讨如何在 Pygame 中处理游戏元素&#xff0c;包括键盘输入、鼠标输入、图像加载和声音播放。这些元素是构建互动游戏的基础&#xff0c;能够让你的游戏变得更生动、更有趣。 4.1 处理键盘输入 键盘输入是控制游戏角色或元素…

Redis相关介绍

本文介绍了Redis&#xff0c;一种开源的内存数据结构存储系统&#xff0c;强调其高性能、多种数据结构支持、内存存储、持久化策略、发布订阅功能及工作原理。 一、Redis的介绍 Redis&#xff08;Remote Dictionary Server&#xff09;&#xff0c;即远程字典服务&#xff0c…

[000-01-030].第7节:Zookeeper工作原理

1.Zookeeper工作原理&#xff1a; 1.1.Zookeeper的工作机制 1.Zookeeper从设计模式角度来理解&#xff1a;是一个基于观察者模式设计的分布式服务管理框架&#xff1b;2.Zookeeper负责存储和管理大家都关心的数据&#xff0c;然后接受观察者的注册&#xff0c;一旦这些数据的…

Unity Recttransform操作

1、拉伸铺满 RectTransform rect GetComponent<RectTransform>();rect.anchorMin Vector2.zero;rect.anchorMax Vector2.one;rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Screen.width);rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Verti…

Ciallo~(∠・ω・ )⌒☆第二十篇 入门mysql 数据库

要入门MySQL数据库&#xff0c;首先需要了解数据库的基本概念和原理。MySQL是一种广泛使用的开源关系型数据库管理系统&#xff0c;它能够处理大量的数据&#xff0c;并提供了多种功能。 一、创建数据库 连接到MySQL后&#xff0c;你可以使用SQL语句来创建数据库。例如&#x…

【leetcode】删除链表的倒数第 N 个结点-25-5

方法&#xff1a;递归 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), ne…

css 文字图片居中及网格布局

以下内容纯自已个人理解&#xff0c;直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

微信小程序实例代码解读

以微信 小程序开发工具给的示例代码为例&#xff1a; 主页代码&#xff1a; index.wxml 这个文件是一个微信小程序页面的 WXML 结构,主要功能是展示一个快速开始教程的步骤和内容。 源代码&#xff1a; <!--index.wxml--> <view class"container">&l…

GAMES104:07游戏中渲染管线、后处理和其他的一切-学习笔记

文章目录 前言一&#xff0c;Ambient Occlusion环境光遮蔽1.1 Precomputed AO1.2 Screen Space Ambient Occlusion(SSAO)1.3 Horizon-based Ambient Occlusion(HBAO)1.4 Ground Truth-based Ambient Occlusion(GTAO)1.5 Rat-Tracing Ambient Occlusion 二&#xff0c;雾效2.1 D…

Spring——AOP前言(写一个小demo为了好学习AOP)

1.AOP的概念 1.1 AOP简单样例 我们来先通过一个例子来对AOP进行理解&#xff0c;这个例子就是有关Spring的事务的一个样例&#xff0c;有关Spring是怎么实现事务的&#xff0c;这个事务其实本质上就是对于我们代码的一个增强。废话不多说&#xff0c;上程序&#xff0c;请各位…

SOAP @WebService WSDL

SOAP & WebService & WSDL SOAP&#xff08;Simple Object Access Protocol&#xff09;WebService&#xff08;Web服务&#xff09;WSDL&#xff08;Web Services Description Language&#xff09; SOAP&#xff08;Simple Object Access Protocol&#xff09; **是一…

Ciallo~(∠・ω・ )⌒☆第十七篇 Ubuntu基础使用 其一

Ubuntu是一种基于Linux的操作系统&#xff0c;它是开源的、免费的&#xff0c;并且具有广泛的用户群体。 基本文件操作&#xff1a;Ubuntu使用命令行工具来进行文件操作。以下是一些常用的命令&#xff1a; 切换到用户主目录&#xff1a; cd ~ 切换到上级目录&#xff1a; cd .…

解密键盘输入:探索设备控制器的奥秘

流程初探 键盘是我们最常用的输入硬件设备之一。作为程序员&#xff0c;你知道当我们敲击键盘上的字母"A"时&#xff0c;操作系统会发生什么吗&#xff1f;下面我将简要介绍整个过程&#xff0c;以便你更容易理解为什么需要这些组件。 首先&#xff0c;让我们来看看…

Linux下 vim的用法

目录 前言 一、初始Vim 二、使用Vim 1.1命令模式 2.1底行模式 3.1插入模式 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 本篇文章会介绍vim的基本用法和为什么我们要学习vim。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供…

PumpkinRaising靶机

端口扫描 目录扫描 访问80端口&#xff0c; 在页面上面发现提到了一个Jack&#xff0c;可能是一个用户名 f12查看源码 找到一个页面 拼接访问 查看源码 发现一个注释 解密 是一个目录 /scripts/spy.pcap 访问&#xff0c;自动下载了一个文件 wireshark打开流量包 找到第一个s…

IndexError: list index out of range | 列表索引超出范围完美解决方法

IndexError: list index out of range &#x1f4c9; | 列表索引超出范围完美解决方法 IndexError: list index out of range &#x1f4c9; | 列表索引超出范围完美解决方法摘要 &#x1f4c4;引言 &#x1f680; 什么是 IndexError: list index out of range&#xff1f;&…

vba代码插入折线图

xqwertyy52152018139hi303533312015 Sub test()Set sht1 ThisWorkbook.Worksheets("示例")x sht1.Range("I1").Lefty sht1.Range("I1").Topw sht1.Range("N15").Width * 15h sht1.Range("N15").Height * 25Set ch1 s…