Java(二十一)——Java基础类库之常用类(Object、String、Math、BigDecimal类)

Java常用类和基础API 获取"ab"在"abkkcadkabkebfkabkskab"中出现的次数。(1)定义用户类,属性为用户名和密码,提供相关的getter和setter方法,构造器,tostring()使用LocalDateTime获取当前时间,把这个时间设置为你的生日,再获取你的百天(出生后100天)日期。使用Calendar获取当前时间,把这个时间设置为你的生日,再获取你的百天(出生后100天)日期。//存储字符串数据的容器。字符串常量池,在不同的jdk版本中,存放位置不同。字符串常量池不允许存放两个相同的字符串常量。 阅读详情

一、Object类

Object类是所有类、数组、枚举类的父类,也就是说,Java允许把任何类型的对象赋给Object类型的变量。当定义一个类时没有使用extends关键字为它显示指定父类,则该类默认继承Object父类。
因为所有的Java类都是Object类的子类,所以任何Java对象都可以调用Object类的方法。Object类提供了如下几个常用方法。

  • boolean equals(Object obj):判断指定对象与该对象是否相等。此处相等的标准是,两个对象是同一个对象,因此该equals()方法通常没有太大的实用价值。
  • protected void finalize():当系统中没有引用变量引用到该对象时,垃圾回收器调用此方法来清理该对象的资源。
  • Class<?> getClass():返回该对象的运行时类。
  • int hashCode():返回该对象的hashCode值。在默认情况下,Object类的hashCode()方法根据该对象的地址来计算(即与System.indentityHashCode(Object x)方法的计算结果相同)。但很多类都重写了Object类的hashCode()方法,不再根据地址来计算其hashCode()方法值。
  • String toString():返回该对象的字符串表示,当程序使用System.out.println()方法输出一个对象,或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的toString()方法返回该对象的字符串表示。Object类的toString()方法返回“运行时类名@十六进制hashCode值”格式的字符串,但很多类都重写了Object类的toString()方法,用于返回可以表述该对象信息的字符串。
    除此之外,Object类还提供了wait()、notify()、notifyAll()几个方法,通过这几个方法可以控制线程的暂停和运行。
    Java还提供了一个protected修饰的clone()方法,该方法用于帮助其他对象来实现“自我克隆”,所谓“自我克隆”就是得到一个当前对象的副本,而且二者之间完全隔离。由于Object类提供的clone()方法使用了protected修饰,因此该方法只能被子类重写或调用。
    自定义类实现“克隆”的步骤如下:
  1. 自定义类实现Cloneable接口。这是一个标记性的接口,实现改接口的对象可以实现“自我克隆”,接口里没有定义任何方法。
  2. 自定义类实现自己的clone()方法。
  3. 实现clone()方法时通过super.clone();调用Object实现的clone()方法来得到该对象的副本,并返回该副本。

二、Java 7新增的Objects类

该类提供了一些工具方法来操作对象,这些工具方法大多是“空指针”安全的。比如你不能确定一个引用变量是否为null,如果贸然地调用该变量的toString()方法,则可能引发NullPointException异常;但如果使用Objects类提供的toString(Object o)方法,就不会引发空指针异常,当o为null时,程序将返回一个“null”字符串。

三、String、StringBuffer和StringBuilder类

String、StringBuilder、StringBuffer都实现CharSequence接口,因此CharSequence可认为是一个字符串的协议接口。

String类是不可变的,String的实例一旦生成就不会再改变了,例如如下代码

String str1 = "java";
str1 = str1 + "struts";
str1 = str1 + "spring";

