Java包装类

本文详细介绍了Java中的包装类,包括它们与基本数据类型的转换、自动装箱拆箱机制,以及包装类缓存值的特性。此外,还涵盖了String与其他包装类的转换方法,以及泛型和IO流(如File类的使用)的概念和应用。
摘要由CSDN通过智能技术生成

Java包装类

一、 包装类和基本数据类型的转换

为了使用方便Java中将基本数据类型进行了封装:除了Integer和Character之外,其他六个类的类名和基本数据类型基本保持一致,只是把首字母改成了大写

boolean -> Boolean char -> Character byte -> Byte string -> String int -> Integer
float -> Float double -> Double long -> Long

int和Integer可以相互转化

int i= 5Integer n1 = new Integer(i);  
Integer n2 = new Integer(5);
int n3 = n2.intValue(5);

自从jdk1.5之后,有了自动拆装箱语法
自动装箱:将基本数据类型封装为面向对象数据类型
自动拆箱:将对象重新转换为基本数据类型(将包装类转换为基本数据类型)

int-IntegerInteger-int
Integer.valueOf()自动装箱Integer.intValue() 自动拆箱

valueOf源码分析

public static Integer valueOf(int i) {
       assert IntegerCache.high>= 127;
       if (i >= IntegerCache.low&& i <= IntegerCache.high)
       		return IntegerCache.cache[i+ (-IntegerCache.low)];
       return new Integer(i);  
  }
————————————————

Integer i = 5; 相当于编译器执行了valueOf(5)操作。这个方法就是返回一个Integer对象,只是在返回之前,看作了一个判断,判断当前i的值是否在[-128,127]区间,且IntegerCache中是否存在此对象,如果存在则直接返回引用,否则,调用构造器执行类型转换!

4、包装类的缓存值
各个包装类的缓存值

boolean:truefalse

byte-128127

char0127

short-128127

int-128127

long-128127

float和double没有缓存值
转成double类都有什么好处

  1. 首先包装类是一种类,类就有定义好的属性或者方法,这些方法就完成了一些特定的功能,我们可以调用这些方法完成一些工作
  2. 基本数据类型都用隐形的默认值,不是类的对象,不能为null,很多时候我们可能需要这些类型为null,这时就需要包装类了
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/daee545127e94293913fcf18309994b8.png
        //其他进制转换到十进制
        System.out.println(Integer.parseInt("100",2));
        System.out.println(Integer.parseInt("10"));
        System.out.println(Integer.parseInt("100"));
        System.out.println(Integer.parseInt("1"));
        //十进制转换到其他进制
        System.out.println(Integer.toString(100,3));
        System.out.println(Integer.toString(100,4));
ic static void main(String[] args)
	{
		//public static boolean isUpperCase(int codePoint)判断给定的字符是否为大写字符
		System.out.println(Character.isUpperCase('A'));
		System.out.println(Character.isUpperCase('a'));
		System.out.println(Character.isUpperCase('0'));
		
		//public static boolean isLowerCase(char ch):判断给定的字符是否是小写字符
		System.out.println(Character.isUpperCase('A'));
		System.out.println(Character.isUpperCase('a'));
		System.out.println(Character.isUpperCase('0'));
		
		// public static boolean isDigit(int codePoint):判断给定的字符是否是数字
		System.out.println(Character.isUpperCase('A'));
		System.out.println(Character.isUpperCase('a'));
		System.out.println(Character.isUpperCase('0'));
		
		//public static char toUpperCase(char ch):把给定的字符转换为大写字符
		System.out.println(Character.toUpperCase('a'));
		
		//public static char toLowerCase(char ch):把给定的字符转换为小写字符
		System.out.println(Character.toLowerCase('A'));
	}

二、包装类和包装类之间的互相转换

2.1String 转换成 Integer
public static Integer string2Integer(String str){
	Integer num = null;
	if(isNull(str)){
		return num;
	} else{
	try{
	num = Integer.parseInt(str);
	}catch (NumberFormatException var3){
	log.info("Integer parse error [{}]",str);
	}
		return num;
	}
}
2.2 String 转换成Long
public static Long string2Long(String str){
	return isNull(str) ? null:Long.parseLong(str);
}
2.3 Long转换成String
public static String long2String(Long l){
	retrun isNull(l)null:l.toString;
}

2.4 Integer转换成String

public static String interger2String(Integer num){
	return isNull(num) ? null:String.valueOf(num);
}

String.valueOf底层源码

public static String valueOf(Object obj){
	return isNull(obj) ? "null" : obj.toString;
 }

java 泛型

集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在jdk1.5之前只能把元素类型设计为Object,jdk1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他部分都是确定的,例如关于这个元素如何保存,如果管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。Collection,List,ArrayList 这个 就是类型参数,即泛型。

泛型的概念

所谓泛型:就是允许在定义类、接口时通过一个标识表示类中某个属性的累心更或者是某个方法的返回值及参数类型。

IO流

1、file类的使用

File类的一个对象,代表一个文件或一个文件目录(文件夹)
File类声明在java.io下

 //相对路径
        File file1 = new File("Hello.txt");
        //绝对路径
        File file2 = new File("D:\\JavaStudy\\BigDeclmal1\\src\\File");

注意:路径中的每一级目录之间用一个路径分隔符隔开
路径分隔符和系统有关:
windows和DOS系统默认使用"“来表示
UNIX和URL使用”/"来表示
Java程序支持跨平台运行,因此路径分隔符要慎用
为了解决这个隐患,File类提供了一个常量“
public static final String separator 根据操作系统,动态的提供分隔符

        File file = new File("d: " + File.separator + "atguigu" + File.separator + "info.txt");

File类的获取功能:

  1. public String getAbsolutePath() :获取绝对路径
  2. public String getPath():获取路径
  3. public String getName() : 获取名称
  4. public String getParent():获取上层目录路径。若无,返回null
  5. public long length():获取文件长度。不能获取目录的长度
  6. public long lastModified():获取最后一次的修改时间,毫秒值
  7. public String[] list():获取指定目录下的所有文件或文件目录的名称数组
  8. public File[] listFiles()::获取指定目录下的所有文件或者文件目录的File数组
    File类的重命名功能
  9. public boolean renameTo(File dest):那文件重命名为指定的文件路径

2、IO流原理及流的分类

3、节点流

4、缓冲流

5、转换流

6、标准输入、输出流

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值