包装类和自动解封装

包装类

8个基本类型的包装类
我们知道java是面向对象的语言,其精髓之一是可以使用多态性,提高程序的灵活度。但是java中有8个基本类型:byte,short,int,long,float,double,char,boolean。它们是以值的形式存在于内存中,而不是对象。它们不是Object的子类,不能参与面向对象的开发。

包装类的作用
让基本类型参与面向对象的开发
  可以获取其基本类型的取值范围
  可以将字符串转换成基本类型数据

基本类型包装类

对于8个基本类型,java提供了他们相应的包装类:
基本类型 包装类
byte            java.lang.Byte
short           java.lang.Short
int           java.lang.Integer
long         java.lang.Long
float         java.lang.Float
double      java.lang.Double
char         java.lang.Character
boolean    java.lang.Boolean
其中除了Character与Boolean的父类是Object之外,其余的都是继承自:java.lang.Number

Number及其主要方法

除了Character与Boolean之外的其他包装类都是继承自Number的,这些包装类都有一个共性,描述的都是数字。那么我们来了解一下他们的父类:java.lang.Number
Number是一个抽象类。本身不能实例化。Number 的子类必须提供将表示的数值转换为 byte、double、float、int、long 和 short 的方法
比如:
abstract double doubleValue() 以double形式返回指定的数值
abstract int intValue() 以int形式返回指定的数值
abstract float floatValue() 以float形式返回指定的数值
剩下的抽象方法请参阅API文档:java.lang.Number

 1 /**
 2  * Number 是6个数字类型包装类的父类
 3  * intValue 反向转换  把包装好的转换为int型
 4  */
 5
 6  class NumberDemo{
 7     public static void main(String[] args) {
 8         Number d=new Double(123.45);
 9         Number n=new Integer(345);
10         //将123.45 转换为int
11         int i = d.intValue();
12         System.out.println(i);
13         double dou =d.doubleValue();
14         System.out.println(dou);
15
16         i=n.intValue();
17         System.out.println(i);
18         dou = n.doubleValue();
19         System.out.println(dou);
20         

Integer.parsetInt()方法

java.lang.Integer是int的包装类,其每一个实例用于描述一个基本类型int的值。
Integer有一个静态方法static int parseInt(String s)
该方法的作用是将一个描述整数的字符串解析为该整数,并用int形式返回。该方法可能会抛出
NumberFormatException异常:当给定的字符串里边含有非整数字符时。
转的字符串不能是小数

/**
  * 包装类支持将字符串转换为对应的基本类型
  *
  */

 class    parseNumber{
     public static void main(String[] args) {
        String intStr ="123";     //z
        /*
         * 将字符串转换为int值
         * 包装类支持parsexxx方法
         */
        int num = Integer.parseInt(intStr);
        System.out.println(num+1);
    }
 }

Double.parseDouble()方法

自动装箱和拆箱
2.2.1. 自动装箱和拆箱的操作

如何在基本类型与包装类之间相互转换。
当我们需要将基本类型转换为包装类时,我们可以调用包装类的一个静态方法valueOf():

**
  * jdk 1.5之后推出新特性 自动拆装箱
  * @author Administrator
  *
  */

 class AutoboxingDemo{
     public static void main(String[] args) {
        int a=1;
        //转换为包装类推荐使用静态方法valueof()
        Integer ii =Integer.valueOf(a);
        say(a);//自动装箱
        //将包装类装换为基本类型
        ii=a;        //自动装箱
        int b =ii;  //自动拆箱

        Integer i =1;
        a=i;
    }
/**
 * 将输入的字符串转换为数字
 * @author Administrator
 *
 */

class ParseBumber{
     public static final String DOUBLE_REGEX="^[0-9]+\\.[0-9]+$";
     public static final String INTEGER_REGEX="^[0-9]+$";
     /*
      * 1创建Scanner用于获取用户输入的内容
      * 2通过整数的正则表达式验证用户输入的字符串  匹配则转换为整数
      * 3.不匹配通过小数的正则表达式转换为小数
      * 4.再不匹配 输出  不是数字
      */
     public void checkNumber(){
         Scanner scanner =new Scanner(System.in);
         System.out.println("请输入一个数");

         //nextLine 用于获取用户输入的一行字符串
         //next  空格分隔下一个
         String number =scanner.nextLine();
         if(number.matches(INTEGER_REGEX)){
             int i =Integer.parseInt(number);
             System.out.println("这个整数:"+i);
         }else if(number.matches(DOUBLE_REGEX)){
             double d= Double.parseDouble(number);
             System.out.println("这个小数:"+d);
         }else{
             System.out.println("输入不是数字");
         }
     }

     public static void main(String[] args) {
         ParseBumber Parse = new ParseBumber();
         Parse.checkNumber();
     }

 }
时间: 2024-08-06 20:02:17

包装类和自动解封装的相关文章

Java基础之包装类的自动装箱和拆箱详解

定义 在java中,数据类型可以分为两大类,即基本数据类型和引用数据类型,基本数据类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提供了相对应的包装类.(关于包装类的详细介绍请参看博客Java基础之常用类详解) 本篇博客主要讲述包装类的自动装箱和拆行机制. 所谓装箱,就是把基本数据类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int类型包装成Integer类型的对象,或者把double包装秤Double,等等. 所谓拆箱,就是和装箱的方向相反,将I

解密多媒体封装解封装框架

上一篇文章我们搭好了环境并编译出所需的ffmpeg库,本篇我们讨论如何利用ffmpeg提供的API函数进行多媒体文件的解封装(demux)过程.在讲解之前,我们需要了解一些基本的多媒体文件知识,大虾请飘过. 容器格式:不管是音频文件还是视频格式的文件,都是一个多媒体的容器,即container,比如常见的视频容器格式有avi.mp4.mkv.flv.rm/rmvb.mov.ts.vob.dat,音频容器格式有MP3.WAV.AAC.APE,FLAC等等,它容纳了视频.音频.字幕(subtitle

OSI互联数据包封装与解封装

当我们在七层协议最上层,主机A想和其它主机通信, 比如telnet到主机B,各层都为数据打包后再封装上自己能识别的数据标签,现在我们只说四层以下的通信过程. 1.当一个高层的数据包到达传输层,由于telnet使用TCP协议,传输层将上层传过来的数据不变再封装TCP的包头以便目标主机可以正确解包,继续向下层(网络层)传递. 2.网络层同样不会改变之前的数据包,当然也包括之前封装的任何包头,首先主机A要对目标主机作判断,他会用自己的IP地址和自己的子网掩码进行与运算结果是172.16.12.0,然后

WinRAR 自动解压 解压完成后,执行批处理文件

部分内容参考网页:http://bbs.kafan.cn/thread-1243208-1-1.html WinRAR 的自动解压文件功能使压缩包也能像 Setup 程序那样,双击后显示一个软件许可,然后自动在指定位置解压文件,最后自动执行软件. ·软件解密包——软件解密需要将很多文件拷贝到安装目录覆盖原文件,烦琐的操作非常适合制作自动解密包 ·自动演示包——用 PowerPoint 打包功能会生成众多文件,做成自动演示包后,方便文稿的演示与文件的管理  ·客户资料包——当您的客户不太懂电脑时,

函数参数自动解包

你使用*, **可以自动的对一个list,dict做函数参数,自动的解包 例子: def draw_point(x, y): # do some magic point_foo = (3, 4) point_bar = {'y': 3, 'x': 2} draw_point(*point_foo) draw_point(**point_bar) 这是一个非常捷径的用法. NOTE: 请看这两个程序的不同... def cheeseshop(kind, *arguments, **keywords

封装与解封装

封装:将数据变为比特流的过程中,在参考模型的每一层需要添加上特定的协议报头动作 动作:从高层往低层依次封装,在每一层使用特定的协议,对数据进行处理,在数据前添加特定的协议报头. 封装原则: 1:每一层在上一层数据前添加协议报头 2:添加完协议报头的整体,就是该层的PDU 3:每一层的PDU对于下一层来说就是上层数据(每一层的上层数据就是上层的PDU) PDU(协议数据单元,也就是每层的数据单位) 表示层:APDU 会话层:PPDU 传输层:SPDU 传输层:段(segment) 网络层:包(pa

Tomcat 没有自动解压webapp下的war项目文件问题

默认选择的tomcat安装在了C盘下的C:\Program Files下 所以webapp文件也在C盘下 选择启动tomcat时 我选择了 bin下的 Tomcat.exe 显示成功启动 打开项目网站显示404   到webapp文件下发现未解压war文件 选择bin下的startup.bat打开tomcat 显示报错 [java] view plain copy java.io.IOException: Unable to create the directory [C:\Program Fi

OSI七层模型、数据封装与解封装过程、TCP三次握手、四次挥手

作者:Georgekai 归档:学习笔记 2018/1/16 网络运维基础(二) 1.1 OSI七层模型  应用层:应用程序与接口(如qq和其他三方软件的对接--对应设备(计算机) 协议:http dns  telnet   nfs ftp tftp   smtp(25)  snmp(161) 表示层:表示数据的格式.压缩.加密 会话层:作用:建立.维护.管理应用程序之间的会话. 功能:对话控制.同步 传输层:作用:负者建立端到端的连接.保证报文在端到端之间的传输.--对应设备(防火墙) 功能:

tomcat会自动解压webapps目录下的war包

如图,把war包放到tomcat的webapps目录,会被自动解压 原文地址:https://www.cnblogs.com/shengulong/p/8334083.html