04、数组与Arrays工具类
前言
去年四月份大一下半学期正式开始学习Java,一路从java基础、数据库、jdbc、javaweb、ssm以及Springboot,其中也学习了一段时间数据结构。
在javaweb期间做了图书商城项目、ssm阶段做了权限管理项目,springboot学了之后手痒去b站看视频做了个个人博客项目(已部署到服务器,正在备案中)。期间也不断进行做笔记,总结,但是越学到后面越感觉有点虚,觉得自己基础还有欠缺。
之后一段时间我会重新回顾java基础、学习一些设计模式,学习多线程并发之类,以及接触一些jvm的相关知识,越学到后面越会感觉到基础的重要性,之后也会以博客形式输出学习的内容。
现在整理的java知识基础点是在之前学习尚硅谷java课程的笔记基础之上加工汇总,部分图片会引用尚硅谷或网络上搜集或自己画,在重新回顾的过程中也在不断进行查漏补缺,尽可能将之前困惑的点都解决,让自己更上一层楼吧。
博客目录索引:博客目录索引(持续更新)
一、一维数组
基本认识
数组是引用类型,其内容可以是基本数据类型也可以是引用数据类型
声明数组:int[] ids;
(内容为基本类型) String[] ids;
(内容为引用类型)
- 其中[]位置也可以不同,
int[] ids
与int ids[]
都是允许的
初始化方式:
- 静态初始化:
int[] ids = new []{1,2,3,4};
或ids = {1,2,3,4};
(类型推断)。简单来说就是直接赋予数组指定的值。 - 动态初始化:
String[] ids = new String[5];
简单来说就是预留好指定类型的内存空间,之后可以进行赋值。
索引位置:在数组中是从0开始进行索引的
int[] ids1 = {1,2,3};
System.out.println(ids1[0]);//1
数组长度:可以使用数组名.length
获取数组的长度
//静态初始化的数组按照其中静态初始化的个数计算
int[] ids1 = new int[]{1,2,3};
System.out.println(ids1.length);//3
//动态初始化的数组按照开辟的内存空间计算
int[] ids2 = new int[5];
System.out.println(ids2.length);//5
默认初始化数组说明:例如int[] ids = new int[5];
基本数据类型(数组元素)
整型:0
浮点型:0.0
char型:0或'\u0000' ,注意0不是'0' 。其中'\u0000' ,输出时看起来是一个空格,实际上是一个unicode字符
char[] c = new char[5];
for (char c1:c){
System.out.print("1"+c1);
}//结果为:1 1 1 1 1
boolean:false
引用数据类型:null
内存空间
我们拿一个数组举例,如:int[] ids = new int[]{1,2,,3,4};
其中new出来的数组内容会放在堆中,并且会分配一个内存地址。接着在栈中存放局部变量ids,并且给这个变量ids的值设置为堆中的内存地址,如下图:
生存周期说明:当作用域结束时,例如main方法结束时,会先从栈中依次退出,然后堆中的内存空间进行释放。
实际案例
int[] ids = new int[]{1,2,3,4};
System.out.println(ids);//[I@677327b6
就是一个内存空间地址,若是访问其中的元素通过访问其数组下标得到,例如ids[0]
获取值为1。
二、二维数组
基本认识
二维数组:一个一维数组中的每个位置又包含了一个一维数组。
从数组底层的运行机制来看,实际上没有多维数组
声明二维数组:int[][] ids
或 int[] ids[]
或 int ids[][]
初始化方式:
- 静态初始化:
int[][] ids=new int[][]{{1,2,3},{4,2},{6,7,8}};
或int[][] ids={{1,2,3},{4,2},{6,7,8}}
- 动态初始化:
String[][] arr = new String[3][2];
或int[][] ids = new int[3][];
初始值:二维数组的初始值跟初始化也有点相关,见下面例子:
//动态初始化 第二个框明确开辟空间的话 就会开辟空间并设置默认值为0 其他基本类型默认赋值与之前一维数组值一样
int[][] ids = new int[4][4];
System.out.println(ids);//[[I@677327b6
System.out.println(ids[0]);//[I@14ae5a5
System.out.println(ids[0][0]);//0
//注意这里第二框没有具体数字,此时java只会开辟前面的一维数组,后面的因不确定个数就不会给你开辟
int[][] ids = new int[3][];
System.out.println(ids);//[[I@677327b6
System.out.println(ids[0]);//null
System.out.println(ids[0][0]);//报错空指针,Exception in thread "main" java.lang.NullPointerException
获取行列数:开辟多少空间就有多少个,就算其中一组一维数组有null还是包含在呢
int[][] ids = new int[3][4];
//求二维数组中x组一维数组
System.out.println(ids.length);//3
//求二维数组中第1组一维数组有多大长度
System.out.println(ids[0].length);//4
三、工具类Arrays
Arrays是java.util包下的一个操作数组的工具类,包含了用来操作数组(如排序与搜索)的各种方法。
列举几个常用的方法:
boolean equals(int[] a,int[] b)
:判断两个数组是否相等String toString(int[] a)
:字符串形式输出数组信息void fill(int[] a,int val)
:将指定值填充到数组中void sort(int[] a)
:对数组进行升序排序int binarySearch(int[] a,int key)
:对排序后的数组进行二分法检索指定的值
我是长路,感谢你的阅读,如有问题请指出,我会听取建议并进行修正。
欢迎关注我的公众号:长路Java,其中会包含软件安装等其他一些资料,包含一些视频教程以及学习路径分享。
学习讨论qq群:891507813 我们可以一起探讨学习
注明:转载可,需要附带上文章链接
04、数组与Arrays工具类的更多相关文章
- java中的数组的Arrays工具类的使用
package day04.d1.shuzu; import java.util.Arrays; /** * Arrays 工具类 * @author Administrator * */public ...
- 二维数组及Arrays工具类
1.二维数组 概念: 数组中的每一个元素类型都是一维数组 二维数组初始化方式: 静态初始化: 格式: 元素类型[][] 数组名 = new 元素类型[][]{{一维数组1},{一维数组2},{一维数组 ...
- 浅谈集合框架六——集合扩展:Arrays工具类、集合与数组相互转换方式;
最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出.初学者对于本篇博客只建议作为参考,欢迎留言共同学习. 之前有介绍集合框架的体系 ...
- Java程序员的日常—— Arrays工具类的使用
这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...
- java 13-2 Arrays工具类
1.Arrays:针对数组进行操作的工具类.比如说排序和查找. 1:public static String toString(int[] a) 把数组转成字符串 2:public static v ...
- Java基础知识强化之集合框架笔记33:Arrays工具类中asList()方法的使用
1. Arrays工具类中asList()方法的使用 public static <T> List<T> asList(T... a): 把数组转成集合 注意事项: 虽然可以把 ...
- Java基础知识强化63:Arrays工具类之方法源码解析
1. Arrays工具类的sort方法: public static void sort(int[] a): 底层是快速排序,知道就可以了,用空看. 2. Arrays工具类的toString方法底层 ...
- Java基础知识强化62:Arrays工具类之概述和使用
1. Arrays工具类: Arrays这个类包含操作数组(比如排序和查找)的各种方法. 2. Arrays的方法: (1)toString方法:把数组转成字符串 public static Stri ...
- 在Java中Arrays工具类实现功能的六种方法
使用Arrays工具类,要先导入包即:import.java.util.Arrays 以下是实现六种功能的方法: 1.比较两个数组值是否相等: 结果为true.false.(布尔型不能比较) int ...
随机推荐
- Java 操作 HBase 教程
Java 操作 HBase 教程 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 相关博文原文地址: 博客园:美码师:HBase(2) Java 操作 HBase ...
- Mysql数据库版本高低引起的group by问题
低版本的Mysql,group by限制性比较小,在进行group by时,select的对象可包含多个,但是换成高版本5.6以上好像,使用group by 以后,select的对象必须也已经被聚合, ...
- JSP标签使用的代码记录——《%= %》(神奇的CSDN为啥标题不让打英文的尖括号)
关于JSP的一些标签,在用到的时候有些生疏,就去找了找资源重新温习了一下. 附上两个JSP<%= %>标签的博客,同时也记录当前项目里用到的方法. jsp页面中<%@ %>.& ...
- mysql修改最大连接数
root@localhost ~]# nano /etc/my.cnf编辑my.cnf在[mysqld]中加入:set-variable=max_connections=1000 更改 MySQL 在 ...
- H3C交换机端口聚合配置
1.接入交换机: interface Ten-GigabitEthernet1/0/21 port link-mode bridge port link-type trunk port trunk p ...
- IP路由__静态路由
1.静态路由的优缺点: 优点:对于路由器的CPU没有管理性开销,它意味着如果你不使用动态路由选择的话,你可能应该购买更为便宜的路由器.在路由器之间没有带宽占用,它意味着在WAN链接中你可以节省更多的钱 ...
- var_dump和var_export区别
1.var_dump() :获取结构化的数据,按照数组的层级输出 2.var_export() :获取结构化的数据,返回有效的php代码,保留结构化形式的存储数据,数据类型为字符串. 例如: < ...
- Codeforces Round #667 (Div. 3)
比赛链接:https://codeforces.com/contest/1409 A. Yet Another Two Integers Problem 题意 给出两个数 $a$ 和 $b$,有以下两 ...
- 简谈图论重要性&&图论总结
从外地学习回来,我对图论才有认识(以前就没接触过,非常尴尬),说实话,学好图论的重要性,就像学数学时在进行解析几何时,图极有可能是打开答案的最后秘钥,也就是数形结合,而懂的人永远明白,用图解决绝对比用 ...
- tju3243 Blocked Road
There are N seaside villages on X island, numbered from 1 to N. N roads are built to connect all of ...