Integer & int & == & equals

int 是基本类型,直接存数值,integer是对象,用一个引用指向这个对象
int 是基本数据类型,Integer是类
int类的变量初始为0,Integer的变量则初始化为null.

如果只是用来进行一些加减乘除的运算or作为参数进行传递,那么就可以直接声明为int基本数据类型;
如果要像对象一样来进行处理,那么就要用Integer来声明一个对象,因为java是面向对象的语言,因此当声明为对象时能够提供很多对象间转换的方式,与一些常用 的方法。 public static void main(String args[]){ Integer i = new Integer(5); Integer j = new Integer(5); System.out.print(i==j);//false:比较的是i与j,new后是申请了两块内存分别用来存放5,两块内存不同 System.out.println(i.equals(j));//true:比较的是i的内容与j的内容boolean java.lang.Integer.equals(Object obj) String aa = "aaaaa"; String bb = "aaaaa"; System.out.println(aa.equals(bb));//boolean java.lang.String.equals(Object anObject) /** * i.equals(j) 与 aa.equals(bb)这两个equals分别是两个类下的函数 * Integer类下: * public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; } String类下: public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String) anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; } * */ // Integer i = -127; // Integer j = -127; // System.out.print(i==j);//-128~127内为true;其他的为false;因为缓存就是-128~127(1byt) // System.out.println(i.equals(j));//true:比较的是i的内容与j的内容 /** * 缓存 * Integer (-128~127) * Boolean (all) * Byte (all) * Character (<=127) * Short (-128~127) * Long (-128~127) * Float (none) * Double (none) * **/ // Double a = 12.1; // Double b = 12.1; // System.out.println(a==b);//false;Double 无缓存 // System.out.println(a.equals(b));//true // double aa = 12.1; // double bb = 12.1; // System.out.println(aa==bb);//true // //System.out.println(aa.equals(bb)); // //Cannot invoke equals(double) on the primitive type double // int i = -1288; // int j = -1288; // System.out.println(i==j);//true,只要两个数字相等,就是true // String a = "hello";//当创建一个字符串时,先去String poll(缓存池)内找,找到直接返回赋值 // String b = "hello";//这两个字符串都是String poll(缓存池)内的同一个 // String c = new String("hello"); // System.out.println(a==b);//true;String有缓存 // System.out.println(a==c);//false;a是缓存池内的,c是重新申请的内存占“hello”这6个字节(最后一个是结束符),两者不同 // System.out.println(a.equals(b));//true // System.out.println(a.equals(c));//true // String i = "12";//字符串必须为数字类型的,否则会报java.lang.NumberFormatException // int a =Integer.parseInt(i, 16);//转换为16进制 // System.out.println(a); // int b = Integer.parseInt(i);//默认为10进制 // System.out.println(a+2); // Integer i = 1; // i = Integer.reverse(i);//倒序 // System.out.println(i);//-2147483648 // i = Integer.reverse(i); // System.out.println(i);//1 }

  

原文地址:https://www.cnblogs.com/wwzyy/p/4775226.html