java Integer parseInt()(转)

先来一段代码,代码很简单的,如下:

public static void main(String[] args) {
        Integer a = Integer.parseInt("3");
        Integer b = Integer.parseInt("3");
        Integer c = Integer.parseInt("184");
        Integer d = Integer.parseInt("184");
        System.out.println(a == b);
        System.out.println(c == d);
    }

看到代码的各位,觉得输出应该是什么样子的呢?false, false 或者 true,true,不知道的请自行调试。。。

这里代码输出的结果是:true, false

why?当我看到这个结果时,这是第一反应(果然我是菜鸟呀……),在网上搜了一下原因,本人还没有看过Integer.parseInt()的源码(粗略瞄了一眼,表示没看懂)。

这个大概的原因是:java会把常用的整数(-128 - 127)做一个缓存,所以在调用parseInt(“3”)时,会从缓存中取到相应的数值,而大于127缓存中没有数据,所以上面的c和d会是两个不同的引用,所以不等。

(这是本人的初步理解,记下来以后可以深入去看看)。

有大神用源码解释一下的么,哈哈……

时间: 2024-08-06 19:50:26

java Integer parseInt()(转)的相关文章

java里的 int n=Integer.parseInt(args[0])

1. int是java的基本数据类型,"int n"表示定义了一个int 型的变量n;2. int n = Integer.parseInt(args[0]) 表示给定义的变量n 赋予一个初值为"Integer.parseInt(args[0])";3. Integer.parseInt(args[0])中,Integer是java中的一个内置类,parseInt()是这个类的一个静态方法,这个方法的作用是把括号里面的参数(args[0])转为int型的值,比如定义

Java中Integer.parseInt和Integer.valueOf,你还傻傻分不清吗?

在Java的Integer类中,有Integer.valueOf(String s)和Integer.parseInt(String s)两个静态方法,他们都能够将字符串转换为整型,他们到底有什么区别呢?今天就来分析下. 本文目录 一.源码分析二.结论三.扩展 一.源码分析 Integer.parseInt(String s)的源码: public static int parseInt(String s) throws NumberFormatException {    return par

Integer.parseInt(String s) 和 Integer.valueOf(String s) 的区别

通过查看java.lang.Integer的源码可以发现, 它们最终调用的都是 /** * Parses the string argument as a signed integer in the radix * specified by the second argument. The characters in the string * must all be digits of the specified radix (as determined by * whether {@link

Integer.parseInt()和Integer.valueOf()有什么区别

他们有本质区别,Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了. 而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性 Integer.parseInt()把String 型转换为Int型, Integer.valueOf()把String 型转换为Integer

区分Integer.getInteger和Integer.valueOf、Integer.parseInt() 的使用方法

Integer类有两个看起来很类似的静态方法,一个是Integer.getInteger(String),另外一个是Integer.valueOf(String).如果只看方法名称的话,很容易将这两个方法的功能区分开来,还是让我们来看看Java文档. Integer.getInteger(String)的功能是根据指定的名称得到系统属性的整数值.第一个参数将被认为是系统属性的名称.系统属性可以通过 System.getProperty(java.lang.String)方法访问得到.属性值字符串

JavaSE8基础 Integer.parseInt 将[2,36]进制转为十进制

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku3; public class Demo011 { public static void main(String[] args) { System.out.println(Integer.parseInt("100", 2));// 这个字符串是二进制的形式 Sys

Integer.ParseInt()异常

这里传参数:bookPage.nextPage,action接收到的是string型. 程序需要将string转成int来使用. 用上try { pageNUmber = Integer.parseInt(pageNo); } catch (NumberFormatException e) { System.out.println(e); } 然而:捕捉到移除 java.lang.NumberFormatException: For input string: "2 " 很明显可以看到

Integer.parseInt不同jdk源码解析

执行以下代码: System.out.println(Integer.parseInt("-123")); System.out.println(Integer.parseInt("+123")); 以下仅提供1.6和1.7两个版本的比较  1.6版本执行结果为:    1.7版本执行结果为: 从两方面去查证结果的原因,分别是:查看API文档 和 查看对应的源代码 [查看API文档]  1.6版本对应的API文档:    1.7版本对应的API文档: 可以看出,对第

Integer.parseInt(f.trim())中String f要加trim()

如int a=Integer.parseInt(f.trim());语句中String 转换成int 时 f要加trim()方法,不然会抛出异常. Integer.parseInt(f.trim())中String f要加trim(),布布扣,bubuko.com