JDK常用内部类

本文主要介绍了JDK中的常用类的主要方法,包括Object、System、包装类、字符串、精准计算BigDecimal、时间相关(Date、Calendar、SimpleDateFormat)!具体可以参考jdk1.8api文档!

1.Object

概念:所有类的父类

了解:
	1,如果一个类没有写继承关系,默认继承于Object
	2,所有类的对象都可以转换为Object的对象
	
常用方法:
	toString:打印对象时,(系统)默认调用对象的toString
		注意:Object提供的toString方法默认的返回值为包名.类名@对象哈希码值得16进制
		如果想要打印的是对象的属性信息,需要重写toString方法
		熟练度:掌握
	
	getClass:获取该类的类对象
		熟练度:了解
		
	hashCode:获取对象哈希码值
		熟练度:了解
		
	finalize:对象被回收前,由系统调用
	
	equals:比较对象是否一致,默认比较的是对象的内存地址
		如果需要比较对象的属性值,需要重写equals方法

2.System

概念:系统

常用方法:
	public static void gc():手动调用java垃圾回收机制(gc)
	public static native void arraycopy:复制数组
		 1:复制那个数组
		 2:从那个位置开始
		 3:复制到那个数组
		 4:从哪个位置开始复制
		 5:复制几个数据 
	public static native long currentTimeMillis():获取当前时间与格林威治时间19701100:00:00的时间差,单位毫秒
	
	 public static void exit(int status):退出当前程序,参数为0正常退出,0不正常退出


native主要用于方法上

	1,一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用CC++实现。
	2,在定义一个native方法时,并不提供实现体(比较像定义一个Java Interface),因为其实现体是由非Java语言在外面实现的
注意:
    主要是因为JAVA无法对操作系统底层进行操作,但是可以通过jni(java native interface)调用其他语言来实现底层的访问。

3.包装类

(1)基本数据类型包装类

基本数据类型			对应的引用数据类型
byte				Byte
short				Short
int					Integer
long				Long

float				Float
double				Double

boolean				Boolean

char				Character

(2)自动装箱与自动拆箱

自动装箱: 将基本数据类型转换为对应的包装类的对象
自动拆箱: 将包装类对象转换为基本数据类型

		Integer num01=10;	//自动装箱
		int num02=num01;	//自动拆箱

(3)将字符串转化为数字

整数:
	int 变量名 = Integer.parseInt(要转换的字符串);
	注意:要转换的字符串必须是整形字符串
	
小数:
	double 变量名 = Double.parseDouble(要转换的字符串);
	注意:要转换的字符串必须是纯数字组成字符串
	
布尔:
	boolean 变量名 = Boolean.parseBoolean(要转换的字符串);
	注意:除了true字符串以外,都是false

(4)进制转换

		String s01=Integer.toBinaryString(num02);	//二进制
		String s02=Integer.toHexString(num02);	//十六进制

(5)整数缓冲区(有可能在笔试题中出现)

取值范围:-128~127
*
因为jdk中存在-128~127的对象(在Integer源码中封装),所以在自动装箱时,
如果被装箱的数在此范围内,则直接将jdk中创建的对象之间赋值给栈中的引用(变量名),所以为true.
如果超过这个范围就需要从新创建包装类对象,所以判断为false

public static void main(String[] args) {
		Integer num01=127;
		Integer num02=127;
		
		Integer num03=128;
		Integer num04=128;
		
		System.out.println(num01==num02);	//结果为true
		System.out.println(num03==num04);	//结果为false
	}

4.字符串

(1)不可变字符串:String

常用方法
(1)判断字符串内存是否相同:
	public boolean equals(Object anObject)
	注意:String类中重写Object的方法
	
(2)忽略大小写比较字符串内容是否相同
	public boolean equalsIgnoreCase(String anotherString)

(3)将字符串转换为字符数组
	public char[] toCharArray()
	
(4)获取字符串长度
	public int length()
	
(5)获取字符串中指定位置的字符
	public char charAt(int index)
	参数:获取的字符在字符串中的位置
	
(6)判断字符串以什么结束
	public boolean endsWith(String suffix)
	参数:以什么结束的字符串
	
(7)判断字符串以什么什么开始
	public boolean startsWith(String prefix)
	参数:以什么开始的字符串
	
(8)获取子字符串在字符串中第一次出现的位置
	public int indexOf(String str)
	参数:子字符串
	注意:如果子字符串存在,返回子字符串第一次出现位置的下标,如果不存在返回-1
	
(9)获取子字符串在字符串中最后一次出现的位置
	public int lastIndexOf(String str) 
	参数:子字符串
	注意:如果子字符串存在,返回子字符串最后一次出现位置的下标,如果不存在返回-1
	
(10)忽略字符串中前后的空白:
	public String trim()
	注意:只能忽略前后的空白

(11)判断字符串是否为空字符串:
	public boolean isEmpty()

(12)将字符串转换为大写:
	public String toUpperCase()

(13)将字符串转化为小写:
	public String toLowerCase()
	
(14)替换
	public String replace(String oldChar, String newChar)
	参数:
		1,要被替换的子字符串
		2,替换后的子字符串
	
(15)切割
	public String[] split(String regex)
	参数:以什么切割
	
(16)截取
	public String substring(int beginIndex, int endIndex)
	参数:
		1,开始位置
		2,结束位置
	注意:
		前闭后开

(17)判断子字符串是否存在
	public boolean contains(String s)
	参数:子字符串

(2)可变字符串

线程安全的:StringBuffer 	jdk1.0
	
线程不安全的:StringBuilder		jdk1.5

特有方法:
	append:追加到尾部

注意:
	1,方法中带有synchronized 表明此方法线程安全

(3)可变字符串与不可变字符串的区别


大量的操作字符串时,可变字符串执行的时间短,占据的内存少

注意:
	1,使用 + 连接两个String字符串对象时,会在内存常量池中开辟一块空间存储连接后字符串的值
	2,使用 append 连接连个 StringBuffer 对象时,其消耗的是堆内存空间
		即:在堆中开辟一块空间,存储原有两个StringBuffer的地址,不会在常量池中开辟新空间
	3,GC会回收堆中的垃圾(无栈中引用指向的对象)

5.精准计算:BigDecimal


注意:
	创建对象时传入的参数要是字符串(其他类型有bug),除法谨慎使用

常用方法:
	public BigDecimal add(BigDecimal augend):public BigDecimal subtract(BigDecimal subtrahend):public BigDecimal multiply(BigDecimal multiplicand):public BigDecimal divide(BigDecimal divisor):

6.时间相关

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//SimpleDateFormat类
		SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd号 HH:mm:ss");
		
		//Date类
		Date date = new Date();
		System.out.println(date);
		
		//Calendar类
		 Calendar c = Calendar.getInstance();
		 Date time = c.getTime();
	     System.out.println(time);
		
		//将date个数的时间转换为特定格式的字符串
		String str = format.format(date);
		System.out.println(str);
		
		String str02 = "2020年06月06号 18:18:18";
		try {
			//将特定格式的字符串转换为date对象
			Date date2 = format.parse(str02);
			System.out.println(date2);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值