integer 负数字符串比较_JAVA源码之Integer-1

四、方法

  • toString
三个方法,其中两个static方法。1、public String toString():该方法内部使用toString(int i)实现。2、public static String toString(int i):该方法内部使用stringSize方法巧妙的获取入参的size,然后用getChars把入参转换成字符数组,最后new一个新String对象。
cea6970e5da205c5109e20622f118379.png
3、public static String toString(int i, int radix):参入radix为进制数,该方法支持2-36进制字符串的转换,radix大于36或小于2时则转换成10进制的字符串,转换方法直接用toString(int i),其它进制度的转换方法则是先初始化一个33位的字符数组然后把参数i转换成负数,然后对数组从高到低逐个计算出对应的字符,如果是负数最后在加上“-”号,最后把有值的字符位实例化一个字符串对象。源码如下:
f69716ade13a085a99384afcc39b50b8.png
  • equals
0abfedd5d4d18d0890df47547c15b37e.png

该方法,先判断入参是否为Integer对象,然后将对象强转为Integer取int的值用==比较

  • hashCode:Integer 类的hashCode直接返回其 int 类型的数据
  • parseInt
两个静态方法:1、public static int parseInt(String s) throws NumberFormatException内部使用parseInt(String s, int radix)实现2、public static int parseInt(String s, int radix) throws NumberFormatException两个参数第一个为数字字符串,第二个为数字的进制数。如果s为null或radix大于36或小于2抛出对应异常。转换实现先判断正负号和然后计算数值,计算数值使用Character.digit(char ch, int radix)实现。源码如下:
30787aafc103d390199df53dddc9fa03.png
  • parseUnsignedInt
v
  • remainderUnsigned、divideUnsigned:无符号求余和商
  • compare、compareTo、compareUnsigned

compareUnsigned(无符号比较)、compareTo使用compare实现。

compare实现如下:

a7e1b5717605629d50a2a96a278177d6.png

compareUnsigned:

af05cb9c898af1feba290586a60c23f2.png

最小值补码为:1000 0000 0000 0000 0000 0000 0000 0000

MIN_VALU补码为:1000 0000 0000 0000 0000 0000 0000 0000

所以x+MIN_VALU只是改变最高位符号,其它为不影响,所以负数高位变0,正数高位变1,如果是正负数比较永远会比正数大,如果都是正数则不影响。

  • valueOf
1、public static Integer valueOf(int i):实现如下,>=-128切<=127之间的数值在cache中取值,其它的new一个新Integer对象
e4a22261ab1937d713c40b91d22b6d4d.png
2、public static Integer valueOf(String s) throws NumberFormatException3、public static Integer valueOf(String s, int radix) throws NumberFormatException以上两个方法内部使用parseInt实现
  • byteValue、shortValue、intValue、longValue、floatValue、doubleValue,除intValue直接获取int值之外,其它的通过int值强转得到
d0825ed3dbf8d30e3191747d3a43acfd.png
toHexString、toOctalString、toBinaryString、toUnsignedString
1、public static String toHexString(int i);返回int的16进制无符号字符串,内部用toUnsignedString2、public static String toOctalString(int i);返回int的8进制无符号字符串,内部用toUnsignedString3、public static String toBinaryString(int i);返回int的2进制无符号字符串,内部用toUnsignedString4、private static String toUnsignedString(int i, int shift),转换int为无符号字符串,源码如下图,去掉符号位的计算,从低位高位遍历赋值,最后返回一个新String对象
81859bdc640f5725026e727b258eabb7.png
  • getChars
