• Java开发笔记(二十七)数值包装类型


    方法的出现缘起优化代码结构,但它的意义并不局限于此,正因为有了方法定义,编程语言才更像一门能解决实际问题的工具,而不仅仅是只能用于加减乘除的计算器。在数学的发展过程中,为了表示四则运算,人们创造了加减乘除符号,对应Java编程的“+”、“-”、“*”、“/”。但是随着运算类型的增多,新的运算符号来不及创造了,于是出现了函数形式的运算操作,譬如三角函数sin、cos等等。这种数学函数就是方法的雏形,对于三角函数来说,角度类似方法的输入参数,而函数值类似方法的输出参数。
    自从有了方法,大部分的算术计算都可以使用方法来表达,不过基本数值类型如int、long等由于设计上的缘故,它们的变量并不能直接调用方法;因此Java另外为基本类型定义了对应的包装类型,通过包装变量才能调用相关的算术方法。下面是基本数值类型与包装数值类型的关系说明:
    字节型byte,对应包装字节类型Byte
    短整型short,对应包装短整类型Short
    整型int,对应包装整型Integer
    长整型long,对应包装长整类型Long
    浮点型flotat,对应包装浮点类型Flota
    双精度型double,对应包装双精度类型Double
    包装类型与基本类型一样,首先要声明包装变量,然乎对该变量进行赋值。给包装变量赋值(或称初始化)有三种方式,分别介绍如下:
    1、直接通过等号把具体数字赋值给包装变量,代码示例如下:

    		// 初始化包装变量的第一种方式:直接用等号赋值
    		Integer oneInteger = 1;
    

    2、调用Integer的valueOf方法完成指定数字的赋值,这里可将Integer换成该数字想要表达的包装类型,具体赋值代码见下:

    		// 初始化包装变量的第二种方式:调用包装类型的valueOf方法
    		Integer oneInteger = Integer.valueOf(1);
    

    3、使用关键字new创建新的包装变量,形如“new 包装类型名称(具体数字)”,下面是该方式的赋值代码例子:

    		// 初始化包装变量的第三种方式:使用关键字new创建新变量
    		Integer oneInteger = new Integer(1);
    

    话说包装变量的初始化方式为啥这么多呢?仿佛孔乙己号称茴香豆的茴字有四种写法。其实不管设计师还是程序员,大家都是人,有的喜欢简单点,有的希望严谨点,有的邋里邋遢,有的循规蹈矩,所谓萝卜青菜各有所爱,众口难调罢了。所以给包装变量赋值的写法,也只好一一照顾众人的口味,既有简单直白的写法,也有意思明了的写法,还有面向对象的写法,总有一款适合你。
    既然可以把基本类型的变量直接赋值给包装变量,那么反过来能否直接将包装变量赋值给基本变量呢?很遗憾这个操作是不允许的,并且也不能使用基本类型之间的强制类型转换,只能通过指定方法获得对应的基本变量数值。例如,要想把包装变量赋值给整型变量,则需调用该包装变量的intValue方法。依此类推,从包装变量获取字节数值、短整数值、长整数值、浮点数值、双精度数值,就得分别调用包装变量的byteValue方法、shortValue方法、longValue方法、floatValue方法、doubleValue方法。下面是将包装变量赋值给各种基本类型变量的代码例子:

    		// 初始化包装变量的第一种方式:直接用等号赋值
    		Integer oneInteger = 1;
    		System.out.println("oneInteger="+oneInteger);
    		// 把包装变量转换成字节变量,需要调用包装变量的byteValue方法
    		byte oneByte = oneInteger.byteValue();
    		System.out.println("oneByte="+oneByte);
    		// 把包装变量转换成短整变量,需要调用包装变量的shortValue方法
    		short oneShort = oneInteger.shortValue();
    		System.out.println("oneShort="+oneShort);
    		// 把包装变量转换成整型变量,需要调用包装变量的intValue方法
    		int oneInt = oneInteger.intValue();
    		System.out.println("oneInt="+oneInt);
    		// 把包装变量转换成长整变量,需要调用包装变量的longValue方法
    		long oneLong = oneInteger.longValue();
    		System.out.println("oneLong="+oneLong);
    		// 把包装变量转换成浮点变量,需要调用包装变量的floatValue方法
    		float oneFloat = oneInteger.floatValue();
    		System.out.println("oneFloat="+oneFloat);
    		// 把包装变量转换成双精度变量,需要调用包装变量的doubleValue方法
    		double oneDouble = oneInteger.doubleValue();
    		System.out.println("oneDouble="+oneDouble);
    

    对于数值包装变量来说,它们仍旧允许使用四则运算符进行计算操作,包括运算符“+”“-”“*”“/”“%”等等。然而若要判断两个包装变量是否相等,便不可通过双等号“==”来判断,而要调用包装变量的equals方法来校验。equals方法返回true表示待比较的两个包装变量值相等,返回false表示两个数值不等,调用equals方法的代码示例如下:

    		// 数值包装变量的equals方法相当于关系运算符“==”
    		boolean equalResult = oneInteger.equals(2);
    		System.out.println("equalResult="+equalResult);
    

    除了基本的类型转换与数值运算之外,包装类型还提供了其它几种常见的逻辑方法。比如sum方法用来求两个数字之和,max方法用来求两个数字的较大值,min方法用来求两个数字的较小值。另有compare方法用来比较两个数字的大小,若二者相等则返回0,前者较小则返回-1,后者较小则返回1。这几个方法的调用代码例子如下:

    		int a = 7, b = 8;
    		// 数值包装类型的sum方法相当于算术运算符“+”
    		int sum = Integer.sum(a, b);
    		System.out.println("sum="+sum);
    		// 数值包装类型的max方法用来求两个数字的较大值
    		int max = Integer.max(a, b);
    		System.out.println("max="+max);
    		// 数值包装类型的min方法用来求两个数字的较小值
    		int min = Integer.min(a, b);
    		System.out.println("min="+min);
    		// 数值包装类型的compare方法用来比较两个数字的大小,二者相等则返回0,前者较小则返回-1,后者较小则返回1
    		int compareResult = Integer.compare(a, b);
    		System.out.println("compareResult="+compareResult);
    

     

    更多Java技术文章参见《Java开发笔记(序)章节目录

  • 相关阅读:
    jdk源码剖析三:锁Synchronized
    ASP.NET的session操作方法总结
    C#文件相同性判断
    C#的DataTable操作方法
    C#二进制流的序列化和反序列化
    C#常用的IO操作方法
    C#缓存操作
    CLR中的程序集加载
    Oracle数据库的SQL分页模板
    奇妙的NULL值,你知道多少
  • 原文地址:https://www.cnblogs.com/pinlantu/p/9998393.html
Copyright © 2020-2023  润新知