java数组的声明_Java数组定义常用方法[通俗易懂]

java数组的声明_Java数组定义常用方法[通俗易懂]Java数组定义常用方法Java中的数组、是一种简单的线性数据存储结构、他用牺牲自动扩展大小来换取与集合相比的唯一优势——查询效率的提升。Java中的数组有什么类型?我们要怎么定义这些数组呢?下面跟yjbys小编一起来学习Java数组定义常用方法吧!java中有两种数据类型:a)引用类型b)基础类型其中基础类型又有两种:b1)数值类型b2)及布尔类型。数组——也为java的一个数据类型、归类为引用…

大家好,又见面了,我是你们的朋友全栈君。

Java数组定义常用方法

Java中的数组、是一种简单的线性数据存储结构、他用牺牲自动扩展大小来换取与集合相比的唯一优势——查询效率的提升。Java中的数组有什么类型?我们要怎么定义这些数组呢?下面跟yjbys小编一起来学习Java数组定义常用方法吧!

java中有两种数据类型:

a)引用类型

b)基础类型

其中基础类型又有两种:

b1)数值类型

b2)及布尔类型。

数组——也为java的一个数据类型、归类为引用类型。本文意图说清楚两点:

1、数组的声明以及初始化。

2、常用的数组方法。

补充一点:对于我们常说的二维数组、多维数组其实是一维数组的`延伸、这里暂时只围绕一维数组。

【数组的声明及初始化】

1、数组的声明:

作为一种引用类型、就如我们平常使用引用类型的时候声明一样、一般有两种写法:

a) type[] arrayName; exp: String[] strArray;

b) type arrayName[]; exp: String strArray[];

第二种源于C的写法、由于很容易造成混淆、所以现在基本不使用这种声明方式了。

2、数组的初始化:

数组的初始化有两种:

a) 静态初始化——数组大小由系统分配、我们只为数组每个位置上赋值

String[] strArray1 = {“a”, “b”, “c”, “d”, “e”};

String[] strArray2 = new String[]{“a”, “b”, “c”, “d”, “e”};//在 new String[]中不能指定String数组的大小!

b)动态初始化——只指定数值的大小、初始化工作由系统为我们完成(即为数组的每个位置赋初始值)

String[] strArray3 = new String[5];//此时String数组的每个位置上的值都由系统来初始化、使用默认的值””

//我们能做的是动态的为strArray3每个位置上的值进行修改

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

//这里仅用原始的方法进行赋值。

strArray3[i] = strArray1[i];

}

【数组的常用方法】

package com.chy.array.usefulMethods;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.HashSet;

import java.util.Set;

import com.chy.array.bean.Student;

@SuppressWarnings(“all”)

public class ArrayUseFulMethoed {

private static int[] intArray = {1, 2, 3, 4, 5};

private static String[] strArray = {“a”, “b”, “c”, “d”, “e”};

/**

* 填充元素、比较大小、复制元素

*/

public static void testFillArray(){

//注意字符串和对象的不同

Student[] student1 = new Student[4];

Student[] student2 = new Student[4];

System.out.println(Arrays.equals(student1, student2));//true

Arrays.fill(student1, 0, 4, new Student(1,”chy”));

Arrays.fill(student2, new Student(1,”chy”));

System.out.println(Arrays.equals(student1, student2));//false

String[] str1 = new String[4];

String[] str2 = new String[]{“a”, “a”, “a”, “a”};

String[] str3 = {new String(“a”), new String(“a”), new String(“a”), new String(“a”)};

Arrays.fill(str1, “a”);

System.out.println(Arrays.equals(str1, str2));//true

System.out.println(Arrays.equals(str2, str3));//true

String[] str4 = Arrays.copyOf(str1, 2);//是将传入的数组拷贝len个元素到新的数组、相当于复制本身的一部分或者全部形成一个全新的数组

System.out.println(str4.length + “=======” + Arrays.toString(str4));// 2=======[a, a]

String[] str5 = new String[8];

System.arraycopy(str4, 0, str5, 6, 2);//是将str4从下标0开的2个元素拷贝到从下标6开始放置的数组str5中

System.out.println(str5.length + “=======” + Arrays.toString(str5));// 8=======[null, null, null, null, null, null, a, a]

}

/**

* 以字符串的形式输出指定数组的“模样”

*/

public static void printOriginalArray(){

String intArrayToString = Arrays.toString(intArray);

System.out.println(intArrayToString); //result: [1, 2, 3, 4, 5]

}

/**

* 将数组转化成List集合

* 注意:不能直接将int[]转化为集合、因为asList()方法的参数必须是对象。应该先把int[]转化为Integer[]。

* 对于其他primitive类型的数组也是如此,必须先转换成相应的wrapper类型数组。

*/

public static void convetArrayToList(){

Integer[] integerArray = new Integer[intArray.length];

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

integerArray[i] = intArray[i];

}

ArrayList integerList1 = new ArrayList(Arrays.asList(integerArray));

/*

* 不能写成下面:

* ArrayList integerList2 = (ArrayList)Arrays.asList(integerArray);

* 返回的是List、强转可以通过编译、但是不能正常使用。

*/

for(int i : integerList1){

System.out.print(i);

}

//result: 12345

System.out.println();

}

/**

* 将List集合转换成数组

*/

public static void convetListToArray(){

ArrayList strList = new ArrayList(Arrays.asList(strArray));

String[] strArrayFromList = new String[strList.size()];

strList.toArray(strArrayFromList);

System.out.println(Arrays.toString(strArrayFromList)); //result: [a, b, c, d, e]

/*

* 注意:不能写成这样:String[] strArrayFromList = (String[])strList.toArray(strArrayFromList);会抛出ClassCastException。

* List.toArray()与List.toArray(T[] t)的区别在于:

* List.toArray()返回的是一个Object[]、不能强转成String[]、强转的话可以通过编译、但是不能进行String[]的操作

* 而List.toArray(T[] t)会将list的值转换成T类型的数组。

*/

}

/**

* 将数组转换成Set集合

*/

public static void convertArrayToSet(){

Set set = new HashSet(Arrays.asList(strArray));

//Set具有无序性、所以输出结构不一定是原来数组元素存放顺序

System.out.println(set); //result: [d, e, b, c, a]

}

/**

* 判断某个数组中是否包含一个元素、思路:将数组转换成list使用list的contains方法

*/

public static void isContainObject(){

ArrayList strList = new ArrayList(Arrays.asList(strArray));

System.out.println(strList.contains(“a”)); //result: true

//另一种实现

Arrays.sort(strArray);

if(Arrays.binarySearch(strArray, “c”) >= 0){

System.out.println(true);

}else{

System.out.println(false);

}

}

/**

* 将两个相同类型的数组连接起来

*/

public static void connTwoSameArray(){

int[] intArray2 = new int[]{6, 7, 8, 9, 10};

}

/**

* 将数组中数据排序

*/

public static void sortArray(){

String[] str = {“c”, “a” ,”d” ,”z” };

Arrays.sort(str);

System.out.println(Arrays.toString(str));

//反序、

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

System.out.println(Arrays.toString(str));

}

public static void main(String[] args) {

/*printOriginalArray();

convetArrayToList();

convetListToArray();

isContainObject();

convertArrayToSet();

sortArray();*/

testFillArray();

}

}

【Java数组定义常用方法】相关文章:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137136.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • this.class.getClassLoader()怎么理解?「建议收藏」

    this.class.getClassLoader()怎么理解?「建议收藏」this.class.getClassLoader()怎么理解?java是面向对象语言,面向对象的语言的宗旨就是万事万物皆对象,那么类也是一个对象,类里面的属性和方法也是对象。java里面的所有的类都是Class类的对象,这个this.class是获得这个类相对于Class类的对象。后面的方法是获得这个类对象的加载器。只有Class类才有getClassLoader()方法呀~可以这么想,我们平时讲述某某类,但是我们并没有说这个类怎么和虚拟机打交道,虚拟机怎么识别这个类.总不能全靠字符

    2022年6月1日
  • cdn加速配置_开启cdn加速

    cdn加速配置_开启cdn加速配置方法同上篇文章一样CDN加速配置,阿里云cdn内配置好以后即可剩下把前端服务器nginx内的证书文件上传以及配置写好即可。后端服务器也同上配置证书下载上传服务器配置好nginx即可。如果都配置好以后,不可以访问时,注意查看前端请求接口是否为https方式。如果为http时,检查是否更新服务器成功,如果成功后还不可以正常访问时,前端修改代码如下:vue.config.js内添加下行代码。index.html下添加代码:https:true完毕!…

    2022年8月19日
  • angular面试问题_react基础面试题

    angular面试问题_react基础面试题Angularv8+面试系列Angular面试题汇总1-基本知识Angular面试题汇总2-Component/Service目录Angular中的测试有哪些种,基于哪些测试框架什么是Karma?在Angular中有什么作用?什么是Jasmine?在Angular中有什么用?什么是protractor?单元测试UnitTest什么是Angular中的单元测试?AngularUT的最佳实践测试Service时,有其他依赖如何处理?端到端测试(e2e)Angular中的测试有哪些.

    2022年8月31日
  • 详解linux中rsync的妙用[通俗易懂]

    详解linux中rsync的妙用[通俗易懂]????1.rsync备份服务器软件介绍:Rsync是一款开源的、快速的、多功能的、可实现全量及增长的本地或远程数据同步备份的优秀工具。增量备份:只同步变化的数据细腻些,主要利用了quickcheck算法实现同步原理:1)建立好网络连接2)先进行数据信息对比3)只将变化的数据进行增量备份2.rsync软件作用说明:(1v4cp/scp/rm/ls)本地数据备份:cp[root@backup~]#cp-a/etc/hosts/tmp/hosts_cp[root@backu

    2022年10月13日
  • 超分辨率的数据增强Python(超分辨率重建是什么)

    python在图像超分辨率重建中的应用洪华秀[1];【期刊名称】《计算机产品与流通》【年(卷),期】2019(000)002【摘要】图像超分辨率重建技术是低分辨率图像经过一系列算法处理后转换成高分辨率图像的过程,随着图像数据的应用领域不断延伸,这一技术也逐渐成了图像处理研究热点之一。近几年Python语言在人工智能领域逐渐占领榜首,它的优越性在于强大的第三方数据处理工具的支持。本文在图像超分辨率重…

    2022年4月12日
  • lambda表达式python_Python中的Lambda表达式「建议收藏」

    lambda表达式python_Python中的Lambda表达式「建议收藏」Lambda表达式在python程序中是一种很常见的匿名方法的书写形式,它书写起来非常简单,但是牺牲了可读性。下面来看一下Lambda的简单介绍。语法lambda[parameter_list]:expressionLambda表达式的返回值是一个函数,[parameter_list]是函数的参数,expression是具体的操作。它对应的非匿名方法的书写方式为:deffunction([par…

    2022年10月17日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号