java中阶之Object相关方法,字符串(String,StringBuffer,StringBuilder),BigDecimal和BigInteger,时间相关类(Date)

在这里插入图片描述

十七.Object

概念:所有类的父类

意味:

该类提供的属性与方法是所有类的对象都可以使用

提供的方法

1.equals

public boolean equals(Object obj)
	作用:判断调用该方法的对象与传入的对象的内存地址是否相同
	如果子类重写该方法,使用子类对象调用该方法执行的是重写的代码
	如果要比较子类的对象属性值是否相同,要重写equals方法
重写步骤:
	1.判断内存地址是否相同
	2.判断传入的对象是否属于该类对象
	3.将传入的对象转换为该类对象(父类转子类对象)
	4.使用调用该方法的对象的属性与传入的对象属性一一比较

2.toString

public String toString()
作用:获取对象的包名.类拼接@字符串,再拼接对象的内存地址的16进制
注意:
	1.Object提供的toString方法返回的是对象的包名.类@对象内存地址的16进制,可以理解为是对象的信息,但是我们在观察对象时,想看到的是对象的属性值,所以我们可以在子类中重写toString方法,重写后对象在调用toString方法,执行的是重写后的toString方法.
	2.重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString方法
	3.直接输出一个对象时,toString方法会被默认调用

3.hashCode

作用:获取对象的哈希码值,近似可以理解为对象的内存地址
注意:
1.提高具有哈希结构的容器的效率
2.两个引用,如果指定的是同一个对象,则哈希值肯定是一样的
3.两个引用,如果指向的是不同的对象,则哈希值是不一样的
4.哈希值主要根据地址号来的,不能完全等价于地址

4.finalize

作用:系统回收该对象的内存时,才会被调用
注意:
	1.当对象被回收时,系统自动调用该对象的finalize方法,子类可以重写该方法做一些释放资源的操作
	2.当某个对象没有任何引用时,则jvm就认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销毁对象,在销毁前,就先调用finalize
	3.垃圾回收机制的调用,是由系统来决定的,也可以通过System.gc主动触发垃圾回收机制

5.Math

作用:数学运算与随机数

提供的方法

static double random();
	作用:随机获取0-1之间的数
	使用:要想获得特定区间的随机数,random*区间最大值+1;
static int abs(int a);
	作用:获取其指定数据的绝对值	
static double floor(double a);
	作用:向下取整
static double ceil(double a);
	作用:向上取整
static int max(int a , int b)
	作用:获取两数之间的最大值
static int min(int a , int b);
	作用:获取两束之间的最小值
static double pow(double a,double b)
	作用:计算a的b次幂

6.字符串

6.1String

细节:

1.String用于保存字符串,也是一组字符序列
2.字符串常量对象是用双引号括起来的字符序列
3.字符串的字符使用Unicode字符编码,一个字符占两个字节
4.String 实现了很多构造器,构造器重载
5.String是fianl类不能被继承
6.Stirng保存字符串时保存在private final char value[];
7.value是final类型,赋值后不能修改(地址不能修改,值可以修改),一个字符串对象一旦分配,其内容是不可变的,指向改变
8.String 这个类实现了Serializable,说明String可以串行化,可以网络传播
9.String这个类实现了Comparable,说明String对象可以比较

创建方式:

1.直接赋值
	String s = "hhhh";
先从常量池查看是否有"hhhhhh"数据空间,如果有,直接指向:如果没有,则重新创建,然后指向,s最终指向的是常量池的地址空间
2.调用构造器
	String s = new String("xxxx");
	先从堆中创建空间,里面维护了value属性,指向常量池的"xxxx"的空间,如果常量池没有"xxxx"重新创建,如果有,直接通过value指向,最终指向的是堆中的空间

常见方法:

public String replace(String old,String newStr)
	作用:替换
	1:要被替换的字符串
	2:替换后的字符串	
public int length()
	作用:获取字符串长度
char charAt(int index)
	作用:获取字符串中指定位置的字符
public char[] toCharArray()
	作用:将字符串转换为字符数组
public boolean equals(Object anObject)
	作用:比较字符串内容是否相同
public boolean equalsIgnoreCase(String anotherString)
	作用:忽略大小写比较字符串内容是否相同
public String trim()
	作用:忽略前后空白
boolean endsWith(String suffix)
	作用:判断字符串是否以指定的字符串结束
boolean startsWith(String prefix)
	作用:判断字符串以什么开始
public String toUpperCase()
	作用:将字符串中的小写字母转换为大写字母
public String toLowerCase()
	作用:将字符串中的大写字母转换为小写字母
boolean contains(String s)
	作用:判断s是否在调用该方法的字符串中存在
public int lastIndexOf(String str)
	作用:获取指定的子字符串在字符串中最后一次出现的位置
public int indexOf(String str)
	作用:获取指定的子字符串在字符串中第一次出现的位置
public String substring(int beginIndex)
	作用:截取指定位置的字符串,从开始位置到字符串末尾
	beginIndex:开始位置
public String substring(int beginIndex , int endIndex)
	作用:截取指定位置的字符串
	1:开始位置
	2:结束位置	
public String[] split(String regex)
	作用:切割
	1:按什么字符串切割

