• 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方法
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    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)调用其他语言来实现底层的访问。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3.包装类

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

    基本数据类型			对应的引用数据类型
    byte				Byte
    short				Short
    int					Integer
    long				Long
    
    float				Float
    double				Double
    
    boolean				Boolean
    
    char				Character
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

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

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

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

    整数:
    	int 变量名 = Integer.parseInt(要转换的字符串);
    	注意:要转换的字符串必须是整形字符串
    	
    小数:
    	double 变量名 = Double.parseDouble(要转换的字符串);
    	注意:要转换的字符串必须是纯数字组成字符串
    	
    布尔:
    	boolean 变量名 = Boolean.parseBoolean(要转换的字符串);
    	注意:除了true字符串以外,都是false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (4)进制转换

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

    (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
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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)
    	参数:子字符串
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    (2)可变字符串

    线程安全的:StringBuffer 	jdk1.0
    	
    线程不安全的:StringBuilder		jdk1.5
    
    特有方法:
    	append:追加到尾部
    
    注意:
    	1,方法中带有synchronized 表明此方法线程安全
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    
    大量的操作字符串时,可变字符串执行的时间短,占据的内存少
    
    注意:
    	1,使用 + 连接两个String字符串对象时,会在内存常量池中开辟一块空间存储连接后字符串的值
    	2,使用 append 连接连个 StringBuffer 对象时,其消耗的是堆内存空间
    		即:在堆中开辟一块空间,存储原有两个StringBuffer的地址,不会在常量池中开辟新空间
    	3,GC会回收堆中的垃圾(无栈中引用指向的对象)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5.精准计算:BigDecimal

    
    注意:
    	创建对象时传入的参数要是字符串(其他类型有bug),除法谨慎使用
    
    常用方法:
    	public BigDecimal add(BigDecimal augend):public BigDecimal subtract(BigDecimal subtrahend):public BigDecimal multiply(BigDecimal multiplicand):public BigDecimal divide(BigDecimal divisor):
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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();
    		}
    	}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    layui手机端使用laydate时间选择器被输入法遮挡的解决方案
    微服务框架 SpringCloud微服务架构 7 Feign 7.4 最佳实践分析
    2022年阿里云双十一金秋云创季:轻量应用服务器2核2G,1年低至49.68元
    Ubuntu22.04 在线安装 MySQL8
    SqlBoy:间隔连续问题
    HTML核心(3)-文本元素
    数据安全前沿技术研究数据安全
    Java泛型
    Vue3封装自定义指令和hooks,并发布npm包
    电力电子转战数字IC20220816day61——uvm入门实验3
  • 原文地址:https://blog.csdn.net/weixin_43715360/article/details/125528996