「java数组位置」java数组位置查找
本篇文章给大家谈谈java数组位置,以及java数组位置查找对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java数组元素位置交换?
- 2、java怎样获取元素在数组中的位置
- 3、java怎么得到一个元素在数组中的位置?
- 4、java中的数组存在哪?
- 5、JAVA数组移位
- 6、Java中数组对象的存储位置?
Java数组元素位置交换?
题目很简单,关键是思路
先找出最大值、最小值,并记住其位置
再做交换
具体参考下列代码
import java.util.Arrays;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// 第一步:定义数组
int[] arrs = { 6, 2, 9, 15, 1, 5, 20, 7, 18 };
// 第二步:找出最大值、最小值
int maxIndex = 0; // 最大值初始索引 = 0
int max = arrs[maxIndex];
int minIndex = 0; // 最小值初始索引 = 0
int min = arrs[minIndex];
for (int i = 1; i arrs.length; i++) {
if (arrs[i] max) {
max = arrs[i];
maxIndex = i;
}
if (arrs[i] min) {
min = arrs[i];
minIndex = i;
}
}
System.out.printf("第[%d]个值是最大值:%d \n", (maxIndex + 1), max);
System.out.printf("第[%d]个值是最小值:%d \n", (minIndex + 1), min);
System.out.println("开始交换最大值");
int end = arrs[arrs.length - 1]; // 记录最后一个元素值
arrs[arrs.length - 1] = max; // 最后一个元素值 = max
arrs[maxIndex] = end; // 原最大值 = 最后一个值
int start = arrs[0]; // 记录第一个元素值
arrs[0] = min; // 第一个元素值 = min
arrs[minIndex] = start; // 原最小值 = 第一个值
System.out.println("最终结果:");
System.out.println(Arrays.toString(arrs));
}
}
亲,答题也需要时间和精力,如果回答满意,请及时采纳,你的合作是我回答的动力!! 谢谢!!
java怎样获取元素在数组中的位置
public static void main(String[] args) {
int[] is = {28,7,15};
int i = 0;
// 需求:需要得到7在数组中的位置
for(int j=0;jis.length;j++ ){
if(is[j]==7){
i=j;
}
}
System.out.println("7在数组下标"+i+"的位置");
// System.out.println(is[i]);
}
java怎么得到一个元素在数组中的位置?
最简单的办法是遍历数组,检查每一个元素。
int i=0;
for(;iarray.length;i++)
if(array[i]==num)
break;
i 就是该元素在数组中第一次出现的位置(元素可能重复出现)。
java中的数组存在哪?
最后那个打印是bb那个方法里面调换了值x=a[0];a[0]=b[0];b[0]=x;,先是100等于x,然后是吧200赋值给了a[0],接下来是吧x=100赋给了b[0],所以此时的a[0]=200,b[0]=100
数组分为堆上数组和栈上数组,x=a[0];x在堆上,a[0]在栈上.
JAVA数组移位
我看不懂,你到底是在平移数组元素还是把指定下标的元素变成默认值?第五个元素原来是4你怎么把它变成0了?
下标越界是肯定的。数组一旦被定义,长度就是不变的。与其说是平移,你这个其实是插入操作,在指定的下标插入默认值。一旦插入新元素,数组的元素个数会变长,但这是不允许的,所以肯定会有下标越界异常。
如果你真的是要插入一个默认元素的话你无法在原来的数组上进行操作,只能声明一个新的数组,长度比原来数组长1,然后把旧的元素复制到新的数组,插入默认值,然后再把array的引用指向新数组。可以这样:
int[] array={0,1,2,3,4,5,6,7,8,9};
int[] temp=new int[array.length+1]; //
int k; //k为指定下标,假设已知
for(int i=0;ik;i++)
temp[i]=array[i]; //复制下标前的元素
temp[k]=0; //设置默认值
for(int i=k;iarray.length;i++)
temp[i+1]=array[i]; //复制下标后的元素
array=temp; //改变数组引用
Java中数组对象的存储位置?
原帖地址:
数组单一说在栈中还是堆中都是错误的,分为几种情况:
1、固定数组在函数体内分配是在栈中的
我们做一个试验,一般DELPHI程序线程的栈大小是1M,如果我们函数体中申请4M大小的数组,报栈溢出,则表示数据的大小是在栈中的。
const
CArrayCount = 1024*1024*4;
procedure TForm1.btnMainThreadClick(Sender: TObject);
var
MainThreadArray: array[1..CArrayCount] of Char;
i: Integer;
begin
for i := Low(MainThreadArray) to High(MainThreadArray) do
MainThreadArray[i] := #0;
end;
我把以上代码在主线程中测试时,确实报了栈溢出,如果这时你把DELPHI程序的栈调大为6M则正确,表示在函数体中申请的数组是在栈中的。
2、固定数组在类中分配是在堆中的
我们在类中加一下定义语句
FFixArray: array[1..CArrayCount] of Char;
程序正常,表示在类中分配固定数组是在堆中的。
3、固定数组全局变量是在堆中的
我们在程序定义全部数组
GFixArray: array[1..CArrayCount] of Char;
程序也正常,表示全局固定长度是在堆中的。
3、动态数组不管在函数体中、类中、全局变量都是在堆中
如果你会汇编,看一下汇编就明白了。DELPHI这么实现是合理的,在函数里中分配的固定长度数组放在栈中可以加快运行效率,而且在多线程的情况下,不用像堆分配有加锁。只是大家在写程序的过程中注意在函数里定义太长的数组需要注意,否则栈溢出,程序就崩溃了。
关于java数组位置和java数组位置查找的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。