java 包装类方法总结_【源码】java包装类总结

1.包装类除了Void和Character,其他六个全部都继承自Number。Number是一个抽象类。如下:

public abstract class Number implements java.io.Serializable {

public abstract int intValue();

public abstract long longValue();

public abstract float floatValue();

public abstract double doubleValue();

public byte byteValue() {

return (byte)intValue();

}

public short shortValue() {

return (short)intValue();

}

private static final long serialVersionUID = -8742448824652078965L;

}

2.Integer、Byte、Short、Long内部都有"缓存"静态类,以Integer为例:

缓存即一个Integer数组,默认大小为-128~127。初始化时,会new出256个Integer对象存在此数组中。

private static class IntegerCache {

static final int low = -128;

static final int high;

static final Integer cache[];

static {

int h = 127;

String integerCacheHighPropValue =

sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");

if (integerCacheHighPropValue != null) {

int i = parseInt(integerCacheHighPropValue);

i = Math.max(i, 127);

// Maximum array size is Integer.MAX_VALUE

h = Math.min(i, Integer.MAX_VALUE - (-low));

}

high = h;

cache = new Integer[(high - low) + 1];

int j = low;

for(int k = 0; k < cache.length; k++)

cache[k] = new Integer(j++);

}

private IntegerCache() {}

}

当调用Integer.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将加载缓存数组延迟到了最晚,避免浪费空间。

另外可以通过intValue方法返回Integer对应的int值(其他包装类类似):

public int intValue() {

return value;

}

value是Integer成员变量,构造时被传递进来:

private final int value;

public Integer(int value) {

this.value = value;

}

public Integer(String s) throws NumberFormatException {

this.value = parseInt(s, 10);

}3.除了Void类,其余包装类均实现了Comparable接口,可以通过compareTo方法比较两个包装类的大小。同时包装类提供了静态的compare方法比较两个参数的大小(以Integer为例):public int compareTo(Integer anotherInteger) {

return compare(this.value, anotherInteger.value);

}

compareTo方法其实调用了compare静态方法:public static int compare(int x, int y) {

return (x < y) ? -1 : ((x == y) ? 0 : 1);

}4.Integer的getInteger方法的作用是返回具有指定名称的系统属性的整数值,不要误用。public static Integer getInteger(String nm, Integer val) {

String v = null;

try {

v = System.getProperty(nm);

} catch (IllegalArgumentException e) {

} catch (NullPointerException e) {

}

if (v != null) {

try {

return Integer.decode(v);

} catch (NumberFormatException e) {

}

}

return val;

}

5.包装类的toString方法经过了重写

public static String toString(int i) {

if (i == Integer.MIN_VALUE)

return "-2147483648";

int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);

char[] buf = new char[size];

getChars(i, size, buf);

return new String(buf, true);

}

public String toString() {

return toString(value);

}

6.可以使用parseXXX方法将字符串转化为对应的数字。

public static int parseInt(String s, int radix)

throws NumberFormatException

{

/*

* WARNING: This method may be invoked early during VM initialization

* before IntegerCache is initialized. Care must be taken to not use

* the valueOf method.

*/

if (s == null) {

throw new NumberFormatException("null");

}

if (radix < Character.MIN_RADIX) {

throw new NumberFormatException("radix " + radix +

" less than Character.MIN_RADIX");

}

if (radix > Character.MAX_RADIX) {

throw new NumberFormatException("radix " + radix +

" greater than Character.MAX_RADIX");

}

int result = 0;

boolean negative = false;

int i = 0, len = s.length();

int limit = -Integer.MAX_VALUE;

int multmin;

int digit;

if (len > 0) {

char firstChar = s.charAt(0);

if (firstChar < '0') { // Possible leading "+" or "-"

if (firstChar == '-') {

negative = true;

limit = Integer.MIN_VALUE;

} else if (firstChar != '+')

throw NumberFormatException.forInputString(s);

if (len == 1) // Cannot have lone "+" or "-"

throw NumberFormatException.forInputString(s);

i++;

}

multmin = limit / radix;

while (i < len) {

// Accumulating negatively avoids surprises near MAX_VALUE

digit = Character.digit(s.charAt(i++),radix);

if (digit < 0) {

throw NumberFormatException.forInputString(s);

}

if (result < multmin) {

throw NumberFormatException.forInputString(s);

}

result *= radix;

if (result < limit + digit) {

throw NumberFormatException.forInputString(s);

}

result -= digit;

}

} else {

throw NumberFormatException.forInputString(s);

}

return negative ? result : -result;

}

