首页 > 其他分享 >数组的关键点

数组的关键点

时间:2023-08-10 19:57:06浏览次数:32  
标签:nums int System 数组 println new 关键点

数组的定义

  • 数组是相同类型数据的有序集合

  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。

  • 其中,每一个数据称作一个数组元素,每一个数组元素可以通过一个下标来访问它们

数组声明创建

  • 首先必须声明数组变量,才能在程存中使用数组。下面是声明数组变量的语法:

dataType[] arrayRefVar; //首选的方法

dataTyp arraRefVar[];//效果相同,但不是首选方法  

Java语言使用new操作符合来创建数组,语法如下:

dataType[] arraRefVar = new dataType[arraySize];
  • 数组的元素是通过索引访问的,数组索引从0开始。

  • 获取数组长度:

  • arrays.length
    package array;

    public class ArrayDemo01 {
       //变量的类型 变量的名字 = 变量的值;
       //数组类型
       public static void main(String[] args) {
           int[] nums; //1,定义
           //int nums2[]; 这是另一种常用方法
           nums = new int[10];//这里面可以存放10个int类型的数字>创建一个数组
           //3.给数组元素中赋值
          // int[]nums2 =new int[19]
           nums[0] = 1;
           nums[1] = 2;
           nums[2] = 3;
           nums[3] = 4;
           nums[4] = 5;
           nums[5] = 6;
           nums[6] = 7;
           nums[7] = 8;
           nums[8] = 9;
           nums[9] = 10;
           
           //计算所有元素的和
           int sum = 0;
           //获取数组长度:arrays.length
           for (int i = 0; i < nums.length; i++) {
               sum = sum + nums[i];
          }
           System.out.println("总和为:"+sum);
           
      }
    }

内存分析

  • java内存分析:

    1. 堆:1.存放new的对象和数组 2.可以被所有的线程共享,不会存放别的对象引用

    2. 栈:1.存放基本变量类型(会包含这个基本类型的具体数值)2.引用对象的变量(会存放这个引用在堆里面的具体地址)

    1. 方法区:1.可以被所有的线程共享 2.包含了所有的class和static变量

三种初始化

  • 静态初始化

int[] a = {1,2,3};
Man[] mans = {new Man(1,1),new Man(2,2)};
  • 动态初始化

    int[] a = new int[2];
    a[0]=1;
    a[1]=2;
    a[2]=3;
  • 数组的默认初始化

  • 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式初始化。

package array;

import java.util.jar.Manifest;

public class ArrayDemo02 {
   public static void main(String[] args) {

       //静态初始化:创建 +赋值
       int[] a = {1,2,3,4,5,6,7,8};
       a[0]=1;
       a[1]=2;
       a[2]=3;
       a[3]=4;
       a[4]=5;
       a[5]=6;
       a[6]=7;
       a[7]=8;
      // Man[] mans = {new Man(),new Man()};
       System.out.println(a[0]);
       //动态初始化:包含默认初始化
       int[] b = new int[10];
       b[0] = 10;
       b[1] = 1;
       System.out.println(b[0]);
       System.out.println(b[1]);
       System.out.println(b[2]);
       System.out.println(b[3]);
  }
}

数组的四个基本特点

  • 其长度是确定的。数据一旦被创建,它的大小就是不可以改变的。

  • 其元素必须是想同类型,不允许出现混合类型。

  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型。

  • 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。

  • 数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其它对象类型,数组对象本身是在堆中的。

数组边界

  • 下标合法区间:[0,length-1],如果越界就会报错;

package array;

public class ArrayDemo03 {
   public static void main(String[] args) {
       int[] a =new int[2];
       System.out.println(a[2]);
  }
}
  • ArraylindexOfBoundsException:数组下标越界异常!

  • 小结:

    1. 数组是相同数据类型(数据类型可以为任意类型)的有序集合

    2. 数组也是对象。数组元素相当于对象的成员变量

    3. 数组长度的确定的,不可变的,如果越界,则报:ArraylndexOutofBounds

package array;

