【Java寒假打卡】Java基础-数组学习笔记

news2025/1/10 21:37:43

【Java寒假打卡】Java基础-数组学习笔记

    • 一、定义
    • 二、定义格式
    • 三、数组动态初始化
    • 四、数组元素访问
    • 五、内存分配
    • 六、多个数组的不同内存图
    • 七、数组的静态初始化
    • 八、数组操作的两个小问题
    • 九、求数组的最大值
    • 十、查找数组的特定值

一、定义

数组是一个容器,存储一种数组类型的多个值

二、定义格式

在这里插入图片描述

  • int [] a;
  • int a[];

三、数组动态初始化

package com.ustc.base.DataFormat;

public class test7 {
    public static void main(String[] args) {
        int[] a = new int[5];// 创建一个int类型的数组容器

        System.out.println(a);// 打印数组地址
        // [I@10f87f48
        // @ 分隔符
        // [ 当前的空间是一个数组类型
        // 当前数组容器所存储的数据类型 int 类型
        // 10f87f48 表示十六进制内存地址

        byte[] bArr = new byte[3];// 创建一个byte数组
        System.out.println(bArr);
    }
}

四、数组元素访问

package com.ustc.base.DataFormat;

public class test7 {
    public static void main(String[] args) {
        int[] a = new int[5];// 创建一个int类型的数组容器

        System.out.println(a);// 打印数组地址
        // [I@10f87f48
        // @ 分隔符
        // [ 当前的空间是一个数组类型
        // 当前数组容器所存储的数据类型 int 类型
        // 10f87f48 表示十六进制内存地址

        // 系统自动分配的默认初始化值
        System.out.println(a[0]);
        System.out.println(a[1]);

        a[0] = 1;
        a[1] = 2;
        a[3] = 3;

        System.out.println(a[0]);
        System.out.println(a[1]);
        System.out.println(a[3]);
    }
}


五、内存分配

  • 栈内存:方法运行时,进入的内存,局部变量都存放于这块内存中
  • 堆内存:new出来的内容都会进入堆内存,并且会存在地址值
  • 方法区:字节码文件class 加载时进入的内存
  • 本地方法栈:调用操作系统相关资源
  • 寄存器:交给cpu去使用

在这里插入图片描述

  • 程序运行 该类的字节码文件加载进入方法区
  • main方法存放在字节码文件中
  • main方法被JVM自动调用 进入栈内存
  • arr数组变量在Main方法中声明
  • 将地址值交付给main方法中的arr变量
  • 通过new关键字在堆内存中开辟空间 并产生地址值 因为new的事长度为3的数组,所以会划分为三个小块,每一个格子有他的索引和默认值
  • 将地址值付给Main方法中的arr变量
  • 数组名相当于地址 所以相当于位置

数组类型的默认值:

在这里插入图片描述

引用数据类型:引用、记录了地址值的变量,所对应的数据类型,就是引用数据类型

多个数组的不同内存图:不同的数组名,在堆中开辟不同的数组地址

在这里插入图片描述

数组内存图:每new一次,在堆内存中都是一块新的空间,堆内存中的空间地址不会出现重复的现象。

六、多个数组的不同内存图

package com.ustc.base.DataFormat;

public class test8 {
    public static void main(String[] args) {
        int[] arr1 = new int[2];
        arr1[0] = 11;
        arr1[1] = 12;

        int[] arr2 = arr1;// 引用数据类型 两个数组名指向相同的内存
        arr2[0] = 33;

        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println("---------------");
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);

    }
}


在这里插入图片描述

七、数组的静态初始化

  • int [] arr = new int[]{1,2,3,4,5}; // 静态初始化 方法一
  • int [] arr = {1,2,3,4,5};// 静态初始化 方法二
package com.ustc.base.DataFormat;

public class test9 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4};
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        
        int[] arr1 = {1,2,3,4,5};
        System.out.println(arr1[2]);
        System.out.println(arr1[3]);
    }
}


两种初始化的区别:

  • 动态初始化:手动指定数组长度,由系统给出默认初始化值
  • 静态初始化:手动指定数组元素,系统会根据元素个数,计算数组的长度

使用场景:

  • 动态初始化:只明确元素个数,不明确具体数值,推荐使用动态初始化
  • 静态初始化:需求中已经明确了要操作的具体数据,直接静态初始化即可

