最近,我一直在学习java,并且正在编码找到具有与给定输入(字符串输入)相同的数字的最大数字的问题。问题需要交换功能。下面是代码。
交换(C,5,4); // c是我的字符数组.5和4是要替换字符的整数
public static void swap(char demo[],int x,int y)
/*the function defined in the same class where function is declared */
{
char temp=[x];
demo[x]=demo[y];
demo[y]=temp;
}
我的查询:
1)我知道在java指针中不存在与C / C ++不同的事实,但是我怀疑为什么我的原始数组c中的4和5处的字符在C / C ++指针中被交换了正在帮助修改原始数组。我无法理解java如何处理它?</ p>
2)就像在C / C ++中一样,当你从函数定义返回时,临时变量会被删除。这不是java的情况,因为它是用c / c ++编写的,我上面的代码不会&# 39; t交换了原始数组,直到我发送了参考文献。
我很天真,在这里搜索过但却无法找到答案。如果我对此有所了解,我将不胜感激。
答案 0 :(得分:0)
demo
是引用类型变量。它包含引用的值。
方法的调用者和方法本身都引用了char[]
实例。该方法使用该引用来定位对象并对其进行更改,即。交换两个元素。
当方法返回时,调用者仍然具有对同一对象的引用,因此可以看到该对象内的更改。