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数组定义常用方法】相关文章:

java数组的声明_Java数组定义常用方法相关推荐

  1. java合法的数组声明_Java数组详解

    Java数组详解 数组详解 1.数组概述 数组是相同类型数据的有序集合 每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们 2.数组声明和创建 ①数组声明形式 dataType[] a ...

  2. java数组设置结束_Java 数组最佳指南,快收藏让它吃灰

    两年前,我甚至写过一篇文章,吐槽数组在 Java 中挺鸡肋的,因为有 List 谁用数组啊,现在想想那时候的自己好幼稚,好可笑.因为我只看到了表面现象,实际上呢,List 的内部仍然是通过数组实现的, ...

  3. java获取数组的最小值_Java 数组获取最大和最小值的实例实现

    以下实例演示了如何通过 Collections 类的 Collections.max() 和 Collections.min() 方法来查找数组中的最大和最小值: Main.java 文件: impo ...

  4. 声明为指针,定义为数组,声明为数组,定义为指针

    之前写发的那篇指针和数组的文章,有网友评论觉得不是很舒服,我自己看了,觉得很不满意.所以想再写写,尽量把这个东西讲清楚. #定义为数组,声明为指针 1.c中 #include "stdio. ...

  5. java数组的用法_Java数组的使用

    一.数组的动态初始化 1.声明 数据类型[] 数组名;或 数据类型 数组名[]; 2.开辟空间 数组名 = new 数据类型[长度];//长度必不可少 3.手动赋值 数组名[下标] = 值; 4.使用 ...

  6. js 数组 改变长度_Java数组,什么是Java数组?Java数组学习

    人的生命,似洪水奔流,不遇着岛屿和暗礁,难以激起美丽的浪花. 简介 数组是相同类型数据的有序集合 比如:[1,2,3] ['a','b','c'] 数组描述的是相同类型的若干个数据,按照一定的先后顺序 ...

  7. java数组末尾添加元素_java数组添加元素,java数组如何添加一个元素

    java数组如何添加元素 向数组里添加一个元素怎么添加,这儿总结有三种方法: 1.一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度. 但有个可以改变大小的数组为ArrayLis ...

  8. java一维数组插入元素_Java 数组 之 一维数组 追加 元素

    /** 数组分类 1. 一维数组 1.1 一维数组的定义和初始化 1.2 对一维数组的操作, 遍历,添加,插入,修改,删除,排序,查找 2. 二维数组 2.1 二维数组的定义和初始化 2.2 二维数组 ...

  9. java的数组查找算法_java数组、排序算法、查找算法详解

    1.为什么定义数组要采用type[] arrayName;这种方式? 因为这种方式具有很好的可读性,使用这种方式很容易就可以理解这是定义一个变量,其中变量名是arrayName,变量的类型是type[ ...

最新文章

  1. spring cloud互联网分布式微服务云平台规划分析--服务统一配置中心
  2. 红书《题目与解读》第一章 数学 题解《ACM国际大学生程序设计竞赛题目与解读》
  3. 关于“航天•轻舟机器人国赛技术交流会”邀请函
  4. PMCAFF | 产品经理的招聘要求调研分析
  5. 基于netty访问WebSocket(java的websocket客户端)(访问远程ws协议)
  6. 编译安装sqlite-3.6.20【原创】
  7. memcached php 测试,php一致性hash性能测试(flexihash/memcache/memcached)
  8. php redis 集群 长连接池,php如何实现redis连接池
  9. NLP基础—2.文本预处理
  10. 几纳米间风云:手机摄影的制高点争夺战
  11. Xcode 之真机调试
  12. 题目 1842: 对局匹配
  13. 让HTML播放器使用指定ua,chimee-mobile-player
  14. Windows10开机自动登录账号,设置指定账户自动登录系统
  15. uiautomatorviewer详解
  16. 微信网页程序开发,如何解决后退时重复登录的问题
  17. centos dns 修改配置
  18. 中国工业级过氧化氢市场深度研究分析报告
  19. python爬虫学习笔记(三)——淘宝商品比价实战(爬取成功)
  20. Delphi下的MPS

热门文章

  1. js 向下取整,向上取整,四舍五入
  2. 国家公务员考试时间确定,你准备好了吗?
  3. HashMap遍历所有的key和value
  4. 末日边境_边境巡逻队使用面部识别技术扫描了超过1600万名传单,并抓获了7名冒名顶替者
  5. 最新iOS面试题:如何优化 App 的的包大小?(③系列更新)
  6. for..of的用法
  7. python timedelta 格式化_格式化python timedelta对象
  8. 精选“数据分析”好问题汇总·第三期
  9. APP拉新渠道到底该如何找
  10. app自动化之前置处理—欢迎页面划屏