zoukankan      html  css  js  c++  java
  • 从头认识java-14.2 进一步了解数组

    这一章节我们来全面了解一下数组。

    1.数组在初始化之前。我们不能使用他的引用来做不论什么事情。

    package com.ray.ch14;
    
    public class Test {
    	public static void main(String[] args) {
    		int[] a;
    		// System.out.println(a);//error,The local variable a may not have been
    		// initialized
    		// a[0]=0;//error,The local variable a may not have been initialized
    	}
    }
    


    上面的错误信息已经说明了观点。

    2.数组在初始化的时候,假设是基础类型里面的数值型类型,那么初始化每一个元素为0,假设是char。则是‘空’,假设是boolean。则是false,假设是其它类型(包含不是数值型类型的基础类型)。则初始化每一个元素为null

    package com.ray.ch14;
    
    import java.util.Arrays;
    
    public class Test {
    	public static void main(String[] args) {
    		int[] a = new int[3];
    		String[] b = new String[3];
    		char[] c = new char[3];
    		boolean[] d = new boolean[3];
    		MyClass[] myClasses = new MyClass[3];
    		System.out.println(Arrays.toString(a));
    		System.out.println(Arrays.toString(b));
    		System.out.println(Arrays.toString(c));
    		System.out.println(Arrays.toString(d));
    		System.out.println(Arrays.toString(myClasses));
    	}
    }
    
    class MyClass {
    }
    


    输出:

    [0, 0, 0]
    [null, null, null]
    [ , ,]

    [false, false, false]
    [null, null, null]

    3.创建数组的两种方式。显式new与隐式new

    package com.ray.ch14;
    
    public class Test {
    	public static void main(String[] args) {
    		MyClass[] a = new MyClass[3];
    		MyClass[] b = { new MyClass(), new MyClass(), new MyClass() };
    	}
    }
    
    class MyClass {
    }
    


    上面两种创建方式是对等的。

    4.上面的隐式new事实上就是聚集初始化。可是。他本身有一定的局限性,就是必须在当前位置初始化。我们以下再看看还有一种动态聚集初始化

    package com.ray.ch14;
    
    public class Test {
    	public static void main(String[] args) {
    		MyClass[] a = new MyClass[] { new MyClass(), new MyClass(),
    				new MyClass() };
    		MyClass[] b = { new MyClass(), new MyClass(), new MyClass() };
    	}
    }
    
    class MyClass {
    }
    


    观察上面的代码。数组a更加的灵活。

    5.数组标识符是一个引用。指向堆里面的对象。

    package com.ray.ch14;
    
    public class Test {
    	public static void main(String[] args) {
    		int[] ints = new int[] { 1, 2, 3 };
    		System.out.println(ints);
    	}
    }
    


    输出:

    [I@1bab50a

    上面的输出事实上就是一个内存地址。

    6.基础类型数组存储的是基础类型的值。对象数组存储的是对象的引用(内存地址)

    package com.ray.ch14;
    
    public class Test {
    	public static void main(String[] args) {
    		int[] ints = new int[] { 1, 2, 3 };
    		for (int i = 0; i < ints.length; i++) {
    			System.out.println(ints[i]);
    		}
    		MyClass[] myClasses = new MyClass[] { new MyClass(), new MyClass(),
    				new MyClass() };
    		for (int i = 0; i < myClasses.length; i++) {
    			System.out.println(myClasses[i]);
    		}
    	}
    }
    
    class MyClass {
    }
    


    输出:

    1
    2
    3
    com.ray.ch14.MyClass@c3c749
    com.ray.ch14.MyClass@150bd4d
    com.ray.ch14.MyClass@1bc4459

    总结:上面总结了数组的多个方面。以及各个方面都做出来举例。

    这一章节就到这里。谢谢。

    -----------------------------------

    文件夹

  • 相关阅读:
    【教程】模拟登陆百度之Java代码版
    Redis错误配置详解
    Redis内存存储结构分析
    Notepad++安装插件
    hadoop2.x 常用端口及定义方法
    微信订阅号可以开通微信支付吗?
    CDH 的Cloudera Manager免费与收费版的对比表
    Hadoop调度框架
    再谈spark部署搭建和企业级项目接轨的入门经验(博主推荐)
    Hive环境的安装部署(完美安装)(集群内或集群外都适用)(含卸载自带mysql安装指定版本)
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7235030.html
Copyright © 2011-2022 走看看