java常用类

一、Object类

1.概述:
Object也称超类,基类或父类,是所有类的直接或间接父类,位于继承树的最顶层。即任何类,如果没有书写exdents显示继承某个类,都默认继承Object类,否则为间接继承。

public class Student extends Object {   //默认继承Object
}

2.常用方法:
Object类中所定义的方法,是所有对象都具备的方法。可以存储任何对象;作为参数,可接收任何对象,作为返回值可返回任何对象.
getClass()方法:

  • 返回引用中存储的实际对象类型.
  • 应用:通常判断两个引用中存储的对象类型是否一致
public class StudentTest {

	public static void main(String[] args) {
		Student stu1 = new Student("张三","123");
		Student stu2 = new Student("李四","456");
//		判断stu1和stu2是不是同类型
		Class class1=stu1.getClass();
		Class class2=stu2.getClass();
		if(class1==class2) {  //false
			System.out.println("s1和s2属于同一个类型");  
		}else {
			System.out.println("s1和s2不属于同一个类型");
		}
	}
}

hashCode()方法:

  • 返回该对象的十进制的哈希码值。
  • 哈希算法根据对象的地址或字符串或数字计算出来的int类型的数值。
  • 哈希码并不唯一,可保证相同对象返回相同哈希码,尽量保证不同对象返回不同哈希码。
String str1 = "重地";
String str2 = "通话";
System.out.println(str1.hashCode());   //哈希码相同  1179395
System.out.println(str2.hashCode());   //哈希码相同  1179395

toString()方法:

  • 返回该对象的字符串表示(表现形式)。
  • 可以根据程序需求覆盖该方法,如:展示对象各个属性值。

重写Object类的toString方法

	@Override
	public String toString() {
		return "Student [name=" + name + ", num=" + num + "]";
	}

示例:

public class StudentTest {
	public static void main(String[] args) {
		Student stu1 = new Student("张三","123");
		Student stu2 = new Student("李四","456");
		//没有重写toString方法前,打印的是对象的内存地址
//		System.out.println(stu1);   //lession07.Student@15db9742	
//		System.out.println(stu2);   //lession07.Student@6d06d69c
		//重写后
		System.out.println(stu1);  //Student [name=张三, num=123]
		System.out.println(stu2);  //Student [name=李四, num=456]
	}
}

equals()方法:

  • 默认实现为(this == obj),比较两个对象地址是否相同。
  • 可进行覆盖,比较两个对象的内容是否相同。
public class StudentTest {
	public static void main(String[] args) {
		Student stu1 = new Student("张三","123");
		Student stu2 = new Student("张三","123");
		/*  Object的equals方法 ,只是比较两个对象的地址值
			 *  public boolean equals(Object obj) {
        				return (this == obj);
    				}
			 * 
			 */
		/*使用==比较,比较的是两个对象的地址值,但是其姓名
			 跟学号都是相同,认知上应该为同一个人
			 所以应该重写Object的equals方法
			*/		
		//重写前
		System.out.println(stu1.equals(stu2));  //false
		//重写后
		System.out.println(stu1.equals(stu2));  //true	
  }
}

equals重写步骤:

  • 比较两个引用是否指向同一个对象。
  • 判断obj是否为null。(使用instanceof可判断空值)
  • 判断两个引用指向的实际对象类型是否一致。
  • 强制类型转换。
  • 依次比较各个属性值是否相同。
@Override
	public boolean equals(Object obj) {
		if (this == obj) {	  //判断两个对象是否为同一个引用	
			return true;
		}
		if (obj instanceof Student) {		//判断传入的obj是否为Student 类型 ,如果obj为null那么instanceof是为false
			Student stu2 = (Student)obj;	//将obj强转为Student类型
			//比较属性值是否相同
			if (stu2.getName().equals(this.name) && stu2.getNum().equals(this.num)) {
				return true;
			}
		}	
		return false;
	}

finalize()方法

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

二、包装类

1.概述:
包装类即基本数据类型所对应的引用数据类型,Object可统一所有数据,包装类的默认值是null。
八大数据类型对应的引用类型为:

基本数据类型引用数据类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

2.装箱,拆箱:
八大基本数据类型与为包装类之间的互相装换
6个共性方法:

  • parseXXX()静态方法(除了Character)。
  • valueOf()静态方法。

注:需保证类型兼容,否则抛出NumberFormatException异常。
JDK 5.0之后,自动装箱、拆箱。基本数据类型和包装类自动转换。
示例:

public class Test {

	public static void main(String[] args) {
		int num =20;
		
		//装箱--->将基本数据类型转换为引用数据类型
		Integer a = Integer.valueOf(num);
		System.out.println(a);   //20
		
		//拆箱--->将引用数据类型装换为基本数据类型
		Integer b = new Integer(100);
		int c =b.intValue();
		System.out.println(c);    //100
		
		//基本数据类型装换为字符串
		String str1 =num+"";   //1.使用+拼接
		String str2 = Integer.toString(num);  //2.使用对应包装类的toString方法
		
		//字符串转换为基本数据类型
		String str3 ="200";
		int n = Integer.parseInt(str3); //使用parsexxx()方法
		System.out.println(n);
		
//		特殊boolean字符串形式转成基本类型,"true"--->true非"true"---->false
		String str4="TrUe";//true不分大小写  
		boolean b1=Boolean.parseBoolean(str4);
		System.out.println(b1);   //true
	}

}

即装箱用对应包装类的valueOf方法,拆箱用xxxValue()方法,基本数据类型与字符串之间转换用parsexxx()方法,【Character没有】。

Integer缓冲区
java为Integer规定了一个缓存范围即(-128-127)如果使用Interger直接赋值的情况下是直接从常量池中拿,如果超出了范围则new一个新的对象来存值。
示例:

	Integer integer1=100;
	Integer integer2=100;
	System.out.println(integer1==integer2);//true
	
	Integer integer3=200;
	Integer integer4=200;
	System.out.println(integer3==integer4);//false

即200已经超出这个范围则会在堆内存中new一个新的对象来存储值。

三、大数,时间管理类

1.浮点类型大数(BigDeicmal):
用与精确计算浮点数。
创建方式:

BigDecimal bd=new BigDecimal(1.0);

注:BigDeicmal不能使用"+","-"等运算符,必须使用其提供的方法计算
计算方法:
加法:BigDecimal add(BigDecimal bd)
减法:BigDecimal subtract(BigDecimal bd)
乘法:BigDecimal multiply(BigDecimal bd)
除法:BigDecimal divide(BigDecimal bd)

2.Date类
1.概述:用于表示特定的瞬间,精确到毫秒值(1秒=1000毫秒)。其大部分方法以过时,被Calendar类取代
3.日历类(Calendar):
1.概述:Calendar 类是一个抽象类,无法直接实例化,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。
实例:

Calendar c = Calendar.getInstance();

2.常用方法:
void set(int year,int month,int date,int hourofday,int minute,int second):设置日历的年、月、日、时、分、秒。
int get(int field):返回给定日历字段的值。字段比如年、月、日等.
4.日期格式化SimpleDateFormat:
用于对日期进行格式化

public class TestSimpleDateFormat {
	public static void main(String[] args) throws Exception{
		//1创建SimpleDateFormat对象  y 年 M 月
		//SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH-mm-ss");
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
		//2创建Date
		Date date=new Date();
		//格式化date(把日期转成字符串)
		String str=sdf.format(date);
		System.out.println(str);
		//解析 (把字符串转成日期)
		Date date2=sdf.parse("1990/05/01");
		System.out.println(date2);
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值