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…

Jquery Highcharts 参数配置说明

chart&#xff1a; renderTo 图表的页面显示容器 defaultSeriesType 图表的显示类型&#xff08;line,spline, scatter, splinearea bar,pie,area,column&#xff09; margin 上下左右空隙 events 事件 click function(e) {} load function(e) {} xAxis&#xff1a;yAxis: 属性…

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 json mybatis_mybatis支持json,Spring boot配置

mysql5.7版本以后支持原生json格式&#xff0c;基于Spring boot进行配置说明。mybatis支持mysql的json格式mysql-connector&#xff0c;mysql的驱动版本要大于等于5.1.40&#xff0c;否则json字段查询会发生乱码。继承BaseTypeHandler自定义一个json类型处理器&#xff0c;放到…

【ACM】nyoj_103_A+BII_201307291022

AB Problem II时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;3描述 I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A B. A,B must be positive. 输入 The first line of the inp…

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

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

汉字和utf编码转换

package Sambo;public class URLtoUTF8 {//将汉字转换为编码public static String toUtf8String(String s) {StringBuffer sb new StringBuffer();for (int i 0; i < s.length(); i) {char c s.charAt(i);if (c > 0 && c < 255) {sb.append(c);} else {byt…

python关于字符串下面说法错误的是_关于字符串下列说法错误的是

【判断题】药品的两重性是指防治作用和副作用?【单选题】“ab””c”*2 结果是: (1.3分)【判断题】所有药都是一天吃三次。【填空题】若 a1,b2,c3,d0,则表达式a>b and b>c or ab【单选题】关于Python中的复数,下列说法错误的是 (1.3分)【单选题】后遗效应 的典型药物案例…

mysql inputoutput_PHP:同时使用INPUT和OUTPUT参数(不“ INOUT”)调用MySQL存储过程

从PHP&#xff0c;我想在MySQL中调用存储过程。该过程采用输入 和 输出参数- 而不是 “ INOUT” 参数。对于一个简单的示例&#xff0c;说我在MySQL中具有以下存储过程&#xff1a;DELIMITER $$DROP PROCEDURE IF EXISTS test_proc$$CREATE PROCEDURE test_proc(in input_param…

解决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…

linux 添加编程环境变量配置

在用VS 2008使用boost库时候&#xff0c;只需要在VS的配置里面设定好boost的include和lib路径&#xff0c;编写程序就会自动查找和链接。 linux下使用boost开发&#xff0c;在哪里设置呢&#xff1f; 对所有用户有效&#xff0c;需修改文件/etc/profile; 对个人有效则修改文件~…

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;也可…

初步学习pg_control文件之八

接前文 初步学习pg_control文件之七 继续 看&#xff1a;catalog_version_no 代码如下&#xff1a; static void WriteControlFile(void) {.../** Initialize version and compatibility-check fields*/ControlFile->pg_control_version PG_CONTROL_VERSION;ControlFile-…

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

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

fork()调用使子进程先于父进程被调度

由于内核使用写时复制机制&#xff0c;fork之后父子进程是共享页表描述符的&#xff0c;如果让父进程先执行&#xff0c;那么有很大几率父进程会修改共享页表指向的数据&#xff0c;那么内核此时必须给父进程分配并复制新的页表供父进程修改使用&#xff0c;那么如果子进程被创…