基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型之间做转换

包装类的由来

为了解决8种基本数据类型的变量不能当成Object类型变量使用的问题,Java提供了包装类(Wrapper Class)的概念,为8种基本数据类型分别定义了相应的引用类型,并称之为基本数据类型的包装类

包装类的使用

基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean
  • 除了int和char,其他的只需将首字母大写即可

  • 在JDK1.5以前

    ①把基本数据类型变量变成包装类实例需要通过对应包装类的构造器实现

    ②如果希望得到包装类对象中包装的基本数据类型变量,则可以使用xxxValue()实例方法

  • 而JDK1.5以后提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能

    • 自动装箱:可以把一个基本数据类型变量直接赋值给对应的包装类变量,或者赋给Object变量。
    • 自动拆箱:允许直接把包装类对象直接赋值给一个对应的基本类型变量。

      e.g.
    ···
    Integer inObj = 5;
    Object boolObj = true;
    int it = inObj;
    ···

基本数据类型变量和字符串之间的转换

  1. 把字符串类型转换成基本数据类型的值有两种方式。

    • 利用包装类提供的parseXxx (String s)静态方法(除Character)
    • 利用包装类提供的Xxx (String s)构造器
    String intStr = "123";
    int it1 = Integer.parseInt(intStr);
    int it2 = new Integer(intStr);
  2. String提供多个重载valueOf()方法,用于将基本数据类型转化为字符串

String ftStr = String.value(2.345f);
String boolStr = String.value(true);
  1. 将基本数据类型转为字符串最简单的方法是使用 “+” 将 “” 与需要连接的数据相连接
  • 注意:虽然包装类的变量是引用数据类型,但是包装类的实例可以与数值型的值直接进行比较,这种比较是直接取出包装类实例所包装的数值来进行比较的,但若两个包装类进行比较,那么只有这两个包装类必须指向同一个对象时才会返回true

Java8增强的包装类

  • Java8为Integer、Long增加了如下方法:

    • startic String toUnsignedString (int/long i):该方法将指定int或long整数转化为无符号整数对应的字符串
    • startic String toUnsignedString (int/long i , int radix):该方法将指定int或long整数转化为指定进制的无符号整数对应的字符串
    • static xxx parseUnsignedXxx (String s):该方法将指定字符串解析成无符号整数
    • static xxx parseUnsignedXxx (String s, int radix):该方法将指定字符串按指定进制解析成无符号整数
    • static int compareUnsigned (xxx x, xxx y):该方法将x、y两个整数转化为无符号整数后比较大小
    • static long divideUnsigned (long dividend, long divisor):该方法将x、y两个整数转化为无符号整数后计算他们相除的商
    • static long remainderUnsigned (long dividend, long divisor):该方法将x、y两个整数转化为无符号整数后计算他们相除的余数
  • Java8还为Byte、Short增加了toUnsignedInt (xxx x)toUnsignedLong (yyy x)两个方法,这两个方法将指定byte或short类型变量或值转化成无符号的int或long值

包装类总结

  • 基本数据类型转成字符串

    基本数据类型 + “”

    基本数据类型.toString(基本数据类型值);

    如: Integer.toString(34); //将34整数变成"34";

  • 字符串转成基本数据类型

xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt("123");
double b = Double.parseDouble("12.23");
boolean b = Boolean.parseBoolean("true");
Integer i = new Integer("123");
int num = i.intValue();

十进制转成其他进制

toBinaryString();
toHexString();
toOctalString();

其他进制转成十进制。

parseInt(string,radix);

一个现象

Integer m = 128;
Integer n = 128;
//此时m != n Integer a = 127;
Integer b = 127;
//此时m == n //因为a和b指向了同一个Integer对象
//因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会在开辟新的空间

Java学习笔记-包装类的更多相关文章

  1. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  2. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  3. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  4. Java学习笔记之---API的应用

    Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...

  5. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  6. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  7. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  8. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  9. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

随机推荐

  1. click([[data],fn]) 触发每一个匹配元素的click事件。

    click([[data],fn]) 概述 触发每一个匹配元素的click事件. 这个函数会调用执行绑定到click事件的所有函数.大理石平台精度等级 参数 fnFunctionV1.0 在每一个匹配 ...

  2. struts1 action之间的跳转

    ActionForward actionForward = new ActionForward(); actionForward.setPath("xxxxxxxx");//跳转的 ...

  3. 【FTP】详解

     FTP协议及工作原理 1. FTP协议  什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的 ...

  4. Vue-es6基础语法

    什么是ES6 ECMAScript 6 简称ES6, 在2015年6月正式发布~  ECMAScript 是JavaScript语言的国际标准. 我们本着二八原则,掌握好常用的,有用的~能让我们更快的 ...

  5. win10以及ubuntu下设置pip源

    问题描述:有一段时间下载python库的时候速度非常慢,想着提高安装python库的速度. window10下: 一:首先进入c盘的用户目录,如我的目录为C:\Users\felix. 二:创建名为p ...

  6. 7.26T2某不科学的迷你激光炮

    题目描述 身为课代表的她,下课总愿意帮老师发作业.老师的作业好多好多啊,一天 下来,她下课休息时间也无几了…… 要是天花板上有一只激光炮该多好啊!把作业塞到激光炮里面,轰——一排 同学该都拿到作业了吧 ...

  7. CF1200B

    CF1200B 解法: 贪心.当在第i列时,尽可能多的取走第i列的木块使得袋子里的木块尽可能多 CODE: #include<iostream> #include<cstdio> ...

  8. linux系统rwx(421)、777权限详解

    摘要 linux的常见权限,mark一下 常用的linux文件权限如下: 444 r--r--r-- 600 rw------- 644 rw-r--r-- 666 rw-rw-rw- 700 rwx ...

  9. Consul CAP理论纠错

    Consul CAP理论纠错 随便搜索Consul.zookeeper.etcd.eureka注册中心比较相关博客文章,你都会发现千篇一律的是以下这幅对比图:但是我对Consul使用的是CA架构还是C ...

  10. 谷歌浏览器试调网页 多出font标签

    突然发现一些按钮的点击功能失效,在控制台发现该a标签中多出个font标签,导致文字区域不能触发到a标签 就算a标签宽高设置百分百 也没用. 经测试不同的浏览器情况不一样 safari就不会出现这种情况 ...