IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Integer源码 -> 正文阅读

[Java知识库]Integer源码

版权

/*
 * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

版权所有,甲骨文和/或其附属公司版权所有。
甲骨文专有/机密。使用受许可条款约束。

包和依赖

package java.lang;

import java.lang.annotation.Native;

The Integer class wraps a value of the primitive type int in an object. An object of type Integer contains a single field whose type is int.
In addition, this class provides several methods for converting an int to a String and a String to an int, as well as other constants and methods useful when dealing with an int.
Implementation note: The implementations of the "bit twiddling" methods (such as highestOneBit and numberOfTrailingZeros) are based on material from Henry S. Warren, Jr.'s Hacker's Delight, (Addison Wesley, 2002).
Since:
JDK1.0
Author:
Lee Boynton, Arthur van Hoff, Josh Bloch, Joseph D. Darcy

Integer是在java.lang包下的
导入了Native依赖
Integer类将基本类型int的值包装在对象中。整型对象包含一个整型字段。
此外,该类还提供了几种将int转换为字符串和字符串转换为int的方法,以及处理int时有用的其他常量和方法。
实施说明:“比特旋转”方法(如highestOneBit和numberOfTrailingZeros)的实施基于小亨利·S·沃伦(Henry S.Warren,Jr.)的《黑客之乐》(Addison Wesley,2002)中的材料。
自:
JDK1.0
作者:
李·博因顿、阿瑟·范霍夫、乔希·布洛赫、约瑟夫·D·达西

Native

再来看下导入的Native,它实际上是个接口

/*
 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package java.lang.annotation;


/**
 * Indicates that a field defining a constant value may be referenced
 * from native code.
 *
 * The annotation may be used as a hint by tools that generate native
 * header files to determine whether a header file is required, and
 * if so, what declarations it should contain.
 *
 * @since 1.8
 */
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.SOURCE)
public @interface Native {
}

指示可以引用定义常量值的字段
来自本机代码。
生成本机注释的工具可以将注释用作提示
头文件,以确定是否需要头文件,以及
如果是,它应该包含哪些声明。
@从1.8开始

注释

他有三个元注解

@Documented

@Documented: 将注解中的元素包含到Javadoc中

@Target(ElementType.FIELD)

@Target(ElementType.XXX):说明修饰的成员关系

constructor

描述构造器

Field

描述域

Local_variable

描述局部变量

method

描述方法

package

描述包

type

描述类、接口

@Retention(RetentionPolicy.SOURCE)

@Retention(RetentionPolicy.XXX):定义了注解被保留的时间长短

source

只在源码阶段保留,编译时被忽视

class

只被保留到编译进行时,不进JVM

Runtime

保留到程序进行时,会进JVM

总结

本地接口的作用就是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序,换而言之,Java的刚出现的时候(1995年10月)正式C/C++横行的时候,如果没有调用C/C++的程序很难立足,于是在内存中专门开辟了一块区域处理标记为native的方法,在Execution Engine执行的时候加载native libraies。
这个接口的作用就是调用本地方法库里面的用C语言写的方法

继承和实现

public final class Integer extends Number implements Comparable<Integer> {

可以看出,Integer继承了Number类,实现了Comparable接口

Number 类

package java.lang;

/**
 * The abstract class {@code Number} is the superclass of platform
 * classes representing numeric values that are convertible to the
 * primitive types {@code byte}, {@code double}, {@code float}, {@code
 * int}, {@code long}, and {@code short}.
 *
 * The specific semantics of the conversion from the numeric value of
 * a particular {@code Number} implementation to a given primitive
 * type is defined by the {@code Number} implementation in question.
 *
 * For platform classes, the conversion is often analogous to a
 * narrowing primitive conversion or a widening primitive conversion
 * as defining in <cite>The Java&trade; Language Specification</cite>
 * for converting between primitive types.  Therefore, conversions may
 * lose information about the overall magnitude of a numeric value, may
 * lose precision, and may even return a result of a different sign
 * than the input.
 *
 * See the documentation of a given {@code Number} implementation for
 * conversion details.
 *
 * @author      Lee Boynton
 * @author      Arthur van Hoff
 * @jls 5.1.2 Widening Primitive Conversions
 * @jls 5.1.3 Narrowing Primitive Conversions
 * @since   JDK1.0
 */
public abstract class Number implements java.io.Serializable {
    /**
     * Returns the value of the specified number as an {@code int},
     * which may involve rounding or truncation.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code int}.
     */
    public abstract int intValue();

