常用类

Object

  • Object类时所有类的父类。

  • 当一个类没有使用extends在指定父类的情况下,会默认为object为其父类。

  • 当一个类指定父类的时候,按照继承的传递性,子类会间接的继承object。

  • 所有类的对象,都可以看作是Object的对象。
    方法:

    hashCode():哈希码
    
    在数据结构中,有一种数据结构叫哈希表,哈希表需要用到哈希函数。
    哈希函数:对Key进行运算,得到地址。
    哈希表查找元素的效率:O(1).
    为了提高哈希运算的效率,每一个对象都应该有一个hashCode。
    哈希约定(哈希协定):
    1)依次执行中,对象没有修改时,hashCode是不变的
    2)相等的对象应该有相同的hashCode。
    3)不相等的对象可以有相同的hashCode,也可以不同。应该不同。
    
     Object的hashCode()返回的是内存地址。
    
    equals()
    
    比较两个对象是否逻辑相等【】。
    只是其他某个对象是否与此对对象“相等”
    == 引用类型的对象是否指向同一地址。
    
    Object的equals方法作用与==是一样的。
    如果需要逻辑上的比较,必须重写equals方法,同时有必要重写hashCode,以维持哈希协定。
    特点:
    
     	1)自反性
     	2)对称性
     	3)传递性
     	4)一致性
     	5)对于任何非空值,x.equals(null)为false。
     	
    clone()
    
    创建当前对象的副本。方法修饰符为,protected。这个方法在当前包内java.lang】可以用。
     要实现对象的克隆,必须重写clone方法; 类需要实现接口Cloneable ,才可以重写该方法,否则抛出CloneNotSupportExcept。
     克隆不会调用构造方法,而是在原有的对象的基础上,从内存中拷贝一份出来。克隆也是一种创建对象的方式。
      深克隆:深度复制
     	复制对象的同时复制引用对象的内存
     浅克隆:浅表复制     
     	复制对象的同时仅仅复制用用内容的地址。  
    
    finalize()
    
    当垃圾回收器会在清理对象时,调用该方法,以释放对象所占用的资源。
    
    toString()
      
     将对象转换成字符串的形式。
     通常需要重写该方法。
    
     Object对它的实现时返回数据类型@hashCode(16进制)
      
    
    getClass()
    
     获取当前对象的类型所对应的Class对象。
    
    wait()
    
    暂停当前线程
    
    notify()
    
    唤醒有wait暂停的线程。
    
    notifyAll()
    
    唤醒所有由wait暂停的线程
    

字符串

  • String
    字符串时常量,在创建之后不能更改。字符串缓冲区可以共享。
    特点:
    1)字符串是常量,保存字符串序列的属性value是一个常量数组,也没有提供修改下表元素的方法。String被final修饰为最终类,因此无子类。
    2)可以共享
    如果要比较两个字符串的值是否相等,必须要使用equals()方法。
    在这里插入图片描述
    所有的new都会在队中重新创建一个对象出来。
    JDK8+常量池在堆中。JDK8以前的常量池在方法区中。
    常量值运算会在编译时进行。
    在这里插入图片描述
    涉及到变量的计算,只能在执行时计算。字符串拼接会像new一样。

【小技巧】如果一个字符串的变量要与一个字符串的常量进行对比,要把常量写在前面,放置变量为null。
常量.equals(变量);//防止空指针
在这里插入图片描述

常用方法:
。 charAt(index)
。 compareTo()
。 toUpperCase()
。 toLowerCase()
。 equaqlIgnoreCase()忽略大小写进行比较
。 startsWith( )//判断某个字符串是否以某个字符串开始
。 endsWith( ) //判断字符串是否以某个字符串结尾
。 indexOf()
。 lastIndexOf()
。 replace(target,replacement) //字符串的替换,并不修改值,而返回一个新的字符串
。 split()//根据一定的要求拆分字符串。
。 subString()//拆分字符串、截取字符串。(左闭右开)
。 length()
。 isEmpty()
。 intern()//返回字符串的规范化表示形式。
。 trim()//删除头尾空白符的字符串
在这里插入图片描述

因为字符串是一个常量,所以所有试图改变字符串内容的操作都会创建新的对象。
字符串缓冲区StringBuffer支持可变的字符串

  • StringBuilder:大部分实现中,要比StringBuffer要快。可变字符串,线程不安全,用于单线程,优先使用,效率更高。

初始容量是十六个字符
扩容:原来的容量<<1+2;
如果新的容量话不够用,这时候扩容到能容下所有字符的最小容量,也可以是16+n。

  • StringBuffer:可变字符串,线程安全的,用于多线程,效率更低一些。

初始容量是十六个字符

时间日期

Java.util.Date

  • 表示时间点。可精确到年月日时分秒毫秒。
  • 时间戳:从1970年1月1日0点0分0秒,到当前时间所经历的毫秒数。使用long类型表示。
  • Date now=new Date();//表示对象创建时的时间的。
  • now.getTime();//获取从970到现在经历的毫秒数

java.util.Calender

JDK1.1新增的,专门用于时间运算的类。

  • 获取当前时间
  • Calendar c=Calendar.getInstance();
c.get(Calendar.YEAR);//获取年份
c.get(Calendar.MONTH)//获取月份
c.get(Calendar.DAY_OF_MONTH)//获取天数
  • c.add(Calendar,DAY_OF_MONTH,1);//将天数往后退算一天后的日期

  • Data与Calendar相互转换

  • 在这里插入图片描述

  • JDK8新的时间日期类

LocalDate:表示日期
LocalTime:表示时间
LocalDateTime:表示日期和时间
ZonedDate:表示带时区的日期
ZonedTime:表示带时区的时间
ZonedDateTime:表示带时区的日期和时间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1)创建对象
2)操作,获取设置年月日,时分秒,加减。
3)相互转换
4)时间日期与字符串之间的转换。

Date与字符串的转换
在这里插入图片描述

Java.sql.Date

Java.sql.TimeStamp

以上两个类,是在数据库访问时用的。他们都是java.util.Date的子类。
区别在于Date只表示你那余人。TimeStamp表示时间戳。

数学

  • Math:数学类

    用于执行基本数学运算的方法。
    floor():全舍舍入法,返回为double类型。
    ceil():全入法,返回为double类型。
    round():四舍五入,返回为long类型。

  • Math.random()随机数取值[0.0,1.0)
    1
    break也可以这样用。

  • Random:伪随机数的类

    指定随机种子时,结果固定

包装类

什么是包装类

八种基本数据类型,面向对象的表示形式

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

自动装箱和自动拆箱

  • 自动装箱

    基本数据类型的值,可以直接转换为相应的包装类型。
    Byte、Short、Character既可以赋值为整数,也可以赋值为字符。
    在这里插入图片描述

  • 自动拆箱

    包装类型的值,可以直接转换为基本数据类型的值。
    只要符合基本数据类型的自动转换即可。
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    不同的包装类型不能使用等号或者不等号比较,不会拆箱。
    基本类型与包装类型使用== !=时会自动拆箱

类似于String的常量池

在包装类型中,Byte、Short、Integer、Character也有常量池。
Byte -128~127
Short -128~127
Character 0~127
包装类型的值进行比较,必须使用equals方法。
包装类型的值,在进行运算时会先自动拆箱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值