public static int parseInt(String s) throws NumberFormatException {

return parseInt(s,10);

}

原文:http://blog.csdn.net/chdjj/article/details/38356325

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

扩展枚举功能的两种方法

前言 在上一篇文章中&#xff0c;我解释了如何以及为什么在Java代码中使用enums而不是switch/case控制结构。 在这里&#xff0c;我将展示如何扩展现有enums功能。 介绍 Java enum是一种编译器魔术。 在字节码中&#xff0c;任何enum都表示为扩展抽象类java.lang.Enum并具有几…

【渝粤教育】国家开放大学2018年春季 7403-21T素质与思想政治教育 参考试题

编码&#xff1a;7403 座位号&#xff1a; 2017-2018学年度第二学期期末考试 素质与思想政治教育试题&#xff08;开卷&#xff09; 2018年7月 一、单项选择题&#xff08;每题3分&#xff0c;共30分&#xff09; 考生注意&#xff1a;请将答案填写在下面的方框内&#xff0c;…

工业交换机和工业级光纤收发器的区别

工业交换机和工业级光纤收发器都是网络数据传输设备中的重要组成部分。工业交换机是进行网络内数据交换的一种以太网连接设备&#xff0c;而工业级光纤收发器是延长传输距离的一种光电转换设备。那么他们之间具体有哪些不同之处呢&#xff1f;接下来就由飞畅科技的小编来为大家…

【渝粤教育】国家开放大学2018年春季 8635-21T老年人中医体质辨识与养 参考试题

科目编号&#xff1a;8635 座位号 2017-2018学年度第二学期期末考试 老年人中医体质辨识与养生保健试题 2018年6月 一、名词解释&#xff08;本大题共5小题&#xff0c;每小题4分&#xff0c;共计20分&#xff09; 1.拔罐 2.炙法 3.气虚体质 4.阳虚体质 5.痰湿体质 二、填…

java.lang.stackoverflowerror_java.lang.StackOverflowError——如何解决StackOverflowError错误

StackOverflowError在程序栈空间耗尽时抛出&#xff0c;通常是深度递归导致。StackOverflowError继承了VirtualMachineError类&#xff0c;后者表示JVM已被破坏或资源耗尽。更进一步&#xff0c;VirtualMachineError继承自Error类&#xff0c;应用程序不应该捕获这种严重的错误…

【渝粤教育】国家开放大学2018年春季 8664-21T文书档案管理 参考试题

试卷编号&#xff1a;8664 座位号 2017——2018学年度第二学期期末考试 文 书 档 案 管 理 试 题 2018年7月 1&#xff0e;从文书的形成和使用上划分&#xff0c;文书可分为 和 两类。 2&#xff0e;文头一般由公文名称&#xff08;又称版头&#xff09;、 、 、 、 等部组成…

couchbase_Spring Data Couchbase 1.0 GA发布

couchbaseSpring Data Couchbase 1.0 GA版本已发布&#xff01; 该项目是Spring Data项目的一部分&#xff0c;该项目旨在为新数据存储提供熟悉且一致的基于Spring的编程模型&#xff0c;同时保留特定于存储的功能。 Spring Data Couchbase项目提供了与Couchbase Server数据库…

工业交换机厂家,工业交换机品牌前十大排名

工业交换机&#xff0c;也叫工业以太网交换机。随着物联网的快速发展&#xff0c;工业交换机市场竞争也越来越激烈。国内的工业交换机厂家&#xff0c;像北京东土、深圳三旺、杭州飞畅科技等都有自己的研发团队&#xff0c;产品质量和进口的几乎没有差别&#xff0c;但是价格比…

【渝粤教育】国家开放大学2018年秋季 0043-22T计算机文化 参考试题

编号&#xff1a;0053 座位号&#xff1a; 2018&#xff5e;2019学年度第一学期期末考试 立体构成 试题 2019年1月 一、实作题&#xff08;100分&#xff09; 运用所学知识&#xff0c;完成一件“渐变层面构造”的立体构成作品。 要求&#xff1a;1.所用材料为纸质材料。 2.作…

设计php框架_自制PHP框架之设计模式

