为什么java的赋值语句执行效率这么高
--------------------编程问答-------------------- 以下代码也是瞬间完成char b;
for (int j=1;j<=10000;j++){
for (int i=1;i<=1000;i++)
b=a;
for (int i=1;i<=1000;i++)
for (int k=1;k<=(i+1000)/3;k++){
b='a';
b='b';
b='c';
}
}
排除了编译器自动去除无意义赋值的可能 --------------------编程问答-------------------- C++中的字符串赋值操作,要给b分配空间,然后将a拷贝到b;
而java的操作,是将a对象的地址赋给b;
当然速度就快多了。 --------------------编程问答-------------------- C++的字符串赋值好像是要在堆中要给b分配空间,然后将a拷贝到b,在吧地址给栈中的b。
而java是直接将a的引用赋值给栈中的b。
这里可以看出来C++中多了一个给b在堆中分配空间及赋值的操作,而且在堆中的操作要比在栈中的操作慢很多的。 --------------------编程问答-------------------- 但是据我所知java里String是引用数据类型,但是char不是应该是基本数据类型嘛
基本数据类型的复制难道不是开辟空间,然后直接复制过去的? --------------------编程问答-------------------- java在运行时会做优化的,在不同的jvm实现上跑出的结果可能差别很大的 --------------------编程问答-------------------- 这还真不是很了解
补充:Java , 非技术区