这两段代码有啥区别嘛,为啥得出的结果不一样?(请问下面的两段代码有什么区别,为什么运行结果不一样呢???)
请问下面的两段代码有什么区别,为什么运行结果不一样呢???
这个我告诉你啊 :
首先,你要知道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 ",也就是说后面那个多了一个空格,输出当然就不一样了。