前言

去年四月份大一下半学期正式开始学习Java,一路从java基础、数据库、jdbc、javaweb、ssm以及Springboot,其中也学习了一段时间数据结构。

在javaweb期间做了图书商城项目、ssm阶段做了权限管理项目,springboot学了之后手痒去b站看视频做了个个人博客项目(已部署到服务器,正在备案中)。期间也不断进行做笔记,总结,但是越学到后面越感觉有点虚,觉得自己基础还有欠缺。

之后一段时间我会重新回顾java基础、学习一些设计模式,学习多线程并发之类,以及接触一些jvm的相关知识,越学到后面越会感觉到基础的重要性,之后也会以博客形式输出学习的内容。

现在整理的java知识基础点是在之前学习尚硅谷java课程的笔记基础之上加工汇总,部分图片会引用尚硅谷或网络上搜集或自己画,在重新回顾的过程中也在不断进行查漏补缺,尽可能将之前困惑的点都解决,让自己更上一层楼吧。

博客目录索引博客目录索引(持续更新)


一、一维数组

基本认识

数组是引用类型,其内容可以是基本数据类型也可以是引用数据类型

声明数组int[] ids; (内容为基本类型) String[] ids; (内容为引用类型)

  • 其中[]位置也可以不同,int[] idsint 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[][] idsint[] 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工具类的更多相关文章

  1. java中的数组的Arrays工具类的使用

    package day04.d1.shuzu; import java.util.Arrays; /** * Arrays 工具类 * @author Administrator * */public ...

  2. 二维数组及Arrays工具类

    1.二维数组 概念: 数组中的每一个元素类型都是一维数组 二维数组初始化方式: 静态初始化: 格式: 元素类型[][] 数组名 = new 元素类型[][]{{一维数组1},{一维数组2},{一维数组 ...

  3. 浅谈集合框架六——集合扩展:Arrays工具类、集合与数组相互转换方式;

    最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出.初学者对于本篇博客只建议作为参考,欢迎留言共同学习. 之前有介绍集合框架的体系 ...

  4. Java程序员的日常—— Arrays工具类的使用

    这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...

  5. java 13-2 Arrays工具类

    1.Arrays:针对数组进行操作的工具类.比如说排序和查找. 1:public static String toString(int[] a) 把数组转成字符串  2:public static v ...

  6. Java基础知识强化之集合框架笔记33:Arrays工具类中asList()方法的使用

    1. Arrays工具类中asList()方法的使用 public static <T> List<T> asList(T... a): 把数组转成集合 注意事项: 虽然可以把 ...

  7. Java基础知识强化63:Arrays工具类之方法源码解析

    1. Arrays工具类的sort方法: public static void sort(int[] a): 底层是快速排序,知道就可以了,用空看. 2. Arrays工具类的toString方法底层 ...

  8. Java基础知识强化62:Arrays工具类之概述和使用

    1. Arrays工具类: Arrays这个类包含操作数组(比如排序和查找)的各种方法. 2. Arrays的方法: (1)toString方法:把数组转成字符串 public static Stri ...

  9. 在Java中Arrays工具类实现功能的六种方法

    使用Arrays工具类,要先导入包即:import.java.util.Arrays 以下是实现六种功能的方法: 1.比较两个数组值是否相等: 结果为true.false.(布尔型不能比较) int ...

随机推荐

  1. 函数式编程(__slots__)

    正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: class Student(object): pa ...

  2. Linux常用命令详解(第一章)(ls、man、pwd、cd、mkdir、echo、touch、cp、mv、rm、rmdir、)

    本章命令(共11个): 1 2 3 4 5 6 ls man pwd cd mkdir echo touch cp mv rm rmdir 1. " ls " 作用:列出指定目录下 ...

  3. dedecms织梦网站栏目增加英文名称的方法

    有时候因为网站功能需求,我们需要为织梦程序的栏目添加英文名称,这里有一个栏目添加英文名称的方法,下面站长和大家分享一下.因为客户需要做这样一个需要中英转换的栏目,在网上找了很多方法,但都不适用,终于被 ...

  4. 考研机试练习(KY2-KY10)

    KY2 成绩排序 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 本题知识点: 排序 sort struct 题目描述 查找和排序 题目:输入任意(用户,成绩) ...

  5. linux(4)Linux 文件内容查看

    查看文件内容总览 cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写! nl 显示的时候,顺道输出行号! more 一页一页的显示文件内容 less ...

  6. POJ - 2406 Power Strings (后缀数组DC3版)

    题意:求最小循环节循环的次数. 题解:这个题其实可以直接用kmp去求最小循环节,然后在用总长度除以循环节.但是因为在练后缀数组,所以写的后缀数组版本.用倍增法会超时!!所以改用DC3法.对后缀数组还不 ...

  7. 【uva 10048】Audiophobia(图论--Floyd算法)

    题意:有一个N点M边的无向带权图,边权表示路径上的噪声值.有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值.(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径 ...

  8. python的scrapy框架的使用 和xpath的使用 && scrapy中request和response的函数参数 && parse()函数运行机制

    这篇博客主要是讲一下scrapy框架的使用,对于糗事百科爬取数据并未去专门处理 最后爬取的数据保存为json格式 一.先说一下pyharm怎么去看一些函数在源码中的代码实现 按着ctrl然后点击函数就 ...

  9. 【2020杭电多校】 Lead of Wisdom、The Oculus

    题目链接:Lead of Wisdom 题意:有n个物品,这些物品有k种类型.每种物品有对应的类型ti,其他值ai,bi,ci,di 你可以选择一些物品,但是这些物品要保证它们任意两者之间类型不能相同 ...

  10. hdu5289 Assignment

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission ...