1. 首页 > 科技

这两段代码有啥区别嘛,为啥得出的结果不一样?(请问下面的两段代码有什么区别,为什么运行结果不一样呢???)

这两段代码有啥区别嘛,为啥得出的结果不一样?(请问下面的两段代码有什么区别,为什么运行结果不一样呢???)

请问下面的两段代码有什么区别,为什么运行结果不一样呢???

这个我告诉你啊 :

首先,你要知道String是对象,不是基本数据类型,他们的相等(==),是值引用相同。

String str1="hello";进行两步:

1、内存中生成对象"hello",引用假设为hello

2、str1指向hello

同样,str2也指向hello

str1和str2,指向的引用相同,所以他两个是相等的,第一段程序输出相等

String str3=new String("hello");

生成对象hello,引用假设为hello3,str3指向hello3

String str4=new String("hello");

生成对象hello,引用假设为hello4,str4指向hello4

这两个的指向的引用是不同的,所以输出的是不相等

可以简单的理解为:::

String str1="hello";

String str2="hello";

设置你String str10="hello";

他们是先生成中间变量hello,然后把hello赋值给str1 str2 str10等等 , 他们都相等

String str3=new String("hello");

使用new,每次都是重新生成对象,所以每次都是新的。

这两段代码的运行结果为什么不同?

代码一:

(number++) != 5 程序退出,没有递归.

代码二:

(number++) != 5打印xing.....知道等于5,return;

请问这两段c语言代码内容一样为什么运行结果不一样?

因为第一段传递的是指针的值(这个值等于它所指向的存储单元的地址)。 函数调用时,如果是传值,那么函数就会先对参数进行copy。 swap(p1,p2)调用时,函数体里的临时变量p1和p2实际上只是从参数表中参数p1和p2拷贝值给他们而已。所以函数调用完成后,函数体中的临时变量p1p2就被销毁了。也就是说swap函数对p1p2没有任何影响。 另外,第二段也不是实现ab的交换,只是实现了p1p2中存储的地址的交换。

为什么两个代码运行的结果不一样 错在哪里?

你前面的输出是printf("%d",后面的是printf("%d ",也就是说后面那个多了一个空格,输出当然就不一样了。