- 浏览: 682479 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (362)
- java基础 (33)
- html/css+div/javascript (17)
- Ajax/XML/JSON/XSL (7)
- JQuery (11)
- Extjs (1)
- JSP/Servlet (19)
- MVC模式 (4)
- struts 1 (17)
- Struts 2.3.4 (17)
- Spring 3.2 (26)
- Springmvc (3)
- Hibernate 4.1 (21)
- ibatis (6)
- Velocity模板语言 (2)
- Rose框架 (5)
- EJB (1)
- JUnit测试 (2)
- 数据库DB (24)
- 重构 / 设计模式 (3)
- 开发工具IDE (37)
- 数据结构与算法设计 (3)
- Android (12)
- Linux (4)
- bug集合 (29)
- 缓存技术(redis) (3)
- Lucene全文索引 (15)
- maven3.0.5 (4)
- 小工具集合 (18)
- 面试题 (5)
- 闲聊 (11)
- 其他 (4)
- 接口API (2)
- work (2)
- Flex (0)
- JMS (1)
- 开源项目集合 (1)
- 技术博客 (1)
- 分类04 (0)
- 分类05555 (0)
最新评论
-
小小小羊:
好屌...
java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$Refle -
liubinli2005:
这个可以脱底spring。单独使用吗?
DAO层:jade -
cangbaotu:
我觉得对于开发者来说,能脚本化编写爬虫是一件挺开心的事情( ̄▽ ...
网页爬取 -
asjava:
很好的文章, 但每段代码清单都重复了一次.
spring 事务 -
xia635317478:
jethypc 写道验证码的session无法传过去啊 还是我 ...
登陆验证码(struts2实现)
Integer == Integer?
/** *Q:Integer和Integer对象用 == 进行比较的过程是怎样的? * *看例子 */ public class Test { public static void main(String[] args) { int a = 1; int b = 1; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; System.out.println(a == b); System.out.println(c == d); System.out.println(e == f); } } output: true true false 下面具体解释三个结果 通过java命令 javap -c 得到下面的字节码 Compiled from "Test.java" public class Test extends java.lang.Object{ public Test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_1 //将int类型常量1压入栈 1: istore_1 //将int类型值存入局部变量1 2: iconst_1 //将int类型常量1压入栈 3: istore_2 //将int类型值存入局部变量2 4: iconst_3 //将int类型常量3压入栈 5: invokestatic #2; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; //调用Integer的静态方法 valueOf,构建整型值为3的Integer对象 8: astore_3 //将引用存入局部变量3 9: iconst_3 10: invokestatic #2; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 13: astore 4 15: sipush 321 //将321压入栈 18: invokestatic #2; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 21: astore 5 23: sipush 321 26: invokestatic #2; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 29: astore 6 31: getstatic #3; //Field java/lang/System.out:Ljava/io/PrintStream; 34: iload_1 //从局部变量1中装载int类型值到栈 35: iload_2 36: if_icmpne 43 //从栈中pop出两个int类型值并进行大小比较 39: iconst_1 40: goto 44 43: iconst_0 44: invokevirtual #4; //Method java/io/PrintStream.println:(Z)V 47: getstatic #3; //Field java/lang/System.out:Ljava/io/PrintStream; 50: aload_3 //从局部变量3中装载引用到栈 51: aload 4 53: if_acmpne 60 //从栈中pop出两个引用值进行比较 56: iconst_1 57: goto 61 60: iconst_0 61: invokevirtual #4; //Method java/io/PrintStream.println:(Z)V 64: getstatic #3; //Field java/lang/System.out:Ljava/io/PrintStream; 67: aload 5 69: aload 6 71: if_acmpne 78 74: iconst_1 75: goto 79 78: iconst_0 79: invokevirtual #4; //Method java/io/PrintStream.println:(Z)V 82: return } 整型值的比较很容易理解,就是值的大小比较 但是为什么下面的语句会是不同的结果: System.out.println(c == d); System.out.println(e == f); 从字节码上看都是一样的指令,没有不同的地方 原因就在Integer的方法 valueOf 我们来看这个方法的源码:字节码里调用的就是这个方法: public static Integer valueOf(int i) { if(i >= -128 && i <= IntegerCache.high) return IntegerCache.cache[i + 128]; else return new Integer(i); } private static class IntegerCache { static final int high; static final Integer cache[]; static { final int low = -128; // high value may be configured by property int h = 127; if (integerCacheHighPropValue != null) { // Use Long.decode here to avoid invoking methods that // require Integer's autoboxing cache to be initialized int i = Long.decode(integerCacheHighPropValue).intValue(); 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里弄了一个缓存,对于在 -128—127 之间的数值,会直接使用该缓存里的对象 也就是说 Integer c = 3 或者 Integer c = Integer.valueOf(3) ,最终 c 得到的是Integer里的缓存对象 同理,d也是获得该相同对象因此 进行 c == d 比较时,c和d引用的是同一个对象,因此就true 而对于321,已经超出缓存范围了,因此 valueOf 方法会生成一个新的Integer对象因此e和f就引用不同 的对象了,进行==比较,当然就false了 另外,对Integer的缓存,我们在日常开发时,对于小的整型值应该充分利用Integer的缓存对象省去过多的对象创建,回收的操作,这样会极大的提高程序性能
发表评论
-
放假咯
2020-01-21 16:52 0放假咯放假咯放假咯放假咯放假咯 -
break和continue再循环for或while中用法
2014-10-26 12:25 1102package com.chaoxing.fayuan2. ... -
System.getProperty()参数大全
2013-07-22 10:26 836System.getProperty()参数大全 j ... -
java流操作总结
2013-07-21 12:11 800java流操作总结 1.控制台读取,控制台输出 / ... -
单例模式总结
2013-07-20 00:22 1034单例模式总结 单实例的正确写法 并文章属于Java并发编程实 ... -
指定排序规则
2013-07-04 10:32 905指定排序规则 // 指定排序规则 Compar ... -
时间工具类
2013-07-03 16:58 1101时间工具类 package com.momo.util; ... -
获得指定日期
2013-07-03 16:32 964获得指定日期 格式化 ... -
GBK、GB2312、UTF-8
2013-03-16 18:42 1107UTF-8:Unicode Transformation F ... -
理解ThreadLocal
2013-03-15 13:12 766http://blog.csdn.net/qjyong/art ... -
CSS文本溢出省略号:text-overflow:ellipsis及firefox兼容详解
2013-03-04 10:53 1116http://blog.163.com/yinwei_666/ ... -
http://blog.csdn.net/droid_zhlu/article/details/6441213
2013-02-26 09:48 961http://blog.csdn.net/droid_zhlu ... -
JavaMail邮件发送Demo
2012-12-26 11:37 3050JavaMail邮件发送Demo import com ... -
正则表达式
2012-12-19 11:08 904一、简介 二、匹配操作符 三、模式中的特殊字符 ... -
内存溢出和内存泄露
2012-12-18 10:34 1813内存溢出 和 内存泄露 ... -
java术语(PO/POJO/VO/BO/DAO/DTO)
2012-11-30 13:47 1708java术语(PO/POJO/VO/BO/DAO/DT ... -
java趣味小程序
2012-11-22 10:36 2057java趣味小程序 【程 ... -
Java容器集合学习心得
2012-11-01 09:41 817Java容器集合 ... -
eclipse 编译javac、运行java
2012-10-28 14:45 1955语法错误javac(编译),逻辑错误java(运行) ec ... -
类对象的 显示转换 和 隐式转换
2012-10-28 12:41 1136类对象的 显示转换 和 隐式转换 public cla ...
相关推荐
JAVA Integer == equal 比较 doc 比较大小 是否相等
一个给定的正整数,循环的将每一位相加,只要得到的结果是大于10的数,就继续循环相加
/此公用文件主要是对考勤机操作, 如果对收费机操作则可参考此文件定义结构即可. unit uPublic; interface Uses Windows , SysUtils , QForms , StdCtrls ,... function GetSizeOfData(pCommand: Pointer): Integer...
Public Const SFJ_Pro_SegmentLength As Integer = 1024 '数据包的数据长度部分占字节位数 Public Const SFJ_Pro_Packet_DataLen_Byte_Num As Integer = 8 '数据包的数据类型部分占字节位数 Public ...
ShowType:Integer=SB_OK;ShowIcon:integer=1;ShowTime:Integer=-1): Integer; Text//显示内容 Caption//显示的标题 OptionText//下拉框的内容,若没有可不填 ShowType//显示的类型:SB_OK确定 SB_OKCANCEL确定...
integer width = 1381 integer height = 620 boolean titlebar = true string title = "Untitled" boolean controlmenu = true windowtype windowtype = response! long backcolor = 67108864 string icon = "App...
constant h_data: integer:=640; constant h_front: integer:=16; constant h_back: integer:=48; constant h_sync: integer:=96; constant h_period: integer:= h_sync + h_data + h_front + h_back; -- ...
Public Const Width As Integer = 16 '声明一个整数常量Height,表示游戏界面横向的小正方形数目,初始化为30 Public Const Height As Integer = 30 '游戏界面的背景色 Public Shared BackColor As Color '小...
var isInteger = require ( 'validate.io-integer' ) ; isInteger( 值 ) 验证值是否为integer 。 var value = 5 ; var bool = isInteger ( value ) ; // returns true 注意:此方法在确定value是否为integer...
HugeInteger Class) Create a class HugeInteger that uses a 40-element array of digits to store integers as large as 40 digits each. Provide member functions input, output, add and subtract. For ...
For y As Integer = 0 To j For x As Integer = 0 To i If value(x, y) <> 0 Then '如果存在一个非零值,则终止本行判断,继续下一行的判断 flag = False Exit For End If Next If flag Then '如果某行全为...
property XStrength: Integer read FXStrength write SetXStrength; property YStrength: Integer read FYStrength write SetYStrength; end; procedure Shake(valForm: TCustomForm; valXStrength: Integer = 4...
port: integer): integer;, 如果有绑定端口,下次软件先启动机器后启动也一样可以用 如果没绑定端口,必须保证机器先启动,软件后启动 3、设置服务器function JX102R_Set_Server(Ip: pchar; Port: integer = ...
由于使用模板,所以只有一个Integer.h头文件 支持如下操作:>, >=, <, <=, ==, !=, +, +=, -, -=, *, =, /, /=,(输出);支持利用基本整数类型(int,unsigned,long long,……)和字符串(char和std::string)构造类型
Dim LINE_WIDTH As Integer = 5 '线宽 Dim LINE_MOVES As Integer '线宽调整数 Dim CELL_WIDTH As Integer = 50 '格子宽 Dim TOP_ As Integer = 120 '矩阵左上角纵坐标 Dim LEFT_ As Integer = 50 '矩阵左上角...
Transform Coding with Integer-to-Integer Transforms.pdf H.264學習資料
Qrcode delphi c++ C# 找了很久,在国外网站找到绝对能用的QRcode生成代码,需要Dll,效果很好 { Summary ... Margin : integer = 4; PixelSize : integer = 3; Level : TErrorCorretion = QualityLow);
Integer ii_barwidth = -1 // Default to negative value. long il_barcolor=78682240 long il_barmovecolor=8421504 integer ii_minobjectsize = 20 boolean ib_performredraw=True //-- Internal ...
Public Function StringToBinary(data As String, line As Integer) As String Dim sb As New StringBuilder() For i As Integer = 0 To data.Length - 1 If i Mod line = 0 Then If i <> 0 Then For ...
Clock_Integer 指令库应用例程rar,Clock_Integer 指令库应用例程