为什么要使用设计模式&#xff1f;设计模式&#xff0c;我的理解是为了达到“可复用”这个目标&#xff0c;而设计的一套相互协作的类。感兴趣的读者可以阅读《Design Patterns: Elements of Reusable Object-Oriented Software》&#xff0c;四位作者(Gang of Four)在书中列举…

Java将列表转换为数组,反之亦然

介绍&#xff1a; 在本文中&#xff0c; 我们将快速学习如何将Java List &#xff08;例如ArrayList &#xff09;转换为数组&#xff0c;反之亦然。 如果您希望总体上了解有关ArrayList的更多信息&#xff0c;请随时阅读我们有关Java ArrayLists的文章。 同时&#xff0c;让我…

工业交换机选择时需要注意什么?

工业以太网交换机是用于连接以太网的设备&#xff0c;应用十分广泛&#xff0c;主要应用于&#xff1a;煤矿安全、轨道交通、工厂自动化、水处理系统、城市安防等。现如今&#xff0c;市场上的工业交换机品牌厂家有很多&#xff0c;如何选购合适的以太网交换机是件令人困扰的事…

【渝粤教育】国家开放大学2018年秋季 0266-22T设计构成 参考试题

试卷编号&#xff1a;0272 座位号 2018—2019年度第一学期期末考试 创建小企业 试题 一、名词解释&#xff08;每小题10分&#xff0c;共40分&#xff09; 1.产品 商业模式 创业计划 市场定位 二、单项选择题&#xff08;每小题3分&#xff0c;共30分&#xff0c;每小题只…

html如何与php,html页面怎么跟php文件连接

HTML页面调用PHP文件的方法是要通过JavaScript来实现&#xff0c;在生成静态页面时&#xff0c;可以根据数据库id给html页面生成一个对应的JavaScript文件来调用PHP文件。HTML页面调用PHP文件的方法是要通过JavaScript来实现&#xff0c;在生成静态页面时&#xff0c;可以根据数…

【渝粤教育】国家开放大学2018年秋季 0350-21T幼儿园课程论 参考试题

试题编号&#xff1a;0365 座位号 2018-2019 学年度第一学期期末考试 电子商务概论 试题 一、名词解释题: &#xff08;每题5分&#xff0c;共20分&#xff09; 1.网上问卷调研法: 2&#xff0e;社交网络营销&#xff1a; 银行卡线上支付&#xff1a; 第三方物流企业配送&am…

为使节构建控制平面的指南第3部分-特定于域的配置API

这是探索为Envoy Proxy构建控制平面的系列文章的第3部分。 在本博客系列中&#xff0c;我们将研究以下领域&#xff1a; 采用一种机制来动态更新Envoy的路由&#xff0c;服务发现和其他配置 确定哪些组件构成了控制平面&#xff0c;包括后备存储&#xff0c;服务发现API&…

工业交换机中:千兆级别和快速级别传输效率对比

目前市面上的工业交换机种类繁多&#xff0c;我们在采购工业交换机的时候&#xff0c;一般都是按照传输速率来进行挑选的。千兆工业交换机和快速以太网交换机都是传输速率比较快的工业交换机&#xff0c;那么&#xff0c;他们之间有哪些区别呢&#xff1f;接下来就由飞畅科技的…

《操作系统A》期末考试复习题——大题51-62(手写笔记)

51、如果限制为两道的多道程序系统中&#xff0c;有4个作业进入系统&#xff0c;其进入系统时刻、估计运行时间为下图所示。系统采用SJF作业调度算法&#xff0c;采用SRTF进程调度算法。作业进入系统时刻、估计运行时间如下&#xff1a; 作业 进入系统时刻 估计运行时间/min …

【渝粤教育】国家开放大学2018年秋季 0553-21T色彩 参考试题

编号&#xff1a;0557 座位号&#xff1a; 2018&#xff5e;2019学年度第一学期期末考试 广告设计与制作 试题 2019年1月 一、设计题1&#xff08;每小题30分&#xff0c;共30分&#xff09; 请将“九州四海”设计成毎字44cm左右的与文字意义有直接联系的变形创意广告字体。 要…

php 登录记住密码,php 记住密码自动登录

做网站的时候会碰到记住密码&#xff0c;下次自动登录&#xff0c;一周内免登陆&#xff0c;一个月内免登陆这种需求。这种功能一般通过cookie来实现的。用户在登陆的时候&#xff0c;如果选择了记住密码或者一周内免登陆等这个选项的时候&#xff0c;则在用户成功登陆操作完成…