Array数组

    /*** 1.数组的概念* 1.数组(array),就是多个相同类型的数据按一定顺序排列的集合,并使用一个名字命名,然后用编号区分这些数据。* 2.数组就是一个数据容器,* 2.相关概念:* 1.数组名* 2.下标(或脚标、索引)(index):数组每一个元素的标签,帮助程序员找到数组中数据的位置。* 3.元素(element):存的数据* 4.数组的长度(length)* 3.数组的特点:* 1.数字的长度一旦确定就不能修改(重要)* 2.存储的元素为相同的数据类型,可以是基本数据或引用数据类型* 3.有索引,创建数组时会在内存中开辟一整块连续的空间* 4.存取元素的速度快,因为可以通过[下标],直接定位到任意一个元素* <p>* 容器类型的知识点* 1.如何创建容器* 2.CRUD(增删改查)四类功能* 3.遍历容器:一个一个的把容器的元素取出* /

一维数组

/* <p>* 一维数组(由点链接起来的线)* 样式举例:一包烟* 伪代码: 蓝楼[] 一包楼楼 = new 蓝楼[20];* <p>* 如何创建容器(初始化一维数组)* 创建数组的格式:* 数据类型[] 数组名; 举例:int [] arr --> 重点* <p>* 初始化:* 数据类型 数组名 []; 举例:int arr []* 动态初始化:* 数据类型 [] 数组名 = new 数据类型[容量];* 格式解释:* 数据类型:数组中元素的数据类型* []:代表就是一维数组* 数组名:取名字和变量的规则一样 数组名帮助程序员找到内存中的数组* = :赋值运算符* new:创建对象,new是在内存中开辟空间* 数据类型:和等号左边的要一致;含义一样* 容量:是一个int值(可以给常量,也可以给变量),约束数组中的元素个数* 举例:* int [] arr = new int [10];* 创建一个int类型的数组,数组中元素的数据类型是int,数组的长度是10,元素最大个数也是10;* String [] strs = new String[5];* 静态初始化:* 完整格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3.....};* 简化格式:数据类型[] 数组名 = {元素1,元素2,元素3.....}//底层还是new,只是这里省略了* <p>* 直接输出数组名,看不到数组中的元素,看到的是数组在内存中的地址;* [I@1b6d3586  :* [:一个中括号代表是一维数组* I:存储的元素类型是int** @:没意思分隔符 1b6d3586:十六进制的数,此数表示是数组在内存中16进制的地址位置* 每创建一个新的数组,会开辟一个新的空间,具备新的地址值* 动态初始化和静态初始化的区别:* 1.格式不同* 动态初始化:数据类型 [] 数组名 = new 数据类型[容量];* 静态初始化:数据类型[] 数组名 = {元素1,元素2,元素3.....}* <p>* 2.原理不同:* 动态初始化由程序员指定数组中元素的个数(数组的容量),计算机会根据数组元素的数据类型给与默认值* 静态初始化由程序员指定数组中每一个元素具体的值,由计算机自动计算数组的长度* 动态初始化数组的默认值:* 整数类型(byte,short,int,long):0* 小数型(float,double):0.0* 字符类型(char)unicode -> '\u0000' -> '' 空字符* 布尔类型(boolean):false* <p>* 所有的引用数据类型(String,Scanner,Random.....):null* <p>* 数组的增删改查四类操作* 遍历数组*/public static void main(String[] args) {/*动态初始化:数据类型 [] 数组名 = new 数据类型[容量];*///创建一个存储元素类型是int的长度是5的数组int[] arr = new int[5];//[I@1b6d3586System.out.println(arr.hashCode());//十进制地址System.out.println("arr = " + arr);// [I@4554617cint[] arr1 = new int[5];System.out.println("arr1 = " + arr1);System.out.println("-----------------------------");//静态初始化//简化格式:数据类型[] 数组名 = {元素1,元素2,元素3.....}int[] a = {7, 5, 3, 2, 9};//gc:垃圾回收机制System.out.println("a = " + a);//a = [I@74a14482System.out.println("-----------------------------------");//bytebyte [] bys =new byte[2];System.out.println("bys = " + bys);//地址值//如何获取数组中元素:数组名[索引]System.out.println(bys[0]);System.out.println(bys[1]);System.out.println("----------------------------------");short [] shorts=new short[2];System.out.println("shorts = " + shorts);System.out.println(shorts[0]);System.out.println(shorts[1]);System.out.println("----------------------------------");//intint [] arr3=new int[2];System.out.println("arr3 = " + arr3);System.out.println(arr3[0]);System.out.println(arr3[1]);System.out.println("----------------------------------");//longlong [] lg=new long[2];System.out.println("lg = " + lg);System.out.println(lg[0]);System.out.println(lg[1]);System.out.println("----------------------------------");//floatfloat [] fs=new float[2];System.out.println("fs = " + fs);System.out.println(fs[0]);System.out.println(fs[1]);System.out.println("----------------------------------");//doubledouble [] db=new double[2];System.out.println("db = " + db);System.out.println(db[0]);System.out.println(db[1]);System.out.println("----------------------------------");//charchar [] ch=new char[2];System.out.println("ch = " + ch);System.out.println(ch[0]);System.out.println(ch[1]);System.out.println("----------------------------------");//booleanboolean [] bl=new boolean[2];System.out.println("bl = " + bl);System.out.println(bl[0]);System.out.println(bl[1]);System.out.println("----------------------------------");//应用数据类型String [] s=new String[2];System.out.println("s = " + s);System.out.println(s[0]);System.out.println(s[1]);Random [] rs=new Random[2];System.out.println("rs = " + rs);System.out.println(rs[0]);System.out.println(rs[1]);}

增删改查

public class two {/*** 增删改查* 因为数组一旦被定义长度不能发生改变所以数组没有增删的功能。* 改:修改指定索引位置的元素值* 数组名[索引] = 值;* <p>* 查:查指定索引位置的元素具体值* 查元素具体值:数组名[索引]* 查数组的长度:数组名.length --> 数组的长度属性!!*/public static void main(String[] args) {//静态初始化int[] arr = {1, 2, 3, 4, 5};//数组的长度是5 最大索引数 4//查元素int num = arr[0];System.out.println("num = " + num);System.out.println(arr[2]);//3System.out.println(arr[4]);//5System.out.println("----------------------------");//查数组的长度System.out.println(arr.length);//5System.out.println("----------------------------");//修改元素 数组名[索引]=值;System.out.println(arr[1]);arr[1]=8;System.out.println(arr[1]);System.out.println("----------------------------");System.out.println(arr[3]);arr[3]=10;System.out.println(arr[3]);}
}

遍历数组

public class three {/*** 遍历数组*/public static void main(String[] args) {//有数组int [] arr={1,2,3,4,5};System.out.println("arr = " + arr);//地址System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);System.out.println(arr[3]);System.out.println(arr[4]);System.out.println("------------------------");//获取0~4中间的所有数for (int i = 0; i < 5; i++) {System.out.println(arr[i]);}System.out.println("------------------------");System.out.println(arr.length);//5//快捷遍历数组的方法 数组名.fori 数组名.forrfor (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}for (int i = arr.length - 1; i >= 0; i--) {System.out.println(arr[i]);}}
}

案例

public class four {/*** 数组元素求和* 求和变量* 1.获取数组中所有的数 数组的遍历* 2.做累加*/public static void main(String[] args) {//创建一个数组int [] arr={1,2,3,4,5};int sum=0;for (int i = 0; i < arr.length; i++) {sum+= arr[i];}System.out.println("sum = " + sum);}
}

案例

/*** 数组的最值*/
public class five {public static void main(String[] args) {//数组int [] arr = {5,100,80,10000,2000};//定义一个参照物 参照物是数组中的第一个元素int max = arr[0];//循环比较for (int i = 1; i < arr.length; i++) {//比较代码if(arr[i]>max){//替换max=arr[i];}}System.out.println("max = " + max);}
}

格式化遍历数组

import java.lang.reflect.Array;
import java.util.Arrays;/**1. [1,2,3,4,5]*/
public class six {public static void main(String[] args) {//定义数组int [] arr={1,2,3,4,5};//先打印左中扩不换行System.out.print("[");//遍历数组for (int i = 0; i < arr.length; i++) {//判断是否最后一个元素if(i==arr.length-1){//是最后一个元素System.out.println(arr[i]+"]");}else{System.out.print(arr[i]+", ");}}System.out.println(Arrays.toString(arr));}
}

JAVA 内存分配

为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
重要的:
栈内存
1.有局部变量的(定义在方法内的变量)
2.展示程序执行的流程(进栈出栈)
3.执行特点:先进后出(子弹的弹夹)
4.栈内存中的元素使用完毕立即回收(每一次程序执行完毕,栈内存中是没有任何数据的)
堆内存
1.存对象(存new出来的东西,只要new就是堆内存中开辟空间)
2.堆内存中的数据是有默认值的(请参考动态初始化数组元素默认值)
3.成员变量是存储在堆内存中
局部变量:方法内
成员变量:方法外
4.堆内存中的数据使用完毕不是立即回收,等垃圾回收机制空闲的时候回收
5.堆中new出来的元素都有地址值
方法区
1.存放字节码对象(class),字节码对象中封装着这个类中的方法,成员变量
2.常量池(jdk7放在堆内存中)

package classroom;public class ArrayDemo3 {public static void main(String[] args) {int[] arr={1,2,3};System.out.println("arr = " + arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);arr[1]=11;System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);int [] arr2={4,5,6};System.out.println("arr2 = " + arr2);for (int i = 0; i < arr2.length; i++) {System.out.println(arr2[i]);}}
}

package classroom;public class ArrayDemo4 {public static void main(String[] args) {int [] arr={1,2,3};for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}System.out.println("--------------------");int [] arr2=arr;System.out.println(arr2);for (int i = 0; i < arr2.length; i++) {System.out.println(arr2[i]);}}
}

操作数组的两个小问题

JavaArray数组 day_07 20221/7/24相关推荐

  1. matlab 多维数组储存,多维数组 - MATLAB 系统中文帮助手册

    MATLAB中的多元数组MATLAB是下标多于两个的数组.可以调用带有两个以上变元的zeros, ones, rand, 或randn函数来产生.例如, R = randn(3,4,5); 生成一个3 ...

  2. 【C 语言】数组 ( 多维数组本质 | n 维数组名称本质 是 n-1 级数组指针 )

    文章目录 总结 一.多维数组本质 二.完整代码示例 总结 n 维数组名称本质 是 n-1 级数组指针 一.多维数组本质 给定多维数组 : // 声明一个多维数组int array[2][3]; 打印二 ...

  3. java数组二分查找_java 13-1 数组高级二分查找

    查找: 1.基本查找:数组元素无序(从头找到尾) 2.二分查找(折半查找):数组元素有序 pS:数组的元素必须有顺序,从小到大或者从大到小.以下的分析是从小到大的数组 二分查找分析: A:先对数组进行 ...

  4. java数组可扩展_[转载]Java数组扩容算法及Java对它的应用

    Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arr ...

  5. python的数组属性_[Python]numpy use array属性,pythonnumpy,使用,数组

    numpy数组属性 目录 首先生成个数组 import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(a) 结果输出: array([[1, 2, ...

  6. numpy如何直接在数组上进行添加_NumPy 论文登上了 Nature!

    ? "Python猫" ,一个值得加星标的公众号 剧照 | <小妇人> 机器之心报道 编辑:魔王.杜伟.小舟 NumPy 团队撰写了一篇综述文章,介绍 NumPy 的发 ...

  7. C/C++数组指针和指针数组

    数组指针和指针数组的区别 指针数组:首先它是一个数组,每一个元素都是一个指针. 数组指针:首先它是一个指针,它指向一个数组.它是"指向数组的指针"的简称. 运算符的优先级关系:() ...

  8. Java中数组在内存中的存放原理?

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyong0717/article/details/79165685 Java中数组被实现为对象 ...

  9. 三位数组的轴python_关于numpy数组轴的使用详解

    概述 按照图一中aixs=0,对aixs=0上下对应的数据进行相加在学习numpy的时候,最难理解的就是轴的概念,我们知道坐标系中有轴的概念,那么两个轴是否有关联呢?为了便于理解,特写此博客进行梳理. ...

最新文章

  1. SAP MM 并非奇怪现象之MB5B报表查不到某一笔出库记录?
  2. Pthread:POSIX Threads Programming
  3. Python 循环拼接字符串_详解Python拼接字符串的七种方式
  4. Web前端开发必备:《Jquery实战》第3版 介绍
  5. 关于windows10设置环境变量的问题
  6. SAP云平台CloudFoundry环境hdb build成功的日志分析
  7. android /data/system/dropbox,Android导出dropbox日志
  8. 回溯法2——和尚挑水
  9. Visual Basic 6.0(VB6.0)最详细安装教程
  10. vim 自动格式化代码快捷键
  11. PCIE标准共享,以及其机械尺寸图
  12. 主流编程语言的介绍及特点
  13. java 将对象置空_Java 中将对象引用置 null 的作用?
  14. 帖子—评论的数据库设计和代码实现(思路记录)
  15. ugui 转轮_Unity3D的FingerGesture插件
  16. Python笔记17-Dma指标算法
  17. 数据库操作的异常Cannot perform this operation because the connection pool has been close
  18. C语言中文件包含#include使用尖括号和双引号的区别
  19. 大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之2.HDFS分布式文件系统
  20. 【华为OD机试真题2023 JAVA】不含101的数

热门文章

  1. android设置雷达网各层颜色,GitHub - androidTH/RadarChart: 支持自由定制外观、手势旋转的雷达图表 android radarchart...
  2. itextpdf给pdf添加水印
  3. 微信分享源码PHP版JS-SDK接口_php h5微信分享 JSSDK
  4. 【Java面经】阿里三面被挂、幸获内推,历经5轮终于拿到口碑offer
  5. 数模算法-网格算法和穷举法
  6. FPGA时序约束理论篇之IO约束
  7. 【 定义一个长方形Rect类再派生出长方体类Cub】
  8. MedNeRF:用于从单个X射线重建3D感知CT投影的医学神经辐射场
  9. CSS3实现发光按钮效果动画
  10. 腾讯企业邮箱要实名认证吗?