java常用类(Object、String、Math、Date)
文章目录
- 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 要快
主要操作是 append 和 insert 方法
例如,如果 z 引用一个当前内容为 “start” 的字符串的生成器对象,则该方法调用 z.append(“le”) 将使字符串生成器包含
“startle”,而 z.insert(4, “le”) 将更改字符串生成器,使之包含 “starlet”。
- StringBuffer
通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
主要操作是 append 和 insert 方法
例如,如果 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)相关推荐
- 日期的包装 java,Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类...
Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯. 2.面向对象的出现,将复杂的事情简单化. 3.面向对象的出现,将之前过 ...
- Java常用类System、Math和File类
Java 文章目录 Java 一.System:系统类 二.Math 数学类 三.File:文件类 一.System:系统类 System中包含一些有用的类字段和方法,不能够进行实例化 public ...
- Java常用类:String
说到Java中最常用的类,那么一定是非String类莫属了.刚学Java写hello world就用到了.虽然看起来简单但是还是有很多的细节需要注意.正因为常用我们才需要更加关注它的细节,这样我们才能 ...
- 【Java常用类】String和StringBuffer类(下)
在Java中,由于String 类是final类型的,所以使用String定义的字符串是一个常量因此它且创建,其内容和长度是不可改变的. 如果需要对一个字符串进行修改,则只能创建新的字符串.为了便于对 ...
- java常用类解析十:Date类和Calendar类示例
1.Date类实例:格式化输出当前日期 [java] view plaincopy <span style="font-size:16px;">package demo ...
- Java常用类之String类、Stringbuffer和Random类练习
定义一个StringBuffer类对象, 1)使用append方法向对象中添加26个字母,并倒序遍历输入 2)删除前五个字符 package 第十一章常用类; /*** 定义一个StringBuffe ...
- Java常用类:string 、日期api总结最全
String String字符串,使用""引用来表示 1.String声明为final,不可 被继承 2.实现了Serializable接口,表示字符串是支持序列化的 3.实现了C ...
- JAVA常用类(Object类,包装类,Arrays类)
Object类 是所有类的默认父类,它定义了许多方法: toString() 输出对象时,将对象转为字符串形式, Object类中默认有toString ...
- java string 数据结构_java 数据结构(一):java常用类 一 String类
java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String实现了Seria ...
- Java常用类之String类知识清单,简单易理解
String类基础知识 1.String类表示字符串,理解为不可变的字符序列 2.String类声明为final,不可被继承 3.String类实现了Serializable接口:表示字符串是支持序列 ...
最新文章
- Windows不重启就使环境变量修改生效
- Linux 网络配置命令:ip、ss
- linux常用系统命令
- docsify and awesome
- HDU - 4821 String(字符串哈希+优化)
- TypeError: can‘t send non-None value to a just-started generator-python报错问题
- jQuery——入门基础(获取元素、样式、属性,选择集、过滤器、样式类)
- matplotlib库
- 新Attention | NAM,一种新的注意力计算方式,无需额外的参数
- 数据库架构 - 数据库设计是否要使用外键(转)
- 阿里云矢量图html页面引入,iconfont 阿里巴巴矢量图标库使用说明
- 程序员求职之道(《程序员面试笔试宝典》)之求职的时候该不该只看钱?
- Lorenz混沌系统建模与电路仿真实现
- 【NLP】4 gensim word2vec库入门——官方手册embeddings和KeyedVectors
- git提交代码步骤和idea中不同颜色代表意义
- 软件测试周刊(第15期):将军赶路 不追小兔
- 查找/下载文献的一些网址汇总
- QQ来信息突然没声音了
- 阮一峰访谈问题有奖征集
- boost python异常处理_C++ boost.python折腾笔记