下面程序段 for输出结果是

扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下面程序输出结果是(  )A.1,1B.2,1C.1,2D.2,2
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
A=1,B=2,则T=A=1,A=B=2,B=T=1,故A=2,B=1,故选:B.
为您推荐:
根据算法语言进行计算即可.
本题考点:
程序框图.
考点点评:
本题主要考查算法语言的运行,根据赋值进行计算即可.比较基础.
扫描下载二维码true,false
false,true
false,false
对于不同的环境结果不同
程序无法执行
本题是一个自动拆装箱的考题(自动拆装箱JDK需在1.5上)
1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;
2、两个Integer类型进行“==”比较,如果其值在-128至127,那么返回true,否则返回false,
这跟Integer.valueOf()的缓冲对象有关,这里不进行赘述。
3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true 4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。
int a=257; Integer b=257; Integer c=257;
Integer b2=57; Integer
System.out.println(a==b); //System.out.println(a.equals(b));
编译出错,基本型不能调用equals() System.out.println(b.equals(257.0));
System.out.println(b==c); System.out.println(b2==c2);
因此上面的代码的结果因此为 true, false, false, true
,这个是基本类型与
会自动拆箱成
类型,然后比较的是值。因此返回真。
j.equals(i)
方法后,这个
会自动装箱成
类型,然后再比较值,所以也返回真。
==如果是primitive主类型,那么比较值;如果是对象,那么比较引用地址
equals需要根据具体对象的实现来判断,在Integer里面是判断值是否相等
一般说来,如果是两个Integer类型进行==比较,就是比较两个Integer对象的地址。但是有一点需要注意的是在-128至127这个区间,如果创建Integer对象的时候(1)Integer
i = 1; (2) Integer i = Integer.valueOf(1);
如果是这两种情况创建出来的对象,那么其实只会创建一个对象,这些对象已经缓存在一个叫做IntegerCache里面了,所以==比较是相等的。
如果不在-128至127这个区间,不管是通过什么方式创建出来的对象,==永远是false,也就是说他们的地址永远不会相等。
总体主要分为两个方面
①比较的是值
一、基本数据类型与引用数据类型进行比较时,引用数据类型会进行拆箱,然后与基本数据类型进行值的比较
int i = 12;
Integer j = new Integer(12);
i == j 返回的是true
二、引用数据类型与基本数据类型进行比较(equals方法),基本数据类型会进行自动装箱,与引用数据类型进行比较,Object中的equals方法比较的是地址,但是Integer类已经重写了equals方法,只要两个对象的值相同,则可视为同一对象,具体看API文档,所以这归根到底也是值的比较!
int i = 12;
Integer j = new Integer(12);
j.equals(i) 返回的是true
②比较的是地址
一、如果引用数据类型是这样 Integer i = 12;直接从常量池取对象,这是如果数值是在-128与127之间,则视为同一对象,否则视为不同对象
Integer i = 12; Integer j = 12; i
== j 返回的是true
Integer i = 128; Integer j = 128;
i == j 返回的是false
二、如果引用数据类型是直接new的话,不管值是否相同,这时两个对象都是不相同的,因为都会各自在堆内存中开辟一块空间
Integer i =new Integer(12);
Integer j = new Integer(12);
i == j 这时返回的是false
三、从常量池取对象跟new出来的对象也是不同的
Integer i = 12;
Integer j = new Integer(12)
i == j 这时返回的是false,因为第二个语句其实已经是new了两个对象了!!!
这道题不严谨,JDK1.5版本之后才支持自动装箱和自动拆箱。
也就是说,JDK1.5以后的运行环境是输出true,true。
而JDK1.5之前,编译会报错。
应该选择E。(一般大公司出的面试题都是指定运行版本的)
Interger j
与数值类型
进行比较时比较的是
,而不是地址因此
j.equals(i)
同样比较的是
,因此返回的是
int类型与Integer进行比较,Integer会自动拆箱成Int类型再比较,所以为true。
Integer m = new Integer(1);
Integer n = new Integer(1);
都是new出来的对象,在堆中,而且不存在拆箱和享元模式的问题,因此是不等
Integer m = 1;
Integer n = new Integer(1);
m在常量池中,而n在堆里,两个都是Integer类型,因此不等
Integer m = 1;
Integer n = 1;
不是new出来的,而且数值在-128~127之间,因此相等
Integer m = 128;
int n = 128;
Integer k = new Integer(128);
两边类型不一样,自动拆箱,比较数值,因此 m==n
①无论如何,Integer与new Integer不会相等。不会经历拆箱过程.
②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false
java在编译Integer i2 =
128的时候,被翻译成-& Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存
③两个都是new出来的,都为false
④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比
int类型与Integer进行比较,Integer会自动拆箱成Int类型
java中定义的常量包括字符串常量会首先放到常量池里面,当有新的对象产生时候,会与常量池的内容比较,如果值相同,那么就会共享一样的引用。
E : Integer 自动拆装箱是1.5新特性。即原来的版本不支持, 那么势必编译中会报错
Java使用自动装箱和拆箱机制,节省了常用数值的内存开销和创建对象的开销,提高了效率。通过上面的研究和测试,结论如下:
(1)Integer和 int之间可以进行各种比较;Integer对象将自动拆箱后与int值比较
(2)两个Integer对象之间也可以用&、&等符号比较大小;两个Integer对象都拆箱后,再比较大小
两个Integer对象最好不要用==比较。因为:-128~127范围(一般是这个范围)内是取缓存内对象用,所以相等,该范围外是两个不同对象引用比较,所以不等。
public static Integer valueOf(int i) {
if(i &= -128 && i &= IntegerCache.high) // 没有设置的话,IngegerCache.high 默认是127
return IntegerCache.cache[i + 128];
return new Integer(i);
java Integer和int之间==的比较问题。 如下实例 public static void main(String[] args)
{ // TODO Auto-generated method stub Integer a = new Integer(1); Integer
b = new Integer(1); int c=1; Integer e = 1;
System.out.println(&a==b:&+(a==b));
System.out.println(&a==c:&+(a==c));
System.out.println(&a==e:&+(a==e));
System.out.println(&c==e:&+(c==e)); } 结果: a==b:false a==c:true
a==e:false c==e:true
回答: Integer是int的封装对象,两个对象==比较的是栈的值 Integer a =
new Integer(1); Integer b = new Integer(1); a与b存的是Integer的堆中的地址,而不是值
a、b指向堆中的地址显然不同所以 a==b 为false
int c = 1;
int为值类型,引用类型Integer与值类型int比较显然比较的是值 因为int在堆中是不开辟内存的,他在栈中的值则为他本身的值
所以a==c比较的是他们各自的value, a==c为true
Integer e=1; 这个比较特殊,直接赋值
它有独立的内存,每次赋值时将检查内存中是否有值跟他匹配的,若有则把此内存地址付给e,若没有,开辟新的内存
你可以尝试下面的例子:
Integer t = 1; Integer t1 = 1; t==t1 为true,如上所说,此时t与t1指向的是同一块内存
一定是开辟新的内存,直接赋值则不一定开辟新的内存 因为a的引用指向堆,而e指向专门存放他的内存,所以他们的内存地址不一样
所以a==e为false
c==e等同于 a==c,一个引用类型一个值类型 不一定是飞机
==,j拆箱退化成int,比较值本身,相等
equals,判断内容本身,相等
一般==用于比较基本类型的数值,equals()用于引用类型,==比较的是两者的值,equals()在没有被覆盖时,比较的是两者的内存地址是否相同,但一般String,Date,Integer的equal()都被覆盖了,所以比较的是两者的value,比如:A
a=new A(“abc”) ,b=&abc&,a.equals(b)为TRUE,
i==j ,这个是基本类型与 Integer 的比较, j 会自动拆箱成 int 类型,然后比较的是值。因此返回真。
j.equals(i) ,调用 equals 方法后,这个 i 会自动装箱成 Integer 类型,然后再比较值,所以也返回真。
这个有点不懂,equals方法1.6中写的:比较此对象与指定对象。当且仅当参数不为null,并且是一个与该对象包含相同int值的Integer对象时,结果为true。
为啥题中i不是Integer对象还能返回true呢?哪位大神知道帮忙回答下吧 非常感谢
前些天才看了,不做题竟然没有记牢
public class NiukeTest {
public static void main(String[] args) {
int a=257;//基本类型
int d=257;
Integer b=257;//基本装箱类,后面称为装箱类
Integer c =257;
Integer b2=57;
Integer c2=57;
Integer b3=new Integer(257);
Integer c3=new Integer(257);
//对于==基本类型比较值,装箱类比较对象的地址
System.out.println(a==d);//返回true
System.out.println(a==b);//b会自动拆箱成基本类型 ,比较两个基本类型的值
//对于Object的equals方法,比较的是对象地址,但Integer重写了equals方法,归根到底比较的是对象的值
System.out.println(b.equals(a));//a是基本类型,会自动装箱,比较两对象的值
//装箱类从常量池取对象,如果数值在-128~127之间,视为同一对象,返回true,否则视为不同对象,返回false(跟Integer.valueOf()的缓冲对象有关)
System.out.println(b==c);//数值在-128~127之外,返回false
System.out.println(b2==c2);//数值在-128~127之间,返回true
System.out.println(b3==c3);//装箱类new出来的对象,不管值是否相同,两个对象都不相同,在各自的堆内存开辟一块空间,即不同的地址 返回 false
System.out.println(c2==c3);//装箱类从常量池取出来的对象,同new出来的对象的地址也是不同的,返回false
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
京ICP备号-4
扫一扫,把题目装进口袋下面程序的输出结果是多少?
import java.util.D
public class Test extends Date{
public static void main(String[] args) {
new Test().test();
public void test(){
System.out.println(super.getClass().getName());
答案:Test
解释:在test 方法中,直接调用getClass().getName()方法,返回的是Test 类名
由于getClass()在Object 类中定义成了final,子类不能覆盖该方法,所以,在test 方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效
于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test。
如果想得到父类的名称,应该用如下代码:getClass().getSuperClass().getName();
[阿里笔试]下面代码在64位Linux系统编译执行,输出结果是____。
没有更多推荐了,已解决问题
求几个C语言程序 解答:
浏览次数:366
用手机阿里扫一扫
最满意答案
1.下面函数的功针所指的存储单元中的内容进行交换,请填空exchange&(int&*x,&int&*y){&int&t;t=*y;*y=[*x]&;*x=[t]&&;&}2.下面程序的输出是&&[17]main(){&int&a[10]=(19,23,44,17,37,28,49,36),&*p=a;printf(&%d\n&,&*(p+=3));}3.下面程序的输出结果是&&[024]#define&MAX&3int&a[MAX];main(){&fun1();fun2(a);&printf(&\n&);}fun1(){&int&k,t=0;for(k=0;&k<MAX;k++,t++)&a[k]=t+t;&}&fun2&(int&b[&]){&int&k;for(k=0;&k<MAX;k++)&printf(&%d&,&*(b+k));&}4.下面程序输出结果是&:&&[AC]char&b[]=&ABCD&main(){char&*chp;for(chp=b;*chp;&chp+=2)printf(&%c&,*chp);printf(&\n&);}
答案创立者
以企业身份回答&
正在进行的活动
生意经不允许发广告,违者直接删除
复制问题或回答,一经发现,拉黑7天
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题
扫一扫用手机阿里看生意经
问题排行榜
当前问题的答案已经被保护,只有知县(三级)以上的用户可以编辑!写下您的建议,管理员会及时与您联络!
server is ok扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
下面程序执行后,输出的结果是________.#include#includemain(){ char ss[10]="12345";strcat(ss,"6789");printf("%s\n",ss); }A) ABC B) ABC9C)
D) ABC456789
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
Cchar ss[10]="12345";------------->这一句是赋值,将1,2,3,4,5赋值给ss[0],ss[1],ss[2]..
strcat(ss,"6789");--------------->这一句是将“6789”接到ss后面.注意:“6789”是字符串,也就是string.后面有一个\0的.刚好10个数字.所以显示出来的就是 了.
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 有如下程序段 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信