文章目录

  • java常用类(Object、String、Math、Date)
  • 一、object类及其方法
    • 1. getClass()方法
    • 2. hashCode()方法
    • 3. toString方法
    • 4. equals()方法
    • 5. finalize()方法
  • 二、String类
    • 1.注意
    • 2.常用方法
    • 3.扩展
    • 4.参考资料
  • 三、Math
    • 1 常用函数
    • 2 参考资料
  • 四、Date
    • 1 相关知识
    • 2 Date的一些常用方法
    • 3 日历相关类(Calendar)
    • 4 参考资料

java常用类(Object、String、Math、Date)


一、object类及其方法

object类是所有类的基类,超类,所有类的直接或者间接父亲,位于继承树的最顶端。

任何类,如没有书写extends显示继承某个类,都默认直接继承object类,否则为间接继承

object类所定义的方法,是所有对象都具备的方法
object类可以存储任何对象

1. getClass()方法

返回应用中存储的实际对象类型
应用:通常用于判断两个引用中实际存储 对象类型是否一致。

2. hashCode()方法

public int hashCode(){}
返回该对象的哈希码值
哈希值根据对象的地址或者字符串或数字使用hash算法计算出来的int类型的数值。
一般情况下相同对象返回相同哈希码

3. toString方法

public String toString(){}
返回该对象的字符串表示(表现形式)
可以根据程序需要覆盖该方法,如:展示该对象属性

4. equals()方法

public Boolean equals(object obj){}
默认实现为(this ==obj),比较两个对象地址是否相同
可进行覆盖,比较两个对象的内容是否相同。

"=="比较双方是否相同。如果是基本类型则表示值相同,如果是引用类型则表示地址相等即是同一个对象。、

默认的equals()方法和"=="是一样的。【对象地址相同说明是同一个对象,则hashcode相同】

equals()默认是比较两个对象和hashcode(哈希码).但,可以根据自己的要求重写equals()方法。–【一般重写为比较对象的内容是否相同】

  • equals()方法覆盖步骤

比较两个引用是否指向同一个对现象【obj == this】
判断两个obj是否为null【obj == null】
判断两个引用指向的实际对象类型是否一致 【obj instanceof xx】
强制类型转换
一次比较属各个属性值是否相同

public class User {String name;Integer id;@Overridepublic boolean equals(Object obj) {// 首先判断传进来的obj是否是调用equals方法对象的this本身,提高判断效率if (obj == this) {return true;}// 判断传进来的obj是否是null,提高判断效率if (obj == null) {return false;}// 判断传进来的obj是否是User对象,防止出现类型转换的异常if (obj instanceof User) {User user = (User) obj;boolean flag = this.name.equals(user.name) && this.id == user.id;return flag;}// 如果没有走类型判断语句说明两个比较的对象它们的类型都不一样,结果就是false了return false;} ....//get\set 方法
}

5. finalize()方法

  • 当对象判定为垃圾对象时,由JVM自动调用此方法,用以标记此对象,进入回收队列
  • 垃圾对象:没有有效引用指向此对象,为垃圾对象。【new xxx(…);】
  • 垃圾回收:由GC销毁对象,释放存储空间
  • 自动回收机制:JVM内存耗尽时,一次性回收所有的垃圾对象
  • 手动回收机制:使用System.gc();通知JVM执行垃圾回收。

二、String类

1.注意

字符串是常量,创建之后无法改变

字符串的字量值存储在字符串池中,可以共享,

String s = “Hello”,创建一个对象,在字符串池中存储。

String s = new String(“Hello”)创建两个对象,堆和池里各存放一个。

原理如下图:

