java Long==Long有趣的现象详解
前言
long数据类型是64位有符号的Java原始数据类型。当对整数的计算结果可能超出int数据类型的范围时使用。
long数据类型范围是-9,223,372,036,854,775,808至9,223,372,036,854,775,807(-2^63至2^63-1)。
long数据类型范围内的所有整数称为long类型的整数字面量。long类型的整数常数总是以大写L或小写l结尾。
1.描述
首先,这里应该声明一下,Long等对象类型判断是否相等,采用Long==Long这种形式是错误的。
可以采用以下方式:
Longleft=100L; Longright=100L; //方法1: System.out.println(left.doubleValue()==right.doubleValue()); //方法2: System.out.println(left.compareTo(right));
输出结果:
true
0
1.1实验1
如果你亲自操刀,动手做了以下实验,也许你会突然得到一个让你困惑的结果:
Longleft=100L; Longright=100L; System.out.println(left==right);
输出结果:
true
没错,采用==竟然也能得出true,也许这时候你可能会误以为jvm在自动拆箱(我以前也是这样以为,有点小白!!!)。
1.2实验2
那么请你再做下面这个实验:
Longleft=1000L; Longright=1000L; //方法1: System.out.println(left.doubleValue()==right.doubleValue()); //方法2: System.out.println(left.compareTo(right)); //错误的方法: System.out.println(left==right);
输出结果
true
0
false
等会,什么情况,怎么又为false?
1.3实验3
不急,再做一个实验。
for(inti=-200;i<200;i++){ Longleft=Long.valueOf(i); Longright=Long.valueOf(i); System.out.println("Longleft="+i+",Longright="+i +",left==right:"+(left==right)); }
输出结果
Longleft=-200,Longright=-200,left==right:false
Longleft=-199,Longright=-199,left==right:false
Longleft=-198,Longright=-198,left==right:false
Longleft=-197,Longright=-197,left==right:false
Longleft=-196,Longright=-196,left==right:false
Longleft=-195,Longright=-195,left==right:false
Longleft=-194,Longright=-194,left==right:false
Longleft=-193,Longright=-193,left==right:false
Longleft=-192,Longright=-192,left==right:false
Longleft=-191,Longright=-191,left==right:false
Longleft=-190,Longright=-190,left==right:false
Longleft=-189,Longright=-189,left==right:false
Longleft=-188,Longright=-188,left==right:false
Longleft=-187,Longright=-187,left==right:false
Longleft=-186,Longright=-186,left==right:false
Longleft=-185,Longright=-185,left==right:false
Longleft=-184,Longright=-184,left==right:false
Longleft=-183,Longright=-183,left==right:false
Longleft=-182,Longright=-182,left==right:false
Longleft=-181,Longright=-181,left==right:false
Longleft=-180,Longright=-180,left==right:false
Longleft=-179,Longright=-179,left==right:false
Longleft=-178,Longright=-178,left==right:false
Longleft=-177,Longright=-177,left==right:false
Longleft=-176,Longright=-176,left==right:false
Longleft=-175,Longright=-175,left==right:false
Longleft=-174,Longright=-174,left==right:false
Longleft=-173,Longright=-173,left==right:false
Longleft=-172,Longright=-172,left==right:false
Longleft=-171,Longright=-171,left==right:false
Longleft=-170,Longright=-170,left==right:false
Longleft=-169,Longright=-169,left==right:false
Longleft=-168,Longright=-168,left==right:false
Longleft=-167,Longright=-167,left==right:false
Longleft=-166,Longright=-166,left==right:false
Longleft=-165,Longright=-165,left==right:false
Longleft=-164,Longright=-164,left==right:false
Longleft=-163,Longright=-163,left==right:false
Longleft=-162,Longright=-162,left==right:false
Longleft=-161,Longright=-161,left==right:false
Longleft=-160,Longright=-160,left==right:false
Longleft=-159,Longright=-159,left==right:false
Longleft=-158,Longright=-158,left==right:false
Longleft=-157,Longright=-157,left==right:false
Longleft=-156,Longright=-156,left==right:false
Longleft=-155,Longright=-155,left==right:false
Longleft=-154,Longright=-154,left==right:false
Longleft=-153,Longright=-153,left==right:false
Longleft=-152,Longright=-152,left==right:false
Longleft=-151,Longright=-151,left==right:false
Longleft=-150,Longright=-150,left==right:false
Longleft=-149,Longright=-149,left==right:false
Longleft=-148,Longright=-148,left==right:false
Longleft=-147,Longright=-147,left==right:false
Longleft=-146,Longright=-146,left==right:false
Longleft=-145,Longright=-145,left==right:false
Longleft=-144,Longright=-144,left==right:false
Longleft=-143,Longright=-143,left==right:false
Longleft=-142,Longright=-142,left==right:false
Longleft=-141,Longright=-141,left==right:false
Longleft=-140,Longright=-140,left==right:false
Longleft=-139,Longright=-139,left==right:false
Longleft=-138,Longright=-138,left==right:false
Longleft=-137,Longright=-137,left==right:false
Longleft=-136,Longright=-136,left==right:false
Longleft=-135,Longright=-135,left==right:false
Longleft=-134,Longright=-134,left==right:false
Longleft=-133,Longright=-133,left==right:false
Longleft=-132,Longright=-132,left==right:false
Longleft=-131,Longright=-131,left==right:false
Longleft=-130,Longright=-130,left==right:false
Longleft=-129,Longright=-129,left==right:false
Longleft=-128,Longright=-128,left==right:true
Longleft=-127,Longright=-127,left==right:true
Longleft=-126,Longright=-126,left==right:true
Longleft=-125,Longright=-125,left==right:true
Longleft=-124,Longright=-124,left==right:true
Longleft=-123,Longright=-123,left==right:true
Longleft=-122,Longright=-122,left==right:true
Longleft=-121,Longright=-121,left==right:true
Longleft=-120,Longright=-120,left==right:true
Longleft=-119,Longright=-119,left==right:true
Longleft=-118,Longright=-118,left==right:true
Longleft=-117,Longright=-117,left==right:true
Longleft=-116,Longright=-116,left==right:true
Longleft=-115,Longright=-115,left==right:true
Longleft=-114,Longright=-114,left==right:true
Longleft=-113,Longright=-113,left==right:true
Longleft=-112,Longright=-112,left==right:true
Longleft=-111,Longright=-111,left==right:true
Longleft=-110,Longright=-110,left==right:true
Longleft=-109,Longright=-109,left==right:true
Longleft=-108,Longright=-108,left==right:true
Longleft=-107,Longright=-107,left==right:true
Longleft=-106,Longright=-106,left==right:true
Longleft=-105,Longright=-105,left==right:true
Longleft=-104,Longright=-104,left==right:true
Longleft=-103,Longright=-103,left==right:true
Longleft=-102,Longright=-102,left==right:true
Longleft=-101,Longright=-101,left==right:true
Longleft=-100,Longright=-100,left==right:true
Longleft=-99,Longright=-99,left==right:true
Longleft=-98,Longright=-98,left==right:true
Longleft=-97,Longright=-97,left==right:true
Longleft=-96,Longright=-96,left==right:true
Longleft=-95,Longright=-95,left==right:true
Longleft=-94,Longright=-94,left==right:true
Longleft=-93,Longright=-93,left==right:true
Longleft=-92,Longright=-92,left==right:true
Longleft=-91,Longright=-91,left==right:true
Longleft=-90,Longright=-90,left==right:true
Longleft=-89,Longright=-89,left==right:true
Longleft=-88,Longright=-88,left==right:true
Longleft=-87,Longright=-87,left==right:true
Longleft=-86,Longright=-86,left==right:true
Longleft=-85,Longright=-85,left==right:true
Longleft=-84,Longright=-84,left==right:true
Longleft=-83,Longright=-83,left==right:true
Longleft=-82,Longright=-82,left==right:true
Longleft=-81,Longright=-81,left==right:true
Longleft=-80,Longright=-80,left==right:true
Longleft=-79,Longright=-79,left==right:true
Longleft=-78,Longright=-78,left==right:true
Longleft=-77,Longright=-77,left==right:true
Longleft=-76,Longright=-76,left==right:true
Longleft=-75,Longright=-75,left==right:true
Longleft=-74,Longright=-74,left==right:true
Longleft=-73,Longright=-73,left==right:true
Longleft=-72,Longright=-72,left==right:true
Longleft=-71,Longright=-71,left==right:true
Longleft=-70,Longright=-70,left==right:true
Longleft=-69,Longright=-69,left==right:true
Longleft=-68,Longright=-68,left==right:true
Longleft=-67,Longright=-67,left==right:true
Longleft=-66,Longright=-66,left==right:true
Longleft=-65,Longright=-65,left==right:true
Longleft=-64,Longright=-64,left==right:true
Longleft=-63,Longright=-63,left==right:true
Longleft=-62,Longright=-62,left==right:true
Longleft=-61,Longright=-61,left==right:true
Longleft=-60,Longright=-60,left==right:true
Longleft=-59,Longright=-59,left==right:true
Longleft=-58,Longright=-58,left==right:true
Longleft=-57,Longright=-57,left==right:true
Longleft=-56,Longright=-56,left==right:true
Longleft=-55,Longright=-55,left==right:true
Longleft=-54,Longright=-54,left==right:true
Longleft=-53,Longright=-53,left==right:true
Longleft=-52,Longright=-52,left==right:true
Longleft=-51,Longright=-51,left==right:true
Longleft=-50,Longright=-50,left==right:true
Longleft=-49,Longright=-49,left==right:true
Longleft=-48,Longright=-48,left==right:true
Longleft=-47,Longright=-47,left==right:true
Longleft=-46,Longright=-46,left==right:true
Longleft=-45,Longright=-45,left==right:true
Longleft=-44,Longright=-44,left==right:true
Longleft=-43,Longright=-43,left==right:true
Longleft=-42,Longright=-42,left==right:true
Longleft=-41,Longright=-41,left==right:true
Longleft=-40,Longright=-40,left==right:true
Longleft=-39,Longright=-39,left==right:true
Longleft=-38,Longright=-38,left==right:true
Longleft=-37,Longright=-37,left==right:true
Longleft=-36,Longright=-36,left==right:true
Longleft=-35,Longright=-35,left==right:true
Longleft=-34,Longright=-34,left==right:true
Longleft=-33,Longright=-33,left==right:true
Longleft=-32,Longright=-32,left==right:true
Longleft=-31,Longright=-31,left==right:true
Longleft=-30,Longright=-30,left==right:true
Longleft=-29,Longright=-29,left==right:true
Longleft=-28,Longright=-28,left==right:true
Longleft=-27,Longright=-27,left==right:true
Longleft=-26,Longright=-26,left==right:true
Longleft=-25,Longright=-25,left==right:true
Longleft=-24,Longright=-24,left==right:true
Longleft=-23,Longright=-23,left==right:true
Longleft=-22,Longright=-22,left==right:true
Longleft=-21,Longright=-21,left==right:true
Longleft=-20,Longright=-20,left==right:true
Longleft=-19,Longright=-19,left==right:true
Longleft=-18,Longright=-18,left==right:true
Longleft=-17,Longright=-17,left==right:true
Longleft=-16,Longright=-16,left==right:true
Longleft=-15,Longright=-15,left==right:true
Longleft=-14,Longright=-14,left==right:true
Longleft=-13,Longright=-13,left==right:true
Longleft=-12,Longright=-12,left==right:true
Longleft=-11,Longright=-11,left==right:true
Longleft=-10,Longright=-10,left==right:true
Longleft=-9,Longright=-9,left==right:true
Longleft=-8,Longright=-8,left==right:true
Longleft=-7,Longright=-7,left==right:true
Longleft=-6,Longright=-6,left==right:true
Longleft=-5,Longright=-5,left==right:true
Longleft=-4,Longright=-4,left==right:true
Longleft=-3,Longright=-3,left==right:true
Longleft=-2,Longright=-2,left==right:true
Longleft=-1,Longright=-1,left==right:true
Longleft=0,Longright=0,left==right:true
Longleft=1,Longright=1,left==right:true
Longleft=2,Longright=2,left==right:true
Longleft=3,Longright=3,left==right:true
Longleft=4,Longright=4,left==right:true
Longleft=5,Longright=5,left==right:true
Longleft=6,Longright=6,left==right:true
Longleft=7,Longright=7,left==right:true
Longleft=8,Longright=8,left==right:true
Longleft=9,Longright=9,left==right:true
Longleft=10,Longright=10,left==right:true
Longleft=11,Longright=11,left==right:true
Longleft=12,Longright=12,left==right:true
Longleft=13,Longright=13,left==right:true
Longleft=14,Longright=14,left==right:true
Longleft=15,Longright=15,left==right:true
Longleft=16,Longright=16,left==right:true
Longleft=17,Longright=17,left==right:true
Longleft=18,Longright=18,left==right:true
Longleft=19,Longright=19,left==right:true
Longleft=20,Longright=20,left==right:true
Longleft=21,Longright=21,left==right:true
Longleft=22,Longright=22,left==right:true
Longleft=23,Longright=23,left==right:true
Longleft=24,Longright=24,left==right:true
Longleft=25,Longright=25,left==right:true
Longleft=26,Longright=26,left==right:true
Longleft=27,Longright=27,left==right:true
Longleft=28,Longright=28,left==right:true
Longleft=29,Longright=29,left==right:true
Longleft=30,Longright=30,left==right:true
Longleft=31,Longright=31,left==right:true
Longleft=32,Longright=32,left==right:true
Longleft=33,Longright=33,left==right:true
Longleft=34,Longright=34,left==right:true
Longleft=35,Longright=35,left==right:true
Longleft=36,Longright=36,left==right:true
Longleft=37,Longright=37,left==right:true
Longleft=38,Longright=38,left==right:true
Longleft=39,Longright=39,left==right:true
Longleft=40,Longright=40,left==right:true
Longleft=41,Longright=41,left==right:true
Longleft=42,Longright=42,left==right:true
Longleft=43,Longright=43,left==right:true
Longleft=44,Longright=44,left==right:true
Longleft=45,Longright=45,left==right:true
Longleft=46,Longright=46,left==right:true
Longleft=47,Longright=47,left==right:true
Longleft=48,Longright=48,left==right:true
Longleft=49,Longright=49,left==right:true
Longleft=50,Longright=50,left==right:true
Longleft=51,Longright=51,left==right:true
Longleft=52,Longright=52,left==right:true
Longleft=53,Longright=53,left==right:true
Longleft=54,Longright=54,left==right:true
Longleft=55,Longright=55,left==right:true
Longleft=56,Longright=56,left==right:true
Longleft=57,Longright=57,left==right:true
Longleft=58,Longright=58,left==right:true
Longleft=59,Longright=59,left==right:true
Longleft=60,Longright=60,left==right:true
Longleft=61,Longright=61,left==right:true
Longleft=62,Longright=62,left==right:true
Longleft=63,Longright=63,left==right:true
Longleft=64,Longright=64,left==right:true
Longleft=65,Longright=65,left==right:true
Longleft=66,Longright=66,left==right:true
Longleft=67,Longright=67,left==right:true
Longleft=68,Longright=68,left==right:true
Longleft=69,Longright=69,left==right:true
Longleft=70,Longright=70,left==right:true
Longleft=71,Longright=71,left==right:true
Longleft=72,Longright=72,left==right:true
Longleft=73,Longright=73,left==right:true
Longleft=74,Longright=74,left==right:true
Longleft=75,Longright=75,left==right:true
Longleft=76,Longright=76,left==right:true
Longleft=77,Longright=77,left==right:true
Longleft=78,Longright=78,left==right:true
Longleft=79,Longright=79,left==right:true
Longleft=80,Longright=80,left==right:true
Longleft=81,Longright=81,left==right:true
Longleft=82,Longright=82,left==right:true
Longleft=83,Longright=83,left==right:true
Longleft=84,Longright=84,left==right:true
Longleft=85,Longright=85,left==right:true
Longleft=86,Longright=86,left==right:true
Longleft=87,Longright=87,left==right:true
Longleft=88,Longright=88,left==right:true
Longleft=89,Longright=89,left==right:true
Longleft=90,Longright=90,left==right:true
Longleft=91,Longright=91,left==right:true
Longleft=92,Longright=92,left==right:true
Longleft=93,Longright=93,left==right:true
Longleft=94,Longright=94,left==right:true
Longleft=95,Longright=95,left==right:true
Longleft=96,Longright=96,left==right:true
Longleft=97,Longright=97,left==right:true
Longleft=98,Longright=98,left==right:true
Longleft=99,Longright=99,left==right:true
Longleft=100,Longright=100,left==right:true
Longleft=101,Longright=101,left==right:true
Longleft=102,Longright=102,left==right:true
Longleft=103,Longright=103,left==right:true
Longleft=104,Longright=104,left==right:true
Longleft=105,Longright=105,left==right:true
Longleft=106,Longright=106,left==right:true
Longleft=107,Longright=107,left==right:true
Longleft=108,Longright=108,left==right:true
Longleft=109,Longright=109,left==right:true
Longleft=110,Longright=110,left==right:true
Longleft=111,Longright=111,left==right:true
Longleft=112,Longright=112,left==right:true
Longleft=113,Longright=113,left==right:true
Longleft=114,Longright=114,left==right:true
Longleft=115,Longright=115,left==right:true
Longleft=116,Longright=116,left==right:true
Longleft=117,Longright=117,left==right:true
Longleft=118,Longright=118,left==right:true
Longleft=119,Longright=119,left==right:true
Longleft=120,Longright=120,left==right:true
Longleft=121,Longright=121,left==right:true
Longleft=122,Longright=122,left==right:true
Longleft=123,Longright=123,left==right:true
Longleft=124,Longright=124,left==right:true
Longleft=125,Longright=125,left==right:true
Longleft=126,Longright=126,left==right:true
Longleft=127,Longright=127,left==right:true
Longleft=128,Longright=128,left==right:false
Longleft=129,Longright=129,left==right:false
Longleft=130,Longright=130,left==right:false
Longleft=131,Longright=131,left==right:false
Longleft=132,Longright=132,left==right:false
Longleft=133,Longright=133,left==right:false
Longleft=134,Longright=134,left==right:false
Longleft=135,Longright=135,left==right:false
Longleft=136,Longright=136,left==right:false
Longleft=137,Longright=137,left==right:false
Longleft=138,Longright=138,left==right:false
Longleft=139,Longright=139,left==right:false
Longleft=140,Longright=140,left==right:false
Longleft=141,Longright=141,left==right:false
Longleft=142,Longright=142,left==right:false
Longleft=143,Longright=143,left==right:false
Longleft=144,Longright=144,left==right:false
Longleft=145,Longright=145,left==right:false
Longleft=146,Longright=146,left==right:false
Longleft=147,Longright=147,left==right:false
Longleft=148,Longright=148,left==right:false
Longleft=149,Longright=149,left==right:false
Longleft=150,Longright=150,left==right:false
Longleft=151,Longright=151,left==right:false
Longleft=152,Longright=152,left==right:false
Longleft=153,Longright=153,left==right:false
Longleft=154,Longright=154,left==right:false
Longleft=155,Longright=155,left==right:false
Longleft=156,Longright=156,left==right:false
Longleft=157,Longright=157,left==right:false
Longleft=158,Longright=158,left==right:false
Longleft=159,Longright=159,left==right:false
Longleft=160,Longright=160,left==right:false
Longleft=161,Longright=161,left==right:false
Longleft=162,Longright=162,left==right:false
Longleft=163,Longright=163,left==right:false
Longleft=164,Longright=164,left==right:false
Longleft=165,Longright=165,left==right:false
Longleft=166,Longright=166,left==right:false
Longleft=167,Longright=167,left==right:false
Longleft=168,Longright=168,left==right:false
Longleft=169,Longright=169,left==right:false
Longleft=170,Longright=170,left==right:false
Longleft=171,Longright=171,left==right:false
Longleft=172,Longright=172,left==right:false
Longleft=173,Longright=173,left==right:false
Longleft=174,Longright=174,left==right:false
Longleft=175,Longright=175,left==right:false
Longleft=176,Longright=176,left==right:false
Longleft=177,Longright=177,left==right:false
Longleft=178,Longright=178,left==right:false
Longleft=179,Longright=179,left==right:false
Longleft=180,Longright=180,left==right:false
Longleft=181,Longright=181,left==right:false
Longleft=182,Longright=182,left==right:false
Longleft=183,Longright=183,left==right:false
Longleft=184,Longright=184,left==right:false
Longleft=185,Longright=185,left==right:false
Longleft=186,Longright=186,left==right:false
Longleft=187,Longright=187,left==right:false
Longleft=188,Longright=188,left==right:false
Longleft=189,Longright=189,left==right:false
Longleft=190,Longright=190,left==right:false
Longleft=191,Longright=191,left==right:false
Longleft=192,Longright=192,left==right:false
Longleft=193,Longright=193,left==right:false
Longleft=194,Longright=194,left==right:false
Longleft=195,Longright=195,left==right:false
Longleft=196,Longright=196,left==right:false
Longleft=197,Longright=197,left==right:false
Longleft=198,Longright=198,left==right:false
Longleft=199,Longright=199,left==right:false
通过这个超长的输出结果,你会发现,存在一个区间[-128,127],在这个区间里通过==这种方式返回的是true,其他返回的都是false。
2.总结
其实,通过源码分析:
publicstaticLongvalueOf(longl){ finalintoffset=128; if(l>=-128&&l<=127){//willcache returnLongCache.cache[(int)l+offset]; } returnnewLong(l); }
在128~127这些数的对象在内存中被缓存起来,在内存中提供重用,这些数获取的时候就会自动获取缓存中的数,而不是new出来的对象。
所以,这与自动打包拆包无关。
再所以…,判读Long对象是否相等的时候建议不要采用==的形式,程序中无法绝对的判断参数值是否会在这个区间内,如果不在,那就出现让你摸不着头脑的问题。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。