浅谈java中的数组

1、什么是数组?

 

    数组是一种数据结构,用来存储同一类型的集合,通过一个整型的下标可以返回数组中的每一个值。

通俗的说,数组就是多个相同类型数据的组合,在内存中用连续的区域进行存储,每个区域有一个下标。

 

2、java中数组与C/C++中数组的区别是什么?

 

    C/C++中的数组是可以在栈空间中分配,但是Java中数组变量属于引用类型,数组对象在堆中分配。

 

3、数组中的元素的数据类型是否有什么限制?

 

    数组中的元素可以是任何数据类型,包括基本类型和引用类型。

 

4、数组的分类:

    a.一维数组

    b.二维数组

 

5、一维数组的声明:

 

    声明整型数组 a: int[] a 或int a[]

 

    上面哪种方式声明更好一些呢?

 

    int [] a这种形式要好一些,因为它将类型int[] 整型数组与变量名分开了。

 

    我们需要注意:a只是对数组的一个引用。Java语言中声明数组时不能指定长度(也就是数组元素的个数),如int[5] a是非法的。

 

6、一维数组的初始化:

 

    应该使用new关键字创建真正的数组。也就是为一个数组在内存中开辟一块存储空间。

 

7、如何给一维数组进行赋值呢?

 

    可以通过for循环进行赋值。

    int [] a = new int[100];

    for(int i = 0;i<a.length;i++){

        a[i] = i;

    }

 

    需要注意的是:数组一量被创建,就不能再改变它的大小.

 

8、给数组初始化的方式:

 

    a、 使用for循环进行赋值

    b、 数组创建与赋予初始值一起进行。

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

    c、 匿名数组

          new int[] {1,2,3,4};

    匿名数组用在什么地方呢,有些时候某个方法需要接收一个一维数组的参数,这时候就可以使用一个匿名数组代上初始化的值传递给方法。

 

9、如何对数组元素进行拷贝?

<1>、数组变量如何拷贝?

把一个数组变量赋给另一个数组变量,两个变量将引用同一个数组:

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

int[] b = a;

b[2] = 4;//a[2]也会变为4

<2>、数组值应该如何拷贝?

目的是为了实现将一个数组的所有值拷贝到一个新数组中,需要使用到java.util.Arrays类中的copyOf(from,large)方法

第一个参数:从哪一个数组拷贝

第二个参数:新数组的长度

int [] a = Arrays.copyOf(b,b.length);

数组的长度当然可以扩大:

int [] a = Arrays.copyOf(b,2*b.length);

注意:如果新数组的长度大于原数组,数组元素是数值型,那么多余的元素将被赋值为0,如果数组的元素是boolean型,那么默认赋值为false;如果是引用类型,那么赋予的值是null。

<3>、在JAVASE6之前,用System类的arraycopy方法将一个数组的元素拷贝到另一个数组中(java.lang.System)

System.arraycopy(from,fromindex,to,toindex,count);

数组to必须有足够的空间存放拷贝的元素。

from元数组

fromindex:从原数组下标为fromindex的位置开始拷贝

to:新数组

toindex:从新数组的下标为toindex的位置开始填充

count:一共拷贝count个元素

 

10、如何来遍历数组?

<1>、使用for循环

<2>、使用增强的for循环

它可以依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而担心。

<3>、增强的for循环格式:

for(varable:collection)statement

varable用于暂存集合中的每一个元素,并执行相应的语句。

collection必须是一个数组或者是一个实现了Iterable接口类对象。

在什么时候用增强的for循环,什么情况下不用增强的for循环呢?

如果需要处理一个集合中的所有元素,增强的for循环相当不错。

如果不希望遍历集合中所有的元素,或者在循环内需要使用到数组下标值时,则多采用传统的数组遍历方式。

 

11、二维数组:

<1>、什么是二维数组?

通俗的说就是以一维数组为数组元素的数组。

<2>、二维数组的声明与初始化需要注意:

按从左到右的顺序进行。

<3>、使用增强的for循环遍历二维数组如何做?

public static void main(String [] args){

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

for(int[] b : a){

for(int c : b){

System.out.println(c);

}

}

}

12、如何对数组进行排序呢?

<1>对数值型的数组进行排序

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

Arrays.sort(a);

<2>、字符串排序,先大写后小写

String [] str = new String[]{"x","X","a","A"};

Arrays.sort(str);

<3>、严格按字母顺序排序,也就是忽略大小写排序

Arrays.sort(str,String.CASE_INSENSITIVE_ORDER);

<4>、反向排序

Arrays.sort(str,Collections.reverseOrder());

<5>、忽略大小写反向排序

Arrays.sort(str,String.CASE_INSENSITIVE_ORDER);

Collections.reverse(Arrays.asList(str));

 

 

 

Java,可以使用Arrays工具类的asList方法将字符串数组直接转换为List。该方法返回的是Arrays的内部类ArrayList,而不是java.util.ArrayList,所以无法使用add、remove等方法。可以通过使用java.util.ArrayList的构造器,将转换后的结果创建一个新的List,以便使用add等方法。以下是一个示例代码: ```java String[] str = {"AA", "BB", "CC"}; List<String> list = new ArrayList<>(Arrays.asList(str)); ``` 另外,如果你使用的是Java 8及以上的版本,还可以使用流(Stream)来进行转换。通过使用Arrays工具类的stream方法将字符串数组转换为Stream,然后通过collect方法将Stream转换为List。以下是一个示例代码: ```java String[] s = {"bb", "aa", "aa"}; List<String> list = Arrays.stream(s).collect(Collectors.toList()); ``` 这样就可以将Java字符串数组转换为List了。希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java开发技巧 数组转List的四种方式总结](https://blog.csdn.net/weixin_44131922/article/details/125925834)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Java的String数组与List的相互转换方式](https://blog.csdn.net/qq_58351353/article/details/119493141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [浅谈java 字符串,字符数组,list间的转化](https://download.csdn.net/download/weixin_38699830/12791338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值