static void getChars(int i, int index, char[] buf);获取字符数组,源码如下,当i >= 65536时,通过计算除以100的余数,用DigitOnes,DigitTens两个数组获取低位的字符value,当i < 65536时, 通过计算除以10的余数( q = (i * 52429) >>> (16+3)相当于i*0.1,这里为什么这么用有待去百度查证下,用digits获取数组的字符value
bd997b84d1ed0651dbbf0ac19b50dae0.png

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

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

相关文章

springboot mysql url_spring boot 连接Mysql介绍

Spring Boot 集成教程概述java应用的数据库接口的层次图如下JDBCJava应用通过JDBC接口访问数据库&#xff0c;JDBC(Java DataBase Connectivity/Java数据库连接)为各种数据库&#xff0c;如mysql、oracle等&#xff0c;提供一个统一的接口&#xff0c;应用程序通过JDBC执行各种…

python的遍历字典里的键然后放到一个列表里_Python列表和字典互相嵌套怎么办?看完让你没有疑惑...

文 | 猿天罡前言前两篇文章&#xff0c;我们学习了Python字典的基本用法和遍历字典的三种方式。为了让小伙伴们不耗费多余的注意力&#xff0c;我们举的例子都尽可能的简单&#xff0c;不信你回去看看&#xff0c;字典键对应的值都是基本数据类型(字符串、数字等)。其实&#x…

linux如查看是否安装了mysql_linux中如何查看mysql是否安装

linux中查看mysql是否安装的方法&#xff1a;1、mysql的守护进程是mysqld如果已经安装则:[rootlocalhost ~]# service mysqld start启动 MySQL&#xff1a; [确定]如果没有安装则:[rootlocalhost ~]# service mysqld startmysqld:未被识别的服务2、通过查看服务是否…

新鲜的宣传册设计

原文地址&#xff1a;http://www.goodfav.com/brochure-designs-9367.html 宣传画册设计印刷在品牌以及企业形象建设疏导方面扮演着非常重要的角色。宣传册设计是理想的营销材料。他们将帮助您建立有意向目标受众&#xff0c;提供有价值的信息。如果没有企业宣传册&#xff0c;…

mysql门派年龄最大的人_目前活着年龄最大的人

每逢老人过生日&#xff0c;子女都会祝他长命百岁&#xff0c;但事实上&#xff0c;长命百岁能过百岁的人少之又少。那么大家知道中国现在活着的最长寿的人是谁吗?下面让小编为大家揭晓答案吧!比正式的历史文献记载最长寿者年长14岁中新网曾对这一名黎巴嫩妇女进行报道&#x…

解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题

最近一个项目中&#xff0c;使用号称下一代构建工具的Gradle构建项目。 使用中发现一个问题&#xff0c;Gradle从中央库下载的jar文件在系统的其它目录&#xff0c;使用gradle eclipse添加Eclipse支持时&#xff0c;jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到To…

mysql 执行计划_mysql执行计划

执行计划使用explain sql查询。1、 构造数据usecoshaho002;drop table if existsinfo;create tableinfo(idint primary keyAUTO_INCREMENT,namevarchar(32),agetinyint,sexvarchar(8),addressvarchar(32),phonevarchar(32),birthday date,descriptionvarchar(128));alter table…

python中cock什么意思_[转载]原创脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析...

[转载]原创脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析(2013-07-03 11:31:56)标签&#xff1a;转载Vina是在Autodock4基础上改进的算法&#xff0c;相比autodock4而言&#xff0c;具体优势&#xff1a;准确&#xff0c;并行计算(官网数据)&#xff1a;AutoDockVina is a…

Entity Framework 4.1 : 贪婪加载和延迟加载

这篇文章将讨论查询结果的加载控制。 EF4.1 允许控制对象之间的关系&#xff0c;当我们进行查询的时候&#xff0c;哪些关系的数据将会被加载到内存呢&#xff1f;所有相关的对象都需要吗&#xff1f;在一些场合可能有意义&#xff0c;例如&#xff0c;当查询的实体仅仅拥有一个…

python数据结构编程_写给Python编程高手之 数据结构

python视频教程栏目介绍Python编程需要注意的关键点。如何在列表&#xff0c;字典&#xff0c;集合中根据条件筛选数据案例&#xff1a;如何在下列列表data中筛选出大于0的数data [1, -1, 2, 3, 4, 7]复制代码使用filter函数&#xff0c;第一个参数为一个函数&#xff0c;也可…

python编写下载器可暂停_Python编写一个优美的下载器

本文实例为大家分享了python编写下载器的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 #!/bin/python3# author: lidawei# create: 2016-07-11# version: 1.0# 功能说明&#xff1a;# 从指定的URL将文件取回本地#################################################…

修改页面后获得flag_简单的CTF-从JS中获取flag

本文是一篇从合天网安实验室进行实验操作的笔记&#xff0c;一次非常简单地从JS中获取到flag的操作。1. 进入题目页(10.1.1.219:20123)看到一段话&#xff0c;还有一句很明显的提示语句“The evil url is the passkey”&#xff0c;翻译出来就是损坏的url就是flag。下面的英文…

快速下载助手1.1--添加断点下载

在上一章中实现了多线程的断点下载&#xff0c;将快速下载助手添加断点下载功能&#xff0c;明天实现了速率统计功能 效果图如下&#xff1a; 打印信息如下&#xff1a; 欢迎使用快速下载助手-->并不是线程多就下载的快! 文件夹已经存在 默认的线程个数&#xff1a;3 保存路…

mysql查询自定义数据_实现自定义查询的数据库设计及实现(一)

需求先说一下需求&#xff1a;实现用户自定义的查询&#xff0c;用户可以自定义要查询的列、自定义条件条件、自定义排序。除了查询使用外&#xff0c;还可以使用于各个需要根据条件进行约束的业务&#xff0c;如权限&#xff1b;本设计和实现&#xff0c;很大部分是通过数据库…

java 合并流_Java Stream 流实现合并操作示例

本文实例讲述了Java Stream 流实现合并操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a;1. 前言Java Stream Api提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作。今天我们来看看如何合并 Stream 流。2. Stream 流的合并Stream 流合…

java 去掉 t_java中的“\t”

对于初学者来说&#xff0c;java中的"\t"和空格总是让人迷惑&#xff0c;其实很简单&#xff0c;通过一个例子就能很快明白&#xff01;比如说打印九九乘法表&#xff01;先来看用空格的效果&#xff01;1 package cn.edu.nwpu.java;23 public class MultiplicationT…

java service层 事务_Java高并发秒时啊API之Service层1

---2-1 使用Spring托管Service依赖理论----------------------------spring ioc优势(工厂模式):1.对象创建统一托管2.规范的生命周期管理3.灵活的依赖注入4.一致的获取对象Spring IOC 功能的理解DAO依赖Service依赖最终形成一致访问接口&#xff1b;随意访问依赖对象Spring IOC…

zoj 3720

为什么注释掉的地方是错的&#xff1f; 自己的代码好糟烂..... 直接枚举点 判是否在多边形内 加起来求概率 求面积的时候代码写搓了.... 比不过别人两行的代码 而且到现在还找不到错..... #include <iostream> #include <fstream> #include <cstri…

void在java中是什么意思_java中void什么意思

在java中&#xff0c;void代表的意思是“空”&#xff0c;即“什么都不返回”&#xff0c;在方法申明的时候表示该方法没有返回值。void对应着一个Void类&#xff0c;Void类是用final修饰的&#xff0c;是一个不可实例化的占位符类。之前&#xff0c;在学C的数据类型的时候发现…

《设计模式》-模板模式

玩物丧志啊&#xff01;&#xff01;&#xff01;最近总想着玩&#xff0c;休息&#xff0c;结果又耽误了半个月。。唉&#xff01; 惭愧啊。 今天是设计模式的倒数第二个了。。 虽然前面的 忘得差不多了。不过等看完了 要进行总复习&#xff0c;再复习&#xff0c;再回归&…