精华内容
下载资源
问答
  • 实验2.2 数组引用与元素 一、实验目的 本实验的目的是让学生掌握数组属于引用型的一种复合弄数据类型。 二、实验要求 编写一个简单的Java应用程序,该程序在命令行窗口输出数组引用以及元素的值。 三、...

    实验2.2 数组的引用与元素

    一、实验目的

    本实验的目的是让学生掌握数组属于引用型的一种复合弄数据类型。

    二、实验要求

    编写一个简单的Java应用程序,该程序在命令行窗口输出数组的引用以及元素的值。

    三、程序效果示例

    程序运行效果如图2.2所示。

                                                     图2.2 输出数组的引用和元素的值

    四、程序模板

    请按模板要求,将【代码】替换为Java程序代码。

    【InputArray.java】

    public class InputArray {
    	public static void main(String args[]) {
    		int[] a = {100, 200, 300};
    		【代码1】	//输出数组a的长度
    		【代码2】	//输出数组a的引用
    
    		int b[][] = {{1}, {1,1}, {1,2,1}, {1,3,3,1}, {1,4,6,4,1}};
    		【代码3】	//输出二维数组b的一维数组的个数
    		System.out.println(b[4][2]);
    		【代码4】	//将数组a的引用赋给b[4];
    		System.out.println(b[4][2]);
    	}
    }
    

    实验代码:

    public class InputArray {
        public static void main(String args[]) {
            int[] a = {100, 200, 300};
          //输出数组a的长度
            System.out.println("数组a的长度="+a.length);
          //输出数组a的引用
            System.out.println("数组a的位置="+a);
            int b[][] = {{1}, {1,1}, {1,2,1}, {1,3,3,1}, {1,4,6,4,1}};
          //输出二维数组b的一维数组的个数
            System.out.println(b[0].length);
            System.out.println(b[4][2]);
          //将数组a的引用赋给b[4];
            b[4]=a;
            System.out.println(b[4][2]);
        }
    }
    

    实验结果:

    数组a的长度=3

    数组a的位置=[I@1b6d3586

    1

    6

    300

    五、实验后的练习

    (1)在程序的【代码4】之后增加语句“a[3]=200;”,编译是否有错?运行是否有错?

    有错。因为超出了定义的数组长度。

    提示错误为:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

            at OS.InputArray.main(InputArray.java:16)

    (2)在程序的【代码4】之前输出二维数组b的各个一维数组的长度和引用。

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

    1

    [I@4554617c

    2

    [I@74a14482

    3

    [I@1540e19d

    4

    [I@677327b6

    5

    [I@14ae5a5

    (3) 在程序的【代码4】之后输出二维数组b的各个一维数组的长度和引用。

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

    1

    [I@4554617c

    2

    [I@74a14482

    3

    [I@1540e19d

    4

    [I@677327b6

    3

    [I@1b6d3586

    展开全文
  • Java之路:数组引用传递

    万次阅读 多人点赞 2018-12-04 12:08:22
    试想一下,假如数组中有上万个元素,在拷贝数组时,如果将数组a的所有元素都一一拷贝至数组b,时间开销很大,有时候也不是必需的。 所以,在Java语言中, b = a(a和b都是引用名)的含义就是将a起个别名&amp;...

    一、引用

    int[] a = new int[10];
    int[] b;
    b = a;
    

    让数组b直接指向数组a(即b = a;),这样做的目的是为了提高程序运行的效率。

    试想一下,假如数组中有上万个元素,在拷贝数组时,如果将数组a的所有元素都一一拷贝至数组b,时间开销很大,有时候也不是必需的。

    所以,在Java语言中, b = a(a和b都是引用名)的含义就是将a起个别名"b"。

    之后,a和b其实就是指向的是同一个对象。

    在Java中,这种给变量取别名的机制称之为引用(reference)。

    抽象的概念都源于具体的表象。

    一个程序若想运行,必须驻入内存,而在内存中必然有其存储地址,通过这些内存地址,就可以找到我们想的数据。

    这些内存地址通常都很长(具体长度取决于JVM的类型),因为不容易记住,所以就给这些地址取个名称,这就是引用变量,这些引用变量存储在一块名叫 “栈内存” 的区域。

    那么所谓“引用”,就是Java对象在堆内存的地址赋给了多个“栈内存”的变量

    由于Java禁止用户直接操作“堆整型、浮点型、布尔型等基本数据类内存”中对象的地址,所以只能用这些“栈内存”的多个引用名来间接操作它们对应的“堆内存”数据。

    所以,Java中的“引用”更类似于C/C++中的“指针”概念,所不同的是,C/C++中的“指针”可以被用户直接修改,而在Java中对内存的直接修改是被屏蔽的。

    二、数组引用传递

    在Java中,所有对象都是通过引用进行操作的。 而数组也是一种对象。当将数组作为参数传递给方法时,传递的实际上就是该数组对象的引用在方法中对数组的所有操作,都会映射到原数组中,这一点也是Java面向对象的一个重要特点。

    所谓的数组引用传递,就是将一块数组的堆内存空间交由多个栈内存所指向。

    这包括了方法通过参数列表接收数组和方法计算完毕后返回数组等两种情况,但不管数组操作形式如何改变,最终都属于引用传递。

    请注意,除了对象有这种特性外,整型、浮点型、布尔型等基本数据类型都不具备该特性。

    public class ArrRef {
    	public static void changeReferValue(int a,int[]myArr) {
    		a+=1;      //将参数a加1
    	    myArr[0]=0; //将数组的三个元素全部置0
    	    myArr[1]=0;
    	    myArr[2]=0;
    	}
    	
    	//打印数组元素
    	public static void printArr(int[]arr) {
    		for(int i:arr) {
    	      System.out.print(i+"");
    	    }
    	    System.out.println();   //输出一个换行符
    	}
    	
    	//打印结果
    	public static void print(int in,int[]arr) {
    	    System.out.println("in:"+in);
    	    System.out.print("arr:");
    	    printArr(arr);
    	}
    	
    	public static void main(String[] args) {
    	    int in=10;
    	    int arr[]={1,2,3,4,5};
    	
    	    System.out.println("----调用changeReferValue方法之前--------");
    	    print(in,arr);
    	
    	    changeReferValue(in,arr);
    	    System.out.println("----调用changeReferValue方法之后--------");
    	    print(in,arr);
    	}
    }
    

    【结果】
    在这里插入图片描述
    【范例分析】
    因为数组是对象,所以在changeReferValue方法的参数列表中,最后一个参数传递形式为 “传引用”

    换句话说,main方法中实参arr和changeReferValue方法中的形参myAr指向同一块内存空间。

    因此,在changeReferValue方法中,对形参arr所指向的数组数据的任何修改,都会同步影响到main方法中的实参arr所指向的数组数据(myAr和arr本质上就上一块内存区域)。

    在changeReferValue方法中,由于对于整型形参a和实参in之间是 “传值” 关系。在实参in将值赋值给形参a后,形参和实参二者之间再没有任何关联,所以在方法changeReferValue中对a的+1操作,并没有影响实参in的值,在本质上,形参a和实参in所指向的完全是不同的内存空间。

    展开全文
  • java 访问数组元素进行获取

    千次阅读 2020-12-08 19:54:46
    java 中直接打印静态初始化的数组 int[] arrayC = new int[] {1,2,3,4,5}; //int[] arrayd = {1,2,3,4,5}; System.out.println(arrayC); enn…出来一堆乱码? 直接打印数组名称,得到的是数组相应的内存地址-...

    java 中直接打印静态初始化的数组

       int[] arrayC = new int[] {1,2,3,4,5};
            //int[] arrayd =  {1,2,3,4,5};
            System.out.println(arrayC);
    
    

    在这里插入图片描述
    enn…出来一堆乱码?

    直接打印数组名称,得到的是数组相应的内存地址-哈希值。
    输出的乱码-大括号代表数组,大写 I 表示 int型 @后边的是进制数

    访问数组元素的格式

    数组名称[索引值]

    索引值就是一个int数字,代表数组中元素的编号。
    【注意】 索引值从0开始,一直到“数组的长度-1”为止。

    还可以把数组中的某个元素赋值给一个变量,例如;

     int[] arrayC = new int[] {1,2,3,4,5};
            //int[] arrayd =  {1,2,3,4,5};
            System.out.println(arrayC[4]);
            int num = arrayC[3];
            System.out.println(num);
    

    运行结果;
    在这里插入图片描述
    【注意事项】 静态初始化其实也有默认值得过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值。

    java 直接打印动态初始化的数组

       int[] arrayA = new int[3];
    
            System.out.println(arrayA);
            System.out.println(arrayA[0]);
            System.out.println(arrayA[1]);
            System.out.println(arrayA[2]);
    

    运行结果;
    在这里插入图片描述

    我们使用动态初始化的数组的时候,其中元素将会自动拥有一个默认值,规则如下;

    1.如果是整数类型,那么默认 0。
    2.如果是浮点类型,那么默认0.0.
    3.如果是字符类型,那么默认 ‘\u0000’ (后边四位是16进制)。
    4.如果是布尔类型,那么默认 false。
    5.如果是引用类型,那么默认 null。

    动态初始化的数组的赋值

    int[] arrayA = new int[3];
    System.out.println("==============");
    
            arrayA[1] = 123;
            System.out.println(arrayA[1]);
    

    运行结果
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • JAVA删除数组中指定元素

    千次阅读 2018-12-28 16:41:42
    //返回剔除指定元素数组 public int[] getThree(int[] scores){ //剔除不符要求的元素(此处为 &lt;0 或 &gt;100) for(int i = 0 ; i &lt; scores.length ; i++ ){ if(scores...
    //记得在开头引用Arrays类
    import java.util.Arrays;
    //返回剔除指定元素的数组
    public int[] getThree(int[] scores){
         //剔除不符要求的元素(此处为 <0 或 >100)
         for(int i = 0 ; i < scores.length ; i++ ){
            if(scores[i]<0 || scores[i]>100){
                //把数组最后一个元素拿来补充不符的元素的位置,因为后面一步需要删除最后一个元素
                scores[i] = scores[scores.length-1];
                //删除数组最后一个元素
                //实现方法是 用 Arrays类中的copyOf()方法得到数组前(length-1)个元素组成的新数组
                scores = Arrays.copyOf(scores,scores.length-1);
            }
         }
         return scores;
    }

     

    展开全文
  • JAVA 数组引用

    千次阅读 2018-05-08 19:10:40
    数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。public class Hello { public static void main(String[] args) { int a[]= {1,2,3,4}; int b[]= {100,200,300}; ...
  • Java数组元素

    千次阅读 2017-03-22 09:10:54
    可以使用括在括号中的元素索引来引用访问数组的每个元素。第一个元素的索引为0,第二个元素1,第三个元素2等。 这称为基于零的索引。数组的最后一个元素的索引是数组的长度减1。假设有一个长度为5的数组数组元素...
  • Java 中有一种特殊的数组引用类型,它具有以下特性: 1、java 数组本身来说是一个引用类型,定义以及初始化之后数组的长度不再改变。 2、java 数组不变是说由array variable 所指向的内存中的数组不会发生变化,而...
  • java删除数组中重复元素

    千次阅读 2017-04-19 23:07:05
      Java SE GXW3310-08 14:30
  • 一 填空题 1) 数组元素通过 下标 来访问数组 Array的长度为 Array.length 2) 数组复制时"="将一个数组引用 传递给另一个数组 3) JVM将数组存储在 栈 (堆或栈)中 4) 数组的二分查找法运用的前提条件是数组已经 ...
  • 比较简单,话在图中说了 觉得写的不错点个赞
  • java中打印数组的方法An array is a data structure used to store data of the same type. Arrays store their elements in contiguous memory ... 数组将其元素存储在连续的内存位置中。 In Java, arrays are o...
  • Java 数组

    千次阅读 2018-05-24 14:55:06
    Java 语言中提供的数组是用来存储固定大小的同类型元素。你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99。本教程将为大家介绍 Java 数组的声明、创建和...
  • Java 实例 - 向数组添加元素

    千次阅读 2019-09-16 09:43:58
    下面数据插入元素方法主要思路是通过,System.arraycopy()复制数组实现。 @Test public void test4(){ int[] array = new int[]{2, 5, -1}; Arrays.sort(array); System.out.println("排序后...
  • 代码 ... public class InputArray { public static void main(String args[]) { int[] a = {100, 200, 300}; //输出数组a的长度 System.out.println("数组a的长度;... System.out.println("数组a的引用:" + a);
  • Java 数组 之 一维数组 追加 元素

    万次阅读 2018-05-29 09:22:34
    数组分类 1. 一维数组 1.1 一维数组的定义和初始化 1.2 对一维数组的操作, 遍历,添加,插入,修改,删除,排序,查找 2. 二维数组 2.1 二维数组的定义和初始化 2.2 二维数组的遍历 3. 多维数组 4. 增强for循环 */ ...
  • Java基础>18>数组>>获取/访问数组元素

    千次阅读 2019-06-07 10:31:14
    获取数组元素 /* 直接打印数组名称,得到的是数组对应的:内存地址哈希值。 二进制:01 十进制:0123456789 十六进制:0123456789abcdef 访问数组元素的格式:数组名称[索引值] 索引值:就是一个int数字,...
  • 其他语言不同,Java不允许程序员选择按值传递还是按引用传递各个参数,基本类型(byte--short--int--long--float--double--boolean--char)的变量总是按值传递。就对象而言,不是将对象本身传递给方法,而是将对象的...
  • 1.数组初始化 1.1动态初始化(声明并开辟数组)  数据类型【】 数组名称 = new 数据类型 【长度】...数组通过下标索引来取得元素,下标默认从0开始。数组下标超出数组长度,数组越界异常(运行时异常)  b.数组...
  • java 集合(含数组)添加元素的原理

    千次阅读 2017-07-20 20:06:21
    java 集合(含数组)添加元素的原理
  • java数组

    千次阅读 2019-07-18 20:59:36
    数组是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来唯一确定数组中的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维...
  • Java判断数组中是否包含某个元素

    千次阅读 2020-05-29 11:37:28
    * //注:Java有两种数据类型,基本数据类型和引用数据类型,判断基本数据类型是否相等用==,判断引用数据类型是否相等用equals */ public class ArrayQuery { public static void main(String[] args) { //第一...
  • java 如何引用数组

    千次阅读 2018-06-10 15:55:55
    数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。public class Hello { public static void main(String[] args) { int a[]= {1,2,3,4}; int b[]= {100,200,300}; ...
  • Java基础之引用类型数组

    千次阅读 2018-04-24 15:41:53
    数组也是对象,数组元素可以使任何元素,包括引用类型。如果数据元素引用类型,则数组称为引用类型数组。 int[] arr = new int[3]; arr保存数组对象的地址,即数组元素的地址。 数组元素可以看成数组对象的...
  • int[] a={1,2,3} int[] b; b=a; 这的意思是a 和b指向的是同一块内存地址吗?
  • java数组元素类型为基本数据类型和引用类型有什么不同? 对于基本类型数组而言,数组元素的值直接存储在对应的数组元素中,因此,初始化数组时,先为该数组分配内存空间,然后直接将数组元素的值存入对应数组元素中...
  • java循环输出数组中的元素

    千次阅读 2015-04-11 17:12:24
    public class ArrayTest3 { public static void main(String[] args)  { //定义、并初始化nums数组 int[] nums = new int[]{3, 5, 20, 12};...//让prices数组指向nums所引用数组 prices = nums;
  • java数组类型

    千次阅读 2018-11-15 22:56:15
    一.数组也是一种类型  数组是编程语言中最常见的一种数据结构,java中可通过数组元素的索引来访问数组元素,包括为数组元素赋值和取值。...  java数组既可以存储基本数据类型,也可以存储引用数据类型,它本...
  • JAVA 引用类型数组的初始化

    千次阅读 2016-06-30 23:24:35
    引用类型数组数组元素引用. 我们之前学习过的基本类型数组, 它里面的数组元素存放的是具体的值. 可以当作我们现实生活中的买房, 基本类型数组呢, 就像是你直接找到了房主. 而引用类型数组就像是你没有...
  • Java 数组元素倒序的三种方式

    千次阅读 2018-12-14 10:18:04
    数组元素反转有多种实现方式,这里介绍常见的三种. 直接数组元素对换 @Test public void testReverseSelf() throws Exception { System.out.println("use ReverseSelf"); String[] strings = { &...
  • java判断数组及其元素是否为空

    千次阅读 2019-07-05 14:50:35
    String str = “1,2”; String[] closed = str.split(","); 标准的判断是 if(arr==null || arr.length ==0){ ...//数组元素为空 } 因为在java中先判断null是必须的,保证程序的健壮。 然后就是在对比对象时最好用e...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 237,687
精华内容 95,074
关键字:

数组的引用与元素java

java 订阅