public class ArrayDemo03 {
   public static void main(String[] args) {
      //静态初始值: 创建 + 赋值
       int[] a = {1,2,3,4,5,6,7,8};
       System.out.println(a[0]);

       for (int i = 0; i <=a.length; i++) {
           System.out.println(a[i]);  
      }
  }
}
 

标签:nums,int,System,数组,println,new,关键点
From: https://www.cnblogs.com/yzk5/p/17621363.html

相关文章

  • 后缀数组C++详解
    后缀定义“后缀i”代表以第i个字符开头的后缀,存储是用i代表字符串s的后缀s[i...n]后缀数组是什么?后缀数组(SuffixArray)主要关系到两个数组:sa和rk。其中,sa[i]表示将所有后缀排序后第i小的后缀的编号,也是所说的后缀数组,后文也称编号数组sa;rk[i]表示后缀i的排名,是重要......
  • day02 - 数组
    977. 有序数组的平方//双指针classSolution{public:vector<int>sortedSquares(vector<int>&nums){inti=0;intj=nums.size()-1;intk=j;vector<int>result(nums.size(),0);for(;i<=......
  • LeetCode从算法到算命—1749.任意子数组和的绝对值的最大值
    1749.任意子数组和的绝对值的最大值题目信息给你一个整数数组nums。一个子数组[numsl,numsl+1,...,numsr-1,numsr]的和的绝对值为abs(numsl+numsl+1+...+numsr-1+numsr)。请你找出nums中和的绝对值最大的任意子数组(可能为空),并返回该最大值。abs(x)......
  • ACCESS 分享一个使用数组来批量操作控件属性的技巧
    原代码如下:PrivateSubComSave_Click()'保存按钮IfComSave.Caption="编辑(自动保存)"ThenMe.Text160.Locked=FalseMe.Text138.Locked=FalseMe.FM入库单.Form.数量.Locked=FalseMe.FM入库单.Form.单价.Locked=False......
  • 使数组和小于等于 x 的最少时间
    给你两个长度相等下标从0开始的整数数组nums1和nums2。每一秒,对于所有下标0<=i<nums1.length,nums1[i]的值都增加nums2[i]。操作完成后,你可以进行如下操作:选择任一满足0<=i<nums1.length的下标i,并使nums1[i]=0。同时给你一个整数x。请你返回使num......
  • php如何定义多维数组以某个字符去输出对应的值
    $arr=[['id'=>123,'test'=>['id'=>2,'title'=>"测试",'test3'=>['list'=>123]]]];$field="test.test3.list";foreach($ar......
  • 2018牛客多校第五场 F take[树状数组]
    理解题目画了一个二叉树,然后思维定势让我想构建一个有n层的二叉树,然后统计叶子节点。。有点恐怖。但是正解是考虑每一个箱子对答案的贡献。图片来自take_baymax520的博客对于每个箱子,它要发生交换也就是为答案贡献的条件是它当前宝石大小小于它的大小。对于比它小的宝石之前取......
  • 树状数组
    初步感受已知\(a_i\),求\(\sum_{i=1}^7a_i\)。暴力:\(ans=a_1+a_2+a_3+a_4+a_5+a_6+a_7\)时间复杂度:\(O(n)\)树状数组:已知\(A=\sum_{i=1}^4a_i\),\(B=\sum_{i=5}^6a_i\),\(C=\sum_{i=7}^7a_i\),则\(ans=A+B+C\)时间复杂度:\(O(\logn)\)这就是树状数组能快速求解信息的......
  • luogu P4200 千山鸟飞绝 题解 【一维数组套平衡树】
    目录题目解题思路code题目题目链接解题思路首先,此题有明显的插入、删除、查找,所以必须要使用平衡树。考虑如何使用平衡树维护每个鸟的状态。发现很不方便,因为鸟的位置改变,整个平衡树的值都要修改。考虑针对每个节点开一颗平衡树,这样就有\(3e4\times3e4\)棵树。这显然太多了......
  • TypeScript中使用数组的filter方法
    constarr:string[]=['pom','皮蛋编程','非常厉害','太棒了'];constfilteredArr:string[]=arr.filter((str:string)=>{returnstr.includes('编程');});console.log(filteredArr);//["皮蛋编程"] ar......