java中int和integer等于比较,if作用域
相同类型比较
- 基本类型比较,基本数据类类型存的是数值本身,直接使用值比较
- 引用类型比较,引用类型变量在内存放的是数据的引用,使用地址比较
int 和 integer比较
- 会把integer转成int,然后进行值比较
integer和integer比较
- -128~127 之间的数,会被缓存,超过这个范围,会新
new Integer()
,new出来的一定是一个新对象 - 给一个Integer赋予一个int类型的时候,(自动装箱)会调用Integer的静态方法valueOf
Integer a = 127; //自动装箱
Integer b = 127;
int c = 127;
Integer d = new Integer(127);
Integer e = Integer.valueOf(127);
System.out.println(a == b); //true 因为小于128,被缓存在cache里,所以是同一个对象
System.out.println(a == d); //false new出来的是一个新对象,所以一定不相等
System.out.println(a == e); //true 相当于执行了valueOf()方法,因为小于128,从cache里取值
System.out.println(d == e); //false new出来的是一个新对象,所以一定不相等
System.out.println(a == c); //true 把integer转为int,然后进行值比较
System.out.println(d == c); //true 把integer转为int,然后进行值比较
System.out.println(e == c); //true 把integer转为int,然后进行值比较
if 作用域
如果有大括号{},作用域在{}内.如果没有大括号,作用域只有一行,而且不可以声明变量
int a=10;
int b= 0;
if(a==10){
// 可以使用外部声明的变量
a=0;
// 还可以声明变量,但是作用域仅在大括号内
int c =10;
}
// 在if外部不可以使用if里的变量
// c=20;
if (a == b)
// if 不加括号,作用域只有一行,不可以在这里声明变量
// int no=10; // 声明报错
System.out.println("if作用域内:");
// 这行开始,已经跳出了if作用域
System.out.println("if作用域外:");
你要是觉得写的还不错,就点个关注,可以评论区留下足迹,以后方便查看.
你要是觉得写的很辣鸡,评论区欢迎来对线!
欢迎转载!