  @Testpublic void StringTest() {String str = "abc";String str2 = new String("abcd");System.out.println("str2:"+str2.hashCode());str2 = "abc";//存在方法区  字符串常量池中 可以共享 str 和str2 相同(引用指向同一内容)System.out.println("str:" + str.hashCode());System.out.println("str2 : " + str2.hashCode());System.out.println(str.equals(str2));System.out.println("--------------");// String不可变,赋给不同值,对象改变了,引用指向了另外的内容str = "abcd";System.out.println("str:" + str.hashCode());System.out.println(str.equals(str2));}
str2:2987074
str:96354
str2 : 96354
true
--------------
str:2987074
falseProcess finished with exit code 0

2.常用方法

长度、获取指定下标、转数组、是否包含str(t or f) 、匹配第一个下标、匹配最后下标去掉字符串前后的空格、将小写转成大写。判断字符串是否以xx结尾、将旧字符串替换成新字符串(新对象)、根掂str做拆分。

  • public int length() :返回字符串的长度。

  • public char charAt(int index):根据下标获取字符串

  • public char[] toCharArray() :将字符串转换成数组。

  • public boolean contains (String str) :判断当前字符串中是否包含str。

  • public int index0f (String str) :查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1。

  • public int lastIndex0f (String str) :查找字符串在当前字符串中最后一次出现的下标索引。

  • public String trim() :去掉字符串前后的空格。

  • public String toUpperCase () :将小写转成大写。

  • public boolean endWith (String str) :判断字符串是否以str结尾。

  • public String replace (char oldChar, char newChar); 将旧字符串替换成新字符串

  • public String[] split (String str) :根据str做拆分。

3.扩展

StringBuilder 和 StringBuffer

都是 final 修饰 不可修改,可变是因为使用方法 append 和 insert 方法。返回的对象是同一个
StringBuffer: 可变长字符串,JDK1. 0提供,运行效率慢、线程安全。(适合多线程)
StringBuilder:可变长字符串,JDK5. 0提供,运行效率快、线程不安全。(适合单线程)
但都比String类效率高。

  • StringBuilder
    String类与StringBuilder类的区别:String类的内容是固定的,StringBuilder类的内容是可变的。
    StringBuilder 用在字符串缓冲区被单个线程使用的时候 比StringBuffer 要快
    主要操作是 appendinsert 方法

例如,如果 z 引用一个当前内容为 “start” 的字符串的生成器对象,则该方法调用 z.append(“le”) 将使字符串生成器包含
“startle”,而 z.insert(4, “le”) 将更改字符串生成器,使之包含 “starlet”。

  • StringBuffer
    通过某些方法调用可以改变该序列的长度和内容。
    可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
    主要操作是 appendinsert 方法

例如,如果 z 引用一个当前内容为 “start” 的字符串缓冲区对象,则此方法调用 z.append(“le”) 会使字符串缓冲区包含 “startle”,而 z.insert(4, “le”) 将更改字符串缓冲区,使之包含 “starlet”。

4.参考资料

https://blog.csdn.net/weixin_43502661/article/details/88781050
https://blog.csdn.net/xiaosao_/article/details/126278199
https://blog.csdn.net/qq_59212867/article/details/125119222

三、Math

Math 类包含用于执行基本数学运算的static 方法,如初等指数、对数、平方根和三角函数。

1 常用函数

  • Math.PI 记录的圆周率
  • Math.E 记录e的常量
  • Math中还有一些类似的常量,都是一些工程数学常用量。
  • Math.abs 求绝对值
  • Math.sin 正弦函数 Math.asin 反正弦函数
  • Math.cos 余弦函数 Math.acos 反余弦函数
  • Math.tan 正切函数 Math.atan 反正切函数 Math.atan2 商的反正切函数
  • Math.toDegrees 弧度转化为角度 Math.toRadians 角度转化为弧度
  • Math.ceil 得到不小于某数的最大整数
  • Math.floor 得到不大于某数的最大整数
  • Math.IEEEremainder 求余
  • Math.max 求两数中最大
  • Math.min 求两数中最小
  • Math.sqrt 求开方
  • Math.pow 求某数的任意次方, 抛出ArithmeticException处理溢出异常
  • Math.exp 求e的任意次方
  • Math.log10 以10为底的对数
  • Math.log 自然对数
  • Math.rint 求距离某数最近的整数double (可能比某数大,也可能比它小)
  • Math.round 同上,返回int型或者long型(上一个函数返回double型)
  • Math.random 返回0,1之间的一个随机数[0,1)

2 参考资料

https://blog.csdn.net/I_r_o_n_M_a_n/article/details/118864693

四、Date

1 相关知识

Date 类来封装当前的日期和时间,我们可以通过该类来操作时间和日期。在使用该类之前,我们需要先导入 java.util.Date 类。

Date 类提供了两种构造函数来实例化 Date 对象:

使用当前日期和时间来初始化对象;

  • Date date = new Date();

第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。

  • Date date1 = new Date(1581997363000L).

2 Date的一些常用方法

方法 描述
boolean after(Date date) 若当调用此方法的 Date 对象在指定日期之后返回 true,否则返回 false。
boolean before(Date date) 若当调用此方法的 Date 对象在指定日期之前返回 true,否则返回 false。
Object clone( ) 返回此对象的副本。
int compareTo(Date date) 比较当调用此方法的 Date 对象和指定日期。两者相等时候返回 0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
boolean equals(Object date) 当调用此方法的 Date 对象和指定日期相等时候返回 true,否则返回 false。
long getTime( ) 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
void setTime(long time) 用自 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒数设置时间和日期。
String toString( ) 转换 Date 对象为 String 表示形式,并返回该字符串。

3 日历相关类(Calendar)

Calendar 类是一个抽象类,为操作日历字段(例如获得下星期的日期),提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

4 参考资料

https://blog.csdn.net/m0_59854777/article/details/119564546

java常用类(Object、String、Math、Date)相关推荐

  1. 日期的包装 java,Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类...

    Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯. 2.面向对象的出现,将复杂的事情简单化. 3.面向对象的出现,将之前过 ...

  2. Java常用类System、Math和File类

    Java 文章目录 Java 一.System:系统类 二.Math 数学类 三.File:文件类 一.System:系统类 System中包含一些有用的类字段和方法,不能够进行实例化 public ...

  3. Java常用类:String

    说到Java中最常用的类,那么一定是非String类莫属了.刚学Java写hello world就用到了.虽然看起来简单但是还是有很多的细节需要注意.正因为常用我们才需要更加关注它的细节,这样我们才能 ...

  4. 【Java常用类】String和StringBuffer类(下)

    在Java中,由于String 类是final类型的,所以使用String定义的字符串是一个常量因此它且创建,其内容和长度是不可改变的. 如果需要对一个字符串进行修改,则只能创建新的字符串.为了便于对 ...

  5. java常用类解析十:Date类和Calendar类示例

    1.Date类实例:格式化输出当前日期 [java] view plaincopy <span style="font-size:16px;">package demo ...

  6. Java常用类之String类、Stringbuffer和Random类练习

    定义一个StringBuffer类对象, 1)使用append方法向对象中添加26个字母,并倒序遍历输入 2)删除前五个字符 package 第十一章常用类; /*** 定义一个StringBuffe ...

  7. Java常用类:string 、日期api总结最全

    String String字符串,使用""引用来表示 1.String声明为final,不可 被继承 2.实现了Serializable接口,表示字符串是支持序列化的 3.实现了C ...

  8. JAVA常用类(Object类,包装类,Arrays类)

    Object类   是所有类的默认父类,它定义了许多方法: toString()            输出对象时,将对象转为字符串形式,            Object类中默认有toString ...

  9. java string 数据结构_java 数据结构(一):java常用类 一 String类

    java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String实现了Seria ...

  10. Java常用类之String类知识清单,简单易理解

    String类基础知识 1.String类表示字符串,理解为不可变的字符序列 2.String类声明为final,不可被继承 3.String类实现了Serializable接口:表示字符串是支持序列 ...

最新文章

  1. Windows不重启就使环境变量修改生效
  2. Linux 网络配置命令:ip、ss
  3. linux常用系统命令
  4. docsify and awesome
  5. HDU - 4821 String(字符串哈希+优化)
  6. TypeError: can‘t send non-None value to a just-started generator-python报错问题
  7. jQuery——入门基础(获取元素、样式、属性,选择集、过滤器、样式类)
  8. matplotlib库
  9. 新Attention | NAM,一种新的注意力计算方式,无需额外的参数
  10. 数据库架构 - 数据库设计是否要使用外键(转)
  11. 阿里云矢量图html页面引入,iconfont 阿里巴巴矢量图标库使用说明
  12. 程序员求职之道(《程序员面试笔试宝典》)之求职的时候该不该只看钱?
  13. Lorenz混沌系统建模与电路仿真实现
  14. 【NLP】4 gensim word2vec库入门——官方手册embeddings和KeyedVectors
  15. git提交代码步骤和idea中不同颜色代表意义
  16. 软件测试周刊(第15期):将军赶路 不追小兔
  17. 查找/下载文献的一些网址汇总
  18. QQ来信息突然没声音了
  19. 阮一峰访谈问题有奖征集
  20. boost python异常处理_C++ boost.python折腾笔记

热门文章

  1. 【Confluent】Confluent入门简介
  2. 1分钟搞懂什么是 JS 代理对象(proxies)
  3. 转载:非常实用的15款开源PHP类库
  4. 通过Azure AD 搭建企业安全身份标识系统
  5. Java-GUI用户登录
  6. spring-boot 连接人大金仓
  7. python代码:基于强化学习的智能电网的动态定价方法 摘要:提出了一种考虑服务提供商(SP)利润和用户(CUs)成本的分级电力市场中能量管理的动态定价DR算法
  8. Excel如何快速从邮箱中提取QQ号码
  9. Python实现SPN加密算法
  10. PAT 1086 就不告诉你(15 分)- 乙级