java 如何找到数组中指定的元素的下标

java 如何找到数组中指定的元素的下标,第1张

String[] ary = new String []{"asd","sdf","ffd ","rgrh"};//你所定义的数组

int k=0;//定义变量保存指定元素的下标

for( int i=0;i<arylength;i++)

{

if(ary[i]equals("ffd "))//ffd 为你指定的元素

{

k=i;

Systemoutprintln(k);//打印出指定元素的下标

}

}

if(k==0)

{

Systemoutprintln("您所指定的元素不存在");//指定元素不存在

}

以下标引用的方式访问数组

在使用数组的场合中,我们常见的一种访问方法是使用下标访问数组元素,如:array[2] = 1,此语句是将该数组的第三个元素赋值为1[ ]符号中的数字可以认为是在数组基地址上的偏移量,可以通过改变这个偏移量来访问整个数组。

2以指针访问的方式访问数组

除了使用偏移量的方法,我们还可以使用指针的方法来访问数组,即间接引用的方式。如:(array+2) = 1,同上面的代码一样,也是对该数组的第三个元素进行赋值。

3下标引用和指针访问的执行效率问题

对于这两种不同的访问数组的方式,它们的执行效率也不同,在这里先给出结论:指针访问的效率 >= 下标引用的效率。接下来我们来说说,为什么使用指针进行间接访问的效率会优于小标引用的效率。

下标引用的效率

现在假设有如下代码,执行对整个数组的初始化过程:

int array[10];

for(int i = 0;i < 10;i++)

{

array[i] = 0;

}

在这里我们还是假设编译器中int类型占4个字节,在执行array[i] = 0时,编译器会将其转化为类似(array + (i4)) = 0形式。在整个执行10次的循环中,意味着也进行了10次乘法运算 *** 作和10次加法运算 *** 作。

指针访问的效率

假设有如下代码,执行对整个数组的初始化过程:

int array[10];

for(int ptr = array; ptr < array+10; ptr++)

{

ptr = 0;

}

这里是将指针一开始指向数组首地址,然后每次向后移动一个数组元素,这里是每次移动4个字节,即每次对指针地址+4。在整个过程中只进行了10次加法运算。同上对比可得,对于数组 *** 作来说,指针访问的效率是优于下标引用的。

4下标引用和指针访问的优先级问题

关于这个问题,笔者还是先给出结论,再举例进行阐述。

结论:下标引用优先级 > 指针访问优先级。

假设我们现在有以下两个数组的声明:

int array1[10];

int (array2)[10];

关于上述声明,乍一看很容易混淆,但其实这只是一个关于结合优先级的问题。在看这些声明时,需要记住下标优先级高于指针,并且如果出现了( ),那么它的优先级一定是最高的。

int array1[10]

在和[ ]同时出现的时候,我们先结合优先级高的[ ]来看,即它先声明了一个含有10个元素的数组array1,然后将剩下的int 组合,可以知道这个数组里面的每个元素,都是一个指向整型类型的指针变量。也就是说,这是一个含有10个指针变量的指针数组。

int (array2)[10]

这里的声明中出现了( ),由于( )的优先级最高,所以我们先看(array2),即array2是一个指向某种类型的指针变量。再结合剩下的int [10],可以知道这个指针变量指向的数据类型是含有10个元素的整型数组。也就是说,这是一个数组指针,指向一个10元素整型数组。

string[] str = new string[] {"1","2","3","4","5","6"} ; //声明字符串数据str\x0d\ArrayList arr = new ArrayList(str); //声明一个ArrayList并载入str数组\x0d\int index = arrIndexOf("2"); //通过indexof函数找到2所在数组中的位置\x0d\MessageBoxShow("2在字符串数组第 " + (index + 1)ToString() + " 个位置!"); //然后d出数组中第几个数值是2(因为数组是从0开始的,所以这里使index + 1); 只取数组下标的话,可以将 +1这个 *** 作省去!就是\x0d\MessageBoxShow("2所在数组下标值为: " + indexToString()); //获取数组下标

单独访问每一个数组元素时使用的索引

如int a[5]={1,2,3,4,5};

a[0]

a[1]

a[2]

a[3]

a[4]

分别表示数组中的1、2、3、4、5

上面括号中的0,1,2,3,4就是下标

array array_flip ( array trans)

将trans中的所有元素变为下标,对应的原先的key(下标)变为值

适用于关联数组(索引数组没测试过)

比如

$a = array(

'name'=>'ansuir',

'pet'=>'cat'

);

经过转换后得到的新数组

$b = array_flip($a);

/

$b=array(

'ansuir'=>'name',

'cat'=>'pet'

);

/

这样,就可以通过$b['ansuir'] 得到 'name'了,也就是原先在$a 中的对应下标

这个函数多用于去重数组值,两次翻转之后可以将重复的数组元素去除

foreach和for循环类似的,使用foreach的好处是,当遍历数组时,因为有些语言的起始位置是从0开始的,而有些语言的起始位置却使从1开始,当语言支持foreach语法时,使用了foreach,它就自动帮你从数组第一位开始遍历,而不用你管第一位的下标是0还是1。而使用for来遍历的话,你还要确定该语言对数组的定义是下标1开始还是下标0开始。

数组中的元素就是通过下标获取的啊,你是探究其中的原理吗?你可以把他想象成一排有效的数字,是从0还是,然后有序的排列着的,你想要叫几号出来,只要直接喊他名字就行了,并不用知道这个人的名字或者性别或者其他东西

以上就是关于java 如何找到数组中指定的元素的下标全部的内容,包括:java 如何找到数组中指定的元素的下标、在C语言中,用下标如何访问数组元素、C#取已知数组元素的数组下标,有没有函数可以直接完成等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9533281.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存