上面的程序除了使用了3个字符串直接量之外,还会额外生成2个字符串直接量——“java"和"struts"连接生成的"javastruts”,接着"javastruts"与"spring"连接生成的"javastrutsspring",程序中str1依次指向3个不同的字符串对象。
因为String是不可变的,所以会额外产生很多临时变量,使用StringBuffer或StringBuilder就可以避免这个问题
StringBuilder提供了一系列插入、追加、改变该字符串里包含的字符序列的方法。而StringBuffer与其用法完全相同,只是StringBuffer是线程安全的。
###四、Math类
Java提供了基本的+、-、*、/、%等基本算术运算的运算符,但对于更复杂的数学运算,例如三角函数、对数运算、指数运算等则无能为力。Java提供了Math工具类来完成这些复杂的运算,Math类是一个工具,它的构造器被定义成private的,因此无法创建Math类的对象;Math类中的所有方法都是类方法,可以直接通过类名来调用它们。Math类除了提供了大量的静态方法之外,还提供了两个类变量:PI和E,正如它们名字所暗示的,它们的值分别等于π和e。
###五、Java 7的ThreadLocalRandom与Ramdom
Random类专门用于生成一个伪随机数,它有两个构造器:一个构造器使用默认的种子(以当前时间作为种子),另一个构造器需要程序员显式传入一个long型整数的种子。
ThreadLocalRandom类是Java 7新增的一个类,它是Random的增强版。并在并发访问的环境下,使用ThreadLocalRandom来代替Random可以减少多线程资源竞争,最终保证系统具有更好的线程安全性。
ThreadLocalRandom类的用法与Random类的用法基本相似,它提供了一个静态的current()方法来获取ThreadLocalRandom对象,获取该对象之后即可调用各种nextXxx()方法来获取伪随机数了。
ThreadLocalRandom与Random都比Math的random()方法提供了更多的方式来生成各种伪随机数,可以生成浮点类型的伪随机数,也可以生成整数类型的伪随机数,还可以指定生成伪随机数的范围。
###六、BigDecimal类
float、double两种基本类型的浮点数容易引起精读丢失。不仅是Java,很多编程语言也存在这样的问题。
为了能精确表示、计算浮点数,Java提供了BigDecimal对象,也包括利用数字字符串、数字字符数组来创建BigDecimal对象。
查看BigDecimal类的BigDecimal(double val)构造器的详细说明时,可以看到不推荐使用该构造器的说明,主要是因为使用该构造器时有一定的不可预知性。当程序使用new BigDecimal(0.1)来创建一个BigDecimal对象时,它的值并不是0.1,它实际上等于一个近似0.1的数。这是因为0.1无法准备地表示为double浮点数,所以传入BigDecimal构造器的值不会正好等于0.1(虽然表面上等于改值)。
如果使用BigDecimal(String val)构造器的结果是可预知的。因此通常建议优先使用基于String的构造器。
如果必须使用double浮点数作为BigDecimal构造器的参数时,不要直接将该double浮点数作为构造参数创建BigDecimal对象,而是应该通过BigDecimal.valueOf(double value)静态方法来创建BigDecimal对象。
BigDecimal类提供了add()、subtract()、multiply()、divide()、pow()等方法对精确浮点数进行常规算术运算。

