前言

去年四月份大一下半学期正式开始学习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. Java 操作 HBase 教程

    Java 操作 HBase 教程 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 相关博文原文地址: 博客园:美码师:HBase(2) Java 操作 HBase ...

  2. Mysql数据库版本高低引起的group by问题

    低版本的Mysql,group by限制性比较小,在进行group by时,select的对象可包含多个,但是换成高版本5.6以上好像,使用group by 以后,select的对象必须也已经被聚合, ...

  3. JSP标签使用的代码记录——《%= %》(神奇的CSDN为啥标题不让打英文的尖括号)

    关于JSP的一些标签,在用到的时候有些生疏,就去找了找资源重新温习了一下. 附上两个JSP<%= %>标签的博客,同时也记录当前项目里用到的方法. jsp页面中<%@ %>.& ...

  4. mysql修改最大连接数

    root@localhost ~]# nano /etc/my.cnf编辑my.cnf在[mysqld]中加入:set-variable=max_connections=1000 更改 MySQL 在 ...

  5. H3C交换机端口聚合配置

    1.接入交换机: interface Ten-GigabitEthernet1/0/21 port link-mode bridge port link-type trunk port trunk p ...

  6. IP路由__静态路由

    1.静态路由的优缺点: 优点:对于路由器的CPU没有管理性开销,它意味着如果你不使用动态路由选择的话,你可能应该购买更为便宜的路由器.在路由器之间没有带宽占用,它意味着在WAN链接中你可以节省更多的钱 ...

  7. var_dump和var_export区别

    1.var_dump() :获取结构化的数据,按照数组的层级输出 2.var_export() :获取结构化的数据,返回有效的php代码,保留结构化形式的存储数据,数据类型为字符串. 例如: < ...

  8. Codeforces Round #667 (Div. 3)

    比赛链接:https://codeforces.com/contest/1409 A. Yet Another Two Integers Problem 题意 给出两个数 $a$ 和 $b$,有以下两 ...

  9. 简谈图论重要性&&图论总结

    从外地学习回来,我对图论才有认识(以前就没接触过,非常尴尬),说实话,学好图论的重要性,就像学数学时在进行解析几何时,图极有可能是打开答案的最后秘钥,也就是数形结合,而懂的人永远明白,用图解决绝对比用 ...

  10. tju3243 Blocked Road

    There are N seaside villages on X island, numbered from 1 to N. N roads are built to connect all of ...