    /**
     * Returns the value of the specified number as a {@code long},
     * which may involve rounding or truncation.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code long}.
     */
    public abstract long longValue();

    /**
     * Returns the value of the specified number as a {@code float},
     * which may involve rounding.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code float}.
     */
    public abstract float floatValue();

    /**
     * Returns the value of the specified number as a {@code double},
     * which may involve rounding.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code double}.
     */
    public abstract double doubleValue();

    /**
     * Returns the value of the specified number as a {@code byte},
     * which may involve rounding or truncation.
     *
     * <p>This implementation returns the result of {@link #intValue} cast
     * to a {@code byte}.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code byte}.
     * @since   JDK1.1
     */
    public byte byteValue() {
        return (byte)intValue();
    }

    /**
     * Returns the value of the specified number as a {@code short},
     * which may involve rounding or truncation.
     *
     * <p>This implementation returns the result of {@link #intValue} cast
     * to a {@code short}.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code short}.
     * @since   JDK1.1
     */
    public short shortValue() {
        return (short)intValue();
    }

    /** use serialVersionUID from JDK 1.0.2 for interoperability */
    private static final long serialVersionUID = -8742448824652078965L;
}

抽象类{@code Number}是平台的超类
表示可转换为基本类型byte、double、float、int、long、short
从给定原语的特定Number实现类型由所讨论的Number实现定义。
对于平台类,转换通常类似于缩小原语转换或扩大原语转换
如《爪哇与贸易》中所定义;语言规范
用于在基元类型之间转换。因此,转换可能会发生可能会丢失有关数值整体大小的信息失去精度,甚至可能返回不同符号的结果
而不是输入。
有关详细信息,请参阅给定Number实现的文档
转换细节。
@作者李·博因顿
@作者阿瑟·范霍夫
@jls 5.1.2扩大原语转换
@jls 5.1.3缩小原语转换范围
@从JDK1.0开始

public abstract int intValue();

以整数形式返回指定数字的值,这可能涉及舍入或截断。
返回:转换为int类型后此对象表示的数值。
在这里插入图片描述

public abstract long longValue();

以long形式返回指定数字的值,这可能涉及舍入或截断。
返回:转换为long类型后此对象表示的数值。
在这里插入图片描述

public abstract float floatValue();

以浮点形式返回指定数字的值,这可能涉及舍入。
返回:转换为float类型后,此对象表示的数值。
在这里插入图片描述

public abstract double doubleValue();

以双精度形式返回指定数字的值,这可能涉及舍入。
返回:转换为double类型后此对象表示的数值。
在这里插入图片描述

public byte byteValue()

public byte byteValue() {
        return (byte)intValue();
    }

形式返回指定数字的值,这可能涉及舍入或截断。
此实现将intValue转换的结果返回到一个字节。
返回:此对象在转换为字节类型后表示的数值。
自:JDK1.1.
在这里插入图片描述

public short shortValue()

public short shortValue() {
        return (short)intValue();
    }

以短字符形式返回指定数字的值,这可能涉及舍入或截断。
此实现将intValue cast的结果返回给short。
返回:转换为short类型后此对象表示的数值。
自:JDK1.1.

private static final long serialVersionUID = -8742448824652078965L;

使用JDK 1.0.2中的serialVersionUID实现互操作性

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:22:34  更:2022-04-22 18:25:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:36:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码