当前位置: 首页 > news >正文

Java 基本数据类型-包装类-String的相互转换(总结+代码实现)

image-20220923184934356

案例实现

@Test
public void typeConvertTest() {

	/**
	 * 基本数据类型->包装类 
	 * 1.调用包装类的构造器 (一般来说有两个,Character是只有一个,Float是两个) 
	 * 2.实际上可以直接赋值:自动装箱
	 */
	int num1 = 10;
	Integer num2 = new Integer(num1);
	Integer num3 = new Integer("10");
	Integer num4 = num1;//自动装箱

	/**
	 * 包装类->基本数据类型 
	 * 1.调用包装类的xxxValue();获取包装类中包含的基本数据类型 
	 * 3.实际上可以直接赋值:自动拆箱
	 */
	Double num5 = new Double(12.6);
	double num6 = num5.doubleValue();
	double num7 = num5;//自动拆箱
	
	/**
	 * 基本数据类型->String类
	 * 1.用+的链接效果基本数据类型+""
	 * 2.调用String重载的valueOf()
	 */
	float f1 = 12.6f;
	String str1 = f1 + "";
	String str2 = String.valueOf(f1);
	
	/**
	 * String类->基本数据类型
	 * 1.调用相应包装类的parseXxx(String)静态方法
	 * 2.通过包装类的String参数的构造器
	 */
	String str3 = "123";
	int num8 = Integer.parseInt(str3);
	int num9 = new Integer(str3);//自动拆箱
	
	/**
	 * String类->包装类
	 * 1.调用包装类中String形参的构造器
	 */
	String str4 = "45678";
	Integer num10 = new Integer(str4);
	
	/**
	 * 包装类->String类
	 * 1.调用包装类重载过的的toString()方法
	 */
	Integer num11 = new Integer(123);
	String str5 = num11.toString();

类型总结

  • 基本数据类型->包装类:调用包装类的构造器

    (基本数据类型包装成包装类的过程叫装箱)

    Character包装类提供唯一构造器

    image-20220923105041192

    Float包装类提供三个构造器

    image-20220923105358625

    其余六种包装类均提供两个构造器,String形参的构造器和包装类对应的基本数据类型形参的构造器。

    image-20220923110114802注意一般来说String形参的构造器要求是传进来的形参必须是包装类对应的基本数据类型的String。比如

    Integer i = new Integer("123abc");
    //错误要求必须是int对应的String
    

    这里强调Boolean包装类。

    Boolean包装类的构造器进行了优化,其String的构造器传进来的String,在不区分大小写的情况下,和String"true"比对,相等就就返回true,其余的都返回false

    额外留意:

    boolean b;//默认值是false 
    Boolean B;//默认值是null
    

    包装类很多构造器在新版本已弃用,JDK5.0以后允许出现自动装箱和自动拆箱,就不需要调用这些构造函数了。

  • 包装类->基本数据类型:调用包装类的xxxValue(),这个过程叫拆箱

    Integer in1 = new Integer(12);
    int i = in1.intValue();
    
  • 基本数据类型->String类型:调用String重载的valueOf()

    方法一:

    int num1 = 10;
    String str = num1 + "";//巧妙利用+
    

    方式二:调用String重载的valueOf(xxx xxx)

    float f1 = 12.3f;
    String str2 = String.valueOf(f1); //valueOf(基本数据类型)
    
  • 包装类->String类型:调用String重载的valueOf()

    Double d = 19.5;
    String str2 = String.valueOf(d);//valueOf(Object)
    
  • String类型->基本数据类型或包装类:调用包装类的方法parseXxx(String s)

    string str = "123";
    int num1 = (int)str;//错误写法
    Integer in1=(Integer)str;//instanceof为真才能转换,首先得有字符类关系才能进行类类型转换
    

    正确写法:

    String str = "123";
    int num = Inter.parseInt(str);
    

总结一句,要转成String的就用String重载的valueOf()。String要转成基本数据类型或包装类,就调用包装类的方法parseXxx(String s);

  • 自动装箱与自动拆箱
public void method(Object obj){
	System.out.println(obj);
}
public void test1(){
    int num=10;
    method(num);
}

将int类型数据传到Object类型的形参去一般来说是不行,但先版本有了有自动装箱和自动拆箱

  • 自动装箱----自动完成基本数据类型包装成包装类

    int num = 10;
    Integer num1 = num;//自动装箱,相当于调用了new Integer(num);
    int num2 = num1;//自动拆箱相当于调用了num1.intValue();
    
  • 自动拆箱----自动获得包装类对象中包装的基本类型变量

相关文章:

  • JUC并发编程
  • Spring注解驱动系列总结
  • 记一次mysql 命令行登录报错(error while loading shared libraries: libssl.so.1.1)
  • PyTorch中DataLoader及其与enumerate()用法介绍
  • mac 使用 PyQt5 和 py_designer 搭建窗体
  • 嵌入式SQL开发
  • 对于HTTP协议,什么是长连接和短连接?
  • ReentrantLock读写锁
  • leetcode 1680. Concatenation of Consecutive Binary Numbers(连接连续的二进制数)
  • Python数据分析之时间序列的处理
  • 【PHP】如何搭建服务器环境 原生篇 | Ubuntu 18.04 + PHP8.1 + MySQL5.7 + Nginx 1.4
  • 【c语言】数据在内存中的存储
  • 数据结构考试必须要掌握的重点知识
  • 进程管理4——进程优先级
  • 外网访问内网80端口【内网穿透】
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [Vue CLI 3] 配置解析之 css.extract
  • 30天自制操作系统-2
  • JavaScript实现分页效果
  • Java比较器对数组,集合排序
  • JS变量作用域
  • Laravel Telescope:优雅的应用调试工具
  • mysql中InnoDB引擎中页的概念
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • scala基础语法(二)
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • SpriteKit 技巧之添加背景图片
  • Theano - 导数
  • webpack4 一点通
  • 深入浏览器事件循环的本质
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 学习笔记TF060:图像语音结合,看图说话
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $refs 、$nextTic、动态组件、name的使用
  • (1)常见O(n^2)排序算法解析
  • (16)Reactor的测试——响应式Spring的道法术器
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (MATLAB)第五章-矩阵运算
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (分布式缓存)Redis哨兵
  • (附源码)php新闻发布平台 毕业设计 141646
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (正则)提取页面里的img标签
  • (转)人的集合论——移山之道
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET基础篇——反射的奥妙
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .NET中 MVC 工厂模式浅析
  • .Net中间语言BeforeFieldInit
  • @Bean有哪些属性
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [383] 赎金信 js