java中的常用类。包装类,Math类,String类,Date类,Calendar类,BigDecimal类详细汇总 Java中的几个常用类 枚举 枚举指由一组固定的常量组成的类型 关键字:enum 枚举里可以有方法和属性,但一般不用 public enum Ennum { L1,L2,L3 } public class Application { public static void main(String[] args) { Application application = new Application(); application.target(Ennum.L 阅读详情

相关推荐

Java BigDecimal使用及基本运算(推荐)

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。这篇文章主要介绍了Java BigDecimal使用指南针(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

java克隆

java克隆分为浅克隆和深克隆,概念如下: 浅拷贝(浅克隆) 克隆出来的对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。 深拷贝(深克隆) 克隆出来的所有变量都含有与原来的对象相同的值,那些引用其他对象的变量将指向复制出来的新对象,而不再是原有的那些被引用的对象。换言之,深克隆把要克隆的对象所引用的对象都克隆了一遍。 测试: ​ 接下来我们新建两个实体...

那些年的代码 578

java中BigDecimal的操作方法

主要介绍了java中BigDecimal的操作方法,较为详细的分析了BigDecimal类在进行商业计算时的应用方法,精度以及注意事项等问题,需要的朋友可以参考下

Java 大数值和数组拷贝方法

Java核心技术慢慢学 如果基本的整数和浮点数精度不能够满足需求, 那么可以使用 jaVa.math 包中的两个 很有用的类: Biglnteger 和 BigDecimaL 这两个类可以处理包含任意长度数字序列的数值。 Biglnteger 类实现了任意精度的整数运算, BigDecimal 实现了任意精度的浮点数运算。 常用的方法: BigInteger a = BigI...

guochao6531的博客 446

Pspice安装教程:Windows系统完整指南(含环境变量设置)

详细讲解在Windows系统中完成Pspice安装的全过程,涵盖安装步骤与关键的环境变量设置,帮助用户顺利运行仿真工具。适合初学者快速上手pspice安装教程中的核心环节。

weixin_42230607的博客 1175

Verilog除法器(32位无符号+带符号)

32位无符号除法器设计 恢复余数法: 恢复余数除法的基本思路是从“部分余数”中减去除数,如果结果为负(不够减),则恢复原来的部分余数,商0. 寄存器使用: reg_r 存放被除数a reg_b 存放除数b reg_r 存放余数(初始清零) 具体做法: 做减法时,减数是reg_b中的除数,被减数是reg_r中的余数左移一位,最低位由reg_q(被除数)的最高位补充。为了能够判断相减结果的正...

qq_38600065的博客 1万+

Java clone 浅拷贝和深拷贝

Java clone 浅拷贝和深拷贝

Jaemon 263

qt5.14.2+vs2019配置msvc2017编译器

qt5.14.2+vs2019配置msvc2017编译器 在使用qt编译程序时此前一直使用的是自带的MinGW 32-bit和64-bit,现在想使用msvc编译器。本次使用的是qt5.14.2,vs2019,需要配置msvc2017的32-bit和64-bit编译器。 1、首先安装好qt5.14.2和vs2019,其次在visual studio installer选择修改,然后选择msvc2017对应的组件,本次安装的是这两个 2、打开qt creator的工具–选项–kits–编译器,选择Manu

bangtanhui的博客 1万+

Java对象深拷贝的几种方式

java对象拷贝的几种方式

penn 8832

revit二次开发环境搭建(2024版)(小白友好)

revit二次开发环境配置,SDK、addin manager和lookup新手友好安装教程

m0_56961251的博客 1420

国科大——形式语言与自动机理论(0812课程)——作业

此次作业题考察,包括但不限于有限自动机、无限自动机、正则文法、正则表达式以及正则语言的性质,题考查下推自动机相关的知识,题考查图灵机相关的知识。此课程建议本科学习过课程的同学选修,成绩占比:考试100%。此课程虽然留有作业,但可做也可不做,且不考勤。

qq_54145399的博客 705

java存大数的代码_java(大数操作BigInteger、BigDecimal类、对象克隆技术、Arrays类) | 学步园...

大数操作(BigInteger、BigDecimal)大数操作:正常情况下一个整数最多只能放在long类型之中,但是现在如果有以下一个数字:11111111111111111111111111111111111111111根本是无法保存的,所以为了解决这种问题,在java中引入了两个大数的操作类:·操作整型:BigInteger·操作小数:BigDecimalBigInteger如果在操作的时候一...

weixin_35382961的博客 501

Open-Sora代码详细解读(2):时空3D VAE

目前开源的DiT视频生成模型不是很多,Open-Sora是开发者生态最好的一个,涵盖了DiT、时空DiT、3D VAE、Rectified Flow、因果卷积等Diffusion视频生成的经典知识点。本篇博客从Open-Sora的代码出发,深入解读背后的原理。

沉迷单车的追风少年 2053

Java 基础类库(常用类)

本文包含如下内容: Object 类 Java 7 新增的类 String、StringBuffer、StringBuilder 类 Math 类 Java 7 的ThreadLocalRandom 与 Random BigDecimal 类 1. Object 类 Object 类是所有类、数组、枚举类的父类,也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。当定义一个...

黑白灰的博客 1783

手把手教你学Simulink——基于Simulink的固态变压器(SST)多级协同控制

摘要:本文详细介绍了基于Simulink的固态变压器(SST)多级协同控制方法。SST作为新一代智能电网核心设备,通过AC-DC整流、DC-DC隔离和DC-AC逆变三级架构实现电能高效转换。针对多级耦合难题,提出能量-功率协同控制策略:纵向解耦电压环与功率前馈,横向联动级间功率指令。在Simulink中搭建10kV/400V系统模型,实现直流母线电压波动<2%的动态性能。特别设计了负载突变时的三级协同机制,通过虚拟惯性算法和前馈控制实现快速响应。文章包含完整的建模步骤、控制推导和参数设置,为电力电子工

MHD0815的博客 193

24、汽车黑客技术全解析:诊断代码、车库创建与系统攻防

本文深入探讨了汽车黑客技术的核心内容,包括诊断代码模式与参数ID、创建开放车库社区、汽车系统相关技术、硬件与软件工具、攻击与防御手段,以及车辆通信与网络安全。无论你是汽车安全研究人员、爱好者还是开发者,都能从中获取全面的技术解析与实践指南。

Apple的专栏 225

java常用类(重点是Arrays类,装箱以及拆箱,String,StringBuffer,StringBuilder等)

主要是java的一些常用类的使用方法,更具体的建议还是去看官方的文档。其中的重点的话,个人觉得第一个包装类的拆箱和装箱,String类,StringBUffer类和StringBuilder类以及Arrays类的一些常用方法。

m0_46335449的博客 1061

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java基础知识总结(第七篇):常用类:包装类、日期类以及String、StringBuffer、Builder、Math 、Arrays 、System 、BigInteger和BigDecimal

java常用类介绍:包装类、日期类以及String、StringBuffer、Builder、Math 、Arrays 、System 、BigInteger和BigDecimal

2301_76144723的博客 971

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java——常用类

String, Math, Object, System, Runtime,时间类和包装类。

weixin_73551991的博客 762

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java常用API(Math,BigInteger,BigDecimal,System,Arrays,包装类)

1.描述:将来我们肯定会操作超大的整数,这个整数已经超出了int以及long的范围了,我们跟这样的整数叫做"对象"2.作用:处理超大整数的开发不要用double或者float直接做运算,否则很容易出现精度损失问题,所以我们一般都是用BigDecimal去进行小数运算作用:处理float或者double直接做运算出现的精度损失问题。

秦淮渔火的博客 1099

Java中的常用类及包装类

包装类是所有基本数据类型对应的类,将基本数据类型转成包装类,从而让基本数据类型可以使用成员等类的特点,需要注意的是,基本数据类型的包装类不可以使用进行运算基本类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharactorbooleanBoolean因为包装类具有的属性和方法基本一致,下面以Integer包装类为例介绍Integer。

小何代码咖啡馆 1572

四、03【Java常用类】之Math类 & Number类 & BigDecimal类

今天的博客主题 Java常用类——》Math类 & Number类 & BigDecimal类 Math 用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。 Math 的方法都被定义为 static 形式,通过 Math 类可以直接调用。 常用API 详细API地址:https://docs.oracle.com/javase/8/d...

刘总Java 532

10.Java 常用类之普通常用类(包装类、String、StringBuffer、StringBuilder、Math、Arrays、System、大数据处理)

10.Java 常用类之普通常用类(包装类、String、StringBuffer、StringBuilder、Math、Arrays、System、大数据处理)

weixin_52173250的博客 1034

java相关类的总结(Object、String、Math、StringBuilder、System、BigDecimal)

public static boolean equals(Object 0,Object b) //比较两个对象的,底层会先进行非判断,从而可以避免空指针异常。public Boolean equals(Object o) // 默认是比较当前对象与另一个对象的地址是否相同,相同返回turn ,不同返回false。public Boolean equals(Object o) //默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false.类的权限名@内存地址。

weixin_42376775的博客 153

疯狂Java讲义-Java基础类库

Java基础类库 本章思维导图 用户互动 使用Scanner获取键盘输入 Scanner主要提供了两个方法来扫描输入 hasNextXxx(); 是否还有下一个输入项,其中Xxx可以是int、long等代表基本数据类型的字符串。 nextXxx(); 获取下一个输入项。Xxx的含义与前一个方法中的Xxx相同。 默认情况下,Scanner使用空白(空格、Tab、回车)作为多个...

u011714517的博客 639

System类- Math类- Biginteger类- Bigdecimal类- 包装类(Wrapper Class)- Scanner类-String类

注意事项:设计一个类的时候,不要将类名设计得和jdk提供的类名一样。

Zyangxsir的博客 1213
上一篇: Java(二十)——Java基础类库之main()、Scanner类、System类
下一篇: Java(二十二)——Java集合详述
Undergoer_TW
博客等级 码龄11年 185粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值