八、数组操作的两个小问题

  • 数组越界问题
  • 空指针异常 null 找不到数组内存地址

九、求数组的最大值

package com.ustc.base.DataFormat;

public class test9 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4};
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);

        int[] arr1 = {1,2,3,4,5};
        System.out.println(arr1[2]);
        System.out.println(arr1[3]);

        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(arr[i] > max)
            {
                max = arr[i];
            }
        }

        System.out.println(max);
    }
}

十、查找数组的特定值

package com.ustc.base.DataFormat;

import java.util.Scanner;

public class test10 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个要查找的数字");
        int num = sc.nextInt();
        
        int arr[] = {1,2,3,4,5};
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == num)
            {
                System.out.println("找到了");
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6 CPP之C风格字符串

CPP之C风格字符串 c中的string类&#xff0c;封装了C风格的字符串。 使用方便&#xff0c;能自动扩展&#xff0c;不用担心内存问题 在某些场景中&#xff0c;C风格字符串更方便&#xff0c;更高效 C标准库、Linux系统和开源库&#xff0c;大部分开源库一定有C语言版本&…

Vue前端浏览器链接/接口参数实现加密

场景 由于项目创建之前后端设计不合理&#xff0c;导致详情页链接参数id为顺序序数(例&#xff1a;1,2,3…等等)&#xff0c;安全系数非常低&#xff08;虽然我们前端做了菜单权限、按钮权限、Api权限等等&#xff09;&#xff0c;现在要前端解决下浏览器链接/接口参数实现加密…

《Linux运维总结:基于xtrabackup8工具全量物理备份Mysql8数据自动化工具(方案一)》

一、背景信息 说明&#xff1a;由于业务系统的特殊性&#xff0c;对数据的备份要求非常高&#xff0c;且数据量非常大&#xff0c;所以这里采用xtrabackup工具来对Mysql数据库进行全量物理备份。由于xtrabackup工具操作复杂&#xff0c;这里为了简便&#xff0c;基于xtrabackup…

张驰咨询:快速提高流程效率的5个关键精益生产工具

精益&#xff0c;又称“精益制造”或“精益生产”&#xff0c;注重通过消除浪费、消除缺陷&#xff0c;实现客户价值最大化。精益工具是关于理解过程&#xff0c;发现浪费&#xff0c;防止错误和记录你所做的事情。 让我们来看看流程改进中使用的五种精益工具&#xff0c;它们…

建立企业数据共享机制,打破数据壁垒

很多人可能也比较疑惑&#xff0c;为什么数据这么重要&#xff0c;能够有着数据治理、数据标准、数据管理以及我们接下来要讲的数据共享&#xff0c;各种针对数据的机制体系。一方面是因为数据在数字经济和数字化转型进程中发挥了巨大作用&#xff0c;甚至可以称得上是两者的核…

RCNN网络源码解读(Ⅰ) --- 获取数据并预处理数据

目录 1.RCNN是什么东西 2.处理数据集 2.1 code&#xff1a;下载VOC数据集&#xff08;pascal_voc.py&#xff09; 2.2 code&#xff1a; 数据集预处理&#xff08;pascal_voc_car.py&#xff09; 3.code区域候选建议&#xff08;selectivesearch.py&#xff09; 1.RCNN是什…

Web(十)JavaScript知识训练-JS函数

1、下列选项中&#xff0c;&#xff08; B&#xff09;可用于检查某个值是否为无穷大的数。 A、 isNaN&#xff08;&#xff09; B、 isFinite&#xff08;&#xff09; C、 parseInt&#xff08;&#xff09; D、 parseFloat&#xff08;&#xff09; 2、函数parseInt(15.36)…

燕东微在科创板上市:市值263亿元,北京电控、亦庄国投等为股东

12月16日&#xff0c;北京燕东微电子股份有限公司&#xff08;下称“燕东微”&#xff0c;SH:688172&#xff09;在上海证券交易所科创板上市。本次在上市&#xff0c;燕东微的发行价为21.98元/股&#xff0c;募资总额约为39.53亿元&#xff0c;募资净额约为37.57亿元&#xff…

【Java寒假打卡】Java基础-方法

【Java寒假打卡】Java基础-方法一、定义二、方法的定义和调用三、方法调用过程四、带参数的方法和调用五、debug查看方法参数传递六、带返回值的方法的调用七、方法重载八、方法传递数据九、返回一个数组的最大值和最小值一、定义 方法就是一段具有独立功能的代码块&#xff0…

Java中的Set系列集合

Set系列集合Set系列集合Set系列集合概述HashSet元素的底层原理&#xff1a;哈希表HashSet元素去重复的底层原理实现类&#xff1a;LinkedHashSet实现类&#xff1a;TreeSetCollection体系的特点、使用场景终结补充知识&#xff1a;可变参数集合工具类CollectionsCollection体系…

Unity PolyNav2D(2D寻路) 插件

下载地址 https://download.csdn.net/download/qq_27461747/87300286 组件 PolyNav2D 寻路地图&#xff0c;一般来说 有且只有一个&#xff0c; 寻路的主要接口就在这个组件里PolyNavObstacle 障碍物PolyNavAgent 导航代理, 带有移动功能。这个可有可无&#xff0c;可以自己…

重点| 系统集成项目管理工程师考前50个知识点(6)

本文章总结了系统集成项目管理工程师考试背记50个知识点&#xff01;&#xff01;&#xff01; 帮助大家更好的复习&#xff0c;希望能对大家有所帮助 比较长&#xff0c;放了部分&#xff0c;需要可私信&#xff01;&#xff01; 40、冲突的下列特点&#xff1a; &#xff…

css知识复习点

四种css使用方式&#xff1a;内嵌式、外链式、行内式、导入式 复合选择器 后代选择器 选择器之间需要用空格隔开&#xff0c;后代不一定是儿子 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>复合…

渗透测试-crlf注入原理

目录 概念 HTTP报文结构与漏洞原理 漏洞检测 Bottle之CRLF漏洞 nginx配置错误之CRLF漏洞 漏洞危害 会话固定 修复建议 漏洞检测POC 概念 这个漏洞一般很少出现。 CRLF是CR和LF两个字符的拼接&#xff0c;它们分别代表”回车换行”&#xff08;\r\n&#xff09;。十六…

[附源码]Nodejs计算机毕业设计基于的学生事务管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Java+mysql基于SSM的网上出差审批与费用报销系统 开题 毕业设计

本课题是一个基于SSM的管理系统,本网上出差审批与费用报销系统是在Windows7系统的环境下,利用Eclipse和Mysql工具开发的。在网上出差审批与费用报销系统中分为管理员和普通用户2个模块。其中网上出差审批与费用报销系统中的管理人员在登陆之后可以管理本系统内的部门信息管理,员…

性能测试场景:如何进行场景设计?

我们在前面屡次强调了场景的重要性,今天终于到了要把实际场景拿出来解析的时候了。 在本篇文章中,为了保证数据的连续性,我用之前的项目资料来作明确地说明。同时为了模糊关键业务信息,以及让场景的描述更通用性,我会把所有的业务名隐去。 根据之前我们所说的,基准性能…

【DevOps实战系列】第六章:详解Docker私服Nexus3篇

个人亲自录制全套DevOps系列实战教程 &#xff1a;手把手教你玩转DevOps全栈技术 概述/目标 私服我们很熟悉了&#xff0c;比如docker hub就是官方私服&#xff0c;而有些情况比如我们自建的镜像&#xff0c;不想往外传&#xff0c;就需要考虑内部搭建一个私有服务器来存放私有…

ELK 日志框架搭建 (springboot 接入 elk)

什么是ELK&#xff1f; ELK 是一个开源的实时日志分析平台&#xff0c;它主要由 Elasticsearch、Logstash 和 Kiabana 三部分组成。 Logstash Logstash 主要用于收集日志&#xff0c;它是一个开源数据收集引擎&#xff0c;具有实时管道功能。Logstash 可以动态地将来自不同数…

《大正野球娘》:棒球少女·棒球1号位

《大正野球娘。》是根据神乐坂淳的人气轻小说「大正棒球少女」及「大正棒球少女&#xff5e;沾满土与尘&#xff5e;」改编的电视动画。原作小说是神乐坂淳原作&#xff0c;小池定路插画的轻小说改德间书店出版&#xff0c;至2009年6月已发行三卷。此外&#xff0c;小说还被改编…