构造函数

public String(char value[])
	将传入的字符数组转换为字符串
public String(char value[],int offset,int count)char数组中,从offset开始截取count位字符	

6.2StringBuffer和StringBuilder

长度可变

1.StringBuffer

​ 特点:jdk1.0出现,线程安全的,效率低

StringBuffer是一个容器
	1.StringBuffer的直接父类是AbstractStringBuilder
	2.StringBuffer实现了Serializable,即StringBuffer的对象可以串行化
	3.在父类中有一个属性char[] value,不是final
	4.该value数组中存放字符串内容,引出存放在堆中的StringBuffer是一个public final class,所以StringBuffer不能被继承
	5.因为StringBuffer字符内容是存在char[]value,所以增加和删除不用每次都更换地址,即每次都创建新的对象,故效率高于String
2.StringBuilder

特性:JDK1.5出现,线程不安全,效率高

1.一个可变字符序列,此类提供了一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全的),该类被设计用做StringBuffer的一个简易替换,用在字符串缓存区被单个线程使用的时候,如果可能,简易有先采用StringBuilder,在大多数实现中,他比StringBuffer要快
2.在StringBuilder上主要操作的是append和insert方法,可重载这些方法,以便于接受任意类型的数据
3.单线程的情况下使用StringBuilder
3.提供的方法
1.StringBuilder append(Object obj)
	作用:给字符串尾部拼接字符串
2.StringBuilder insert(int offset , String str)
	作用:插入
	1参:插入开始的位置
	2参.插入的数据
3.StringBuilder delete(int start,int end)
	作用:删除指定区间的数据
	1参:开始位置,包含
	2餐:结束位置,不包含
4.StringBuilder deleteCharAt(int index)
	作用:删除指定位置的字符
	1参:指定位置
5.StringBuilder replace(int start ,int end,String str)
	作用:替换
	1.参:要替换的数据的开始位置,包含
	2.参:要替换的数据的结束位置,不包含
	3.替换后的字符串
6.toString()
	作用:将可变字符转换为不可变字符
	StringBuffer str = new StringBuffer();
	String s = str.toString();
	
	不可变字符转可变字符
	String str = "hello";
	StringBuffer s = new StringBuffer(str);

十八.BigDecimal和BigInteger

1.BigDeciamal

适合保存精度更高的浮点型

构造函数

BigDeciaml(Object obj);

提供方法

BigDecimal subtract(BigDecimal subtrahend)
	作用:减法,使用调用该方法的对象的值减去传入的对象的值,返回计算结果
BigDecimal add(BigDecimal augend)
	作用:加法
BigDeciamal multiply(BigDecimal multiplicand)
	作用:乘法
BigDeciaml divide(BigDecimal divisor)
	作用:除法
xxx xxxValue();
	作用:获取BigDeciaml的值

2.BigInterger

BigInteger适合保存比较大的整型

方法同上

十九.时间相关类

1.Date

概念:日期

创建

//public Date();获取当前系统时间
//public Date(long date);
//获取距离1970年1月1日00.00.00的时间,单位毫秒
	
	Date date = new Date();
        System.out.println(date);
        Date date1 = new Date(1000);
        System.out.println(date1);
new Date()默认输出的格式为国外
就需要格式转换,通过创建SimpleDateFormat对象可以指定格式: yyyy年MM月dd日  hh:mm:ss E
E代表星期中的天数

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");

​ format:将时间对象转换为指定格式的字符串
​ parse:将指定格式的字符串转换为时间

before,after

2.Calendar

概念:日历

创建

static Calender getInstance()

方法

get
System.out.println("年"+instance.get(Calendar.YEAR));
System.out.println("月"+(instance.get(Calendar.MONTH)+1));//Calender'是按照0开始编号
System.out.println("日"+instance.get(Calendar.DAY_OF_MONTH));
System.out.println("小时"+instance.get(Calendar.HOUR));
System.out.println("分钟"+instance.get(Calendar.MINUTE));
System.out.println("秒"+instance.get(Calendar.SECOND));
set
add
getTime

3.第三代时间

在JDK8中加入了LocalDate(日期),LocalTime(时间),LocalDateTime(日期时间)

  • LocalDate只包含日期,可以获取日期字段

  • LocalTime只包含时间,可以获取时间字段

  • LocalDateTime包含日期+时间,可以获取日期和时间字段

 //使用now返回表示当前时间的对象
    LocalDateTime now = LocalDateTime.now();
    System.out.println(now);
    System.out.println("年:"+now.getYear());
    System.out.println("月:"+now.getMonth());
    System.out.println("月:"+now.getMonthValue());
    System.out.println("日:"+now.getDayOfMonth());
    System.out.println("时:"+now.getHour());
    System.out.println("分:"+now.getMinute());
    System.out.println("秒:"+now.getSecond());

  //可以获取年月日
    LocalDate now1 = LocalDate.now();
    System.out.println(now1.getYear());
    //可以获取时分秒
    LocalTime now2 = LocalTime.now();
 //使用DateTimeFormatter  格式日期类
LocalDateTime now3 = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日  HH时mm分ss秒");
String str=dateTimeFormatter.format(now3);
System.out.println(str);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半糖不加奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值