前言

去年四月份大一下半学期正式开始学习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. 统一资源定位符 (URL)

    统一资源标识符(uniform/universal resource identifier,URI)用于表示Internet中的资源(通常是文档).URI 主要用于两种目的,其一是命名资源,尽管此时把 ...

  2. C++ 标准模板库(STL):map

    目录 4. map 4.1 map的定义 4.2 map容器内元素的访问 4.3 map常用函数实例解析 4.4 map的常见用途 4. map map翻译为映射,也是常用的STL容器. 在定义数组时 ...

  3. 深入理解nodejs的HTTP处理流程

    目录 简介 使用nodejs创建HTTP服务 解构request 处理Request Body 处理异常 解构response 简介 我们已经知道如何使用nodejs搭建一个HTTP服务,今天我们会详 ...

  4. 若依管理系统RuoYi-Vue(一):项目启动和菜单创建

    若依管理系统应该是国内最受欢迎的完全开源的后端管理系统了吧,看看gitee上的star数量,着实惊人.若依系统有很多个版本 版本 gitee地址 说明 前后端不分离版本 https://gitee.c ...

  5. git回退版本,再返回最新分支git pull失败的解决经验

    ​ 点击"蓝字"关注我吧 作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:Conscience_Remains 总述     一篇解决gti分支切换问题的文章,大家应该都有过 ...

  6. Codeforces Round #272 (Div. 2) B. Dreamoon and WiFi (暴力二进制枚举)

    题意:给你一个只含\(+\)和\(-\)的字符串,统计它的加减和,然后再给你一个包含\(+,-,?\)的字符串,其中\(?\)可以表示为\(+\)或\(-\),问有多少种情况使得第二个字符串的加减和等 ...

  7. Educational DP Contest G - Longest Path (dp,拓扑排序)

    题意:给你一张DAG,求图中的最长路径. 题解:用拓扑排序一个点一个点的拿掉,然后dp记录步数即可. 代码: int n,m; int a,b; vector<int> v[N]; int ...

  8. Superset 1.0.1发布——稳定版本

    Apache Superset最近发布了1.0.1版本,这也是1.0版本后的有一个重大的版本,Superset也会在以后有更多的改进.那么让我们来看一下最新的新功能吧. 用户体验 通过更简单,更直观的 ...

  9. Win7下安装IIS

    安装IIS 1.控制面板 --> 程序 --> 卸载程序,进入"程序与功能". 2.进入"打开或关闭Window功能". 3.找到"Int ...

  10. Redis 的缓存淘汰机制(Eviction)

    本文从源码层面分析了 redis 的缓存淘汰机制,并在文章末尾描述使用 Java 实现的思路,以供参考. 相关配置 为了适配用作缓存的场景,redis 支持缓存淘汰(eviction)并提供相应的了配 ...