java 中数组初始化实例详解
1.数组初始化
定义数组的方式:
int[] arr1; 或 int arr1[];
数组初始化
通过上边的定义,我们只是得到了一个数组的引用。这时已经为引用分配了存储空间,但是还没有给数组对象本身分配任何空间。想要给数组对象分配存储空间,必须使用初始化表达式。
a.在数组创建的地方进行初始化,如:
int[] arr1 = {1,2,3,4,5};
这种方式等价于使用new来进行存储空间分配。
b.给数组的引用赋值,如:
int[] arr1 = {1,2,3,4,5}; int[] arr2; arr2 = arr1;
复制的只是一个引用。如下图:
所有的数组都有一个固定成员length,通过它可以知道数组元素的个数。
c.当不确定数组元素的个数时的数组创建
当数组元素个数不确定时,我们可以直接使用new在数组里创建元素。注意new可以应用于基本类型的数组,但是不能应用于单个的基本类型。
d.在定义数组的同时也可以进行初始化,当创建一个非基本类型的数组时,实际上创建的是引用数组。
可以用花括号列表的形式来初始化对象数组,有两种形式:
2.可变参数列表
下图标出了参数列表的使用方式、格式和对传入参数的要求。
2.1 列表参数类型可以不同的情况
可变参数类型为Object,因为所有的类都直接或间接的继承自Object类,可以向上转型为Object,因此参数列表中的类型可以不一致。
输出如下图:
2.2 列表参数类型必须相同的情况
当然可变参数参数列表也可以作为函数的一个参数传入,如下图。这里的参数列表中的参数类型为string,则所有的参数必须是string类型,与上面的程序不同。
2.3 可变参数列表中的参数可以是任何类型,包括基本类型
下面是可变参数列表为数组的例子:
从输出结果的最后两行可知,可变参数列表实际使用的是基本类型,不依赖自动包装机制。
2.4 可变参数列表和自动包装机制
但是,我们要知道,可变参数列表和自动包装机制可以“共处”,如下图:
2.5 可变参数列表与函数重载
可变参数列表使重载过程变得复杂:
在上面的所有带参数的函数调用,编译器都会使用自动包装机制来匹配重载的方法,然后调用最匹配的方法。但是不使用使用参数来f()时,编译器会二义性错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method f(Character[]) is ambiguous for the type OverloadingVarargs at thingjinjava.OverloadingVarargs.main(OverloadingVarargs.java:25)
那么,如何解决这个问题呢?
可以尝试着在某个方法中增加一个非可变参数来解决该问题。
可是,程序仍然无法通过编译,还是报上面同样的错误。
但是,当我们在给这两个函数都添加一个非可变参数,问题就可以解决了。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
老生常谈java中的数组初始化
数组的初始化可以分为两种: 1.静态初始化 2.动态初始化 静态初始化: 例: String[] str = new String[]{"A","B","C"}; String str[] = new String[]{"A","B","C"}; String str = {"A","B","C"}; 动态初始化: 例: Str
-
Java 数组声明、创建、初始化详解
一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为: 数组名 = new 数组元素的类型 [数组元素的个数] 实例: TestNew.java: 程序代码: public class TestNew { public static void main(String args[]) { int[] s ; int i ; s = new int[5] ; for(i = 0 ; i
-
Java编程中二维数组的初始化和基本操作实例
Java二维数组的声明和初始化 1.二维数组可以看成以数组为元素的数组: 2.Java中二维数组的声明和初始化应按照从高维到低维的顺序进行. 实例: 静态初始化: Array2.java: 程序代码 public class Array2 { public static void main(String args[]) { int a[][] = {{1,2},{3,4,5,6},{7,8,9}} ; for(int i=0 ; i <a.length ; i++) { for(int j=0
-
Java中一维二维数组的静态和动态初始化
今天我们要开始来讲讲Java中的数组,包括一维数组和二维数组的静态初始化和动态初始化 数组概述: 数组可以看成是多个相同类型数据的组合,对这些数据的统一管理; 数组变量属于引用数据类型,数组也可以看成是对象,数组中的每一个元素相当于该对象的成员变量; 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型; 一维数组的声明: 声明方式: 例如; int a [ ] = new int [3]; Java语言中 声明是不能指定其长度[数组中元素的个数]; 非法声明; int a [5];
-
关于Java数组声明、创建、初始化的相关介绍
本文讲述了Java数组的几个相关的方面,讲述了对Java数组的声明.创建和初始化,并给出其对应的代码. 一维数组的声明方式:type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数] 实例:TestNew.java: 程序代码: public class TestNew { public static void main(String args[]) {
-
Java数组声明、创建、初始化基础
一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为: 数组名 = new 数组元素的类型 [数组元素的个数] 实例: TestNew.java: 程序代码: public class TestNew { public static void main(String args[]) { int[] s ; int i ; s = new int[5] ; for(i = 0 ; i
-
java 中数组初始化实例详解
1.数组初始化 定义数组的方式: int[] arr1; 或 int arr1[]; 数组初始化 通过上边的定义,我们只是得到了一个数组的引用.这时已经为引用分配了存储空间,但是还没有给数组对象本身分配任何空间.想要给数组对象分配存储空间,必须使用初始化表达式. a.在数组创建的地方进行初始化,如: int[] arr1 = {1,2,3,4,5}; 这种方式等价于使用new来进行存储空间分配. b.给数组的引用赋值,如: int[] arr1 = {1,2,3,4,5}; int[] arr
-
Java中File的实例详解
Java中File的实例详解 File 代表文件或者目录的类 构造函数 File(File parent,String child)---代表了指定父目录下的指定的子文件或者子目录 File(String pathname)---代表了指定路径对应的文件或者目录对象 重要方法 创建 createNewFile()---只能用来创建文件,并且一次只能创建一个文件,要求文件存储的目录必须真实存在 mkdir()---只能用来创建目录,不能用来创建多层目录 mkdirs()---创建多层目录 删除 d
-
浅谈JAVA中输入输出流实例详解
java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家介绍JAVA中输入输出流实例详解. 流的层次结构 定义: java将读取数据对象成为输入流,能向其写入的对象叫输出流.结构图如下: 1.输入输出: 输入/输出(Input/Output)是指对某
-
java 中匿名内部类的实例详解
java 中匿名内部类的实例详解 原来的面貌: class TT extends Test{ void show() { System.out.println(s+"~~~哈哈"); System.out.println("超级女声"); } TT tt=new TT(); tt.show(); 只是说我们这里采用的是匿名的形式来处理. 重写了Test的show()方法,在重写好了以后,又调用了重写后的show()方法 实现代码: package cn.com; c
-
java 中List删除实例详解
java 中List删除实例详解 1.循环删除List中的元素 public static void main(String[] args) { List<String> t=new ArrayList<String>(); for (int i = 0; i < 10; i++) { t.add(""+i+""); } System.out.println("原有的List:"+t.toString()); for
-
java 中内部类的实例详解
java 中内部类的实例详解 一:内部类可直接访问外部类的成员变量,包括外部类私有的成员变量 二:外部类要访问内部类的成员变量,需要建立内部类的对象 class Outer{ int x=110; public void show(){ System.out.println("外部类的x="+x); } public void showInner(){ Inner inner=new Inner(); inner.show(); System.out.println(inner.x);
-
Java中泛型使用实例详解
Java中泛型使用 泛型作用: 泛型:集合类添加对象不用强转 反射机制:将泛型固定的类的所有方法和成员全部显示出来 核心代码: ArrayList<Ls> ff=new ArrayList()<Ls>; Ls ls1=new Ls("薯片",5f); ff.add(ls1); Ls cls=ff.get(0);//这里不再需要强转 代码实例: 说明:这是非泛型的代码,集合类中调用对象时需要强转 import java.util.*; public class L
-
Java中equals()方法实例详解
目录 equals()在哪里 Java中重写的equals() 在Java中比较的推荐方法 为什么要在我们自己的类中重写equals() 重写equals()的规范 重写equals()可能的误区 一般的equals()写法 附:java中equals()方法的正确使用 总结 equals()在哪里 首先我们知道Java中Object类是所有类的父类,它里面定义了equals()方法: public boolean equals(Object obj) { return (this == obj
-
Java 生成随机字符串数组的实例详解
Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List<String>之后,往其中添加十条随机字符串 2.每条字符串的长度为10以内的随机整数 3.每条字符串的每个字符都为随机生成的字符,字符可以重叠 4.每条随机字符串不可重复 将涉及到的知识有: String.StringBuffer.ListArray.泛型.Collections.sort.foreach.Random等相关知识,算是
-
java 中 阻塞队列BlockingQueue详解及实例
java 中 阻塞队列BlockingQueue详解及实例 BlockingQueue很好的解决了多线程中数据的传输,首先BlockingQueue是一个接口,它大致有四个实现类,这是一个很特殊的队列,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被唤醒继续操作.
随机推荐
- IOS获取各种文件目录路径的方法
- Javascript基于AJAX回调函数传递参数实例分析
- JAVA 文件监控 WatchService的示例方法
- 5款Javascript颜色选择器
- C# CUR类实现代码
- CI框架中cookie的操作方法分析
- Python过滤列表用法实例分析
- asp Chr 函数 数字转字母的方法
- Resin在Windows系统下的安装
- 深入理解逻辑表达式的用法 与或非的用法
- 浅谈JavaScript中的apply/call/bind和this的使用
- MySQL密码正确却无法本地登录的解决方法
- Nodejs之http的表单提交
- 重新理解JavaScript的六种继承方式
- centOs6.9服务器版本安装图解(包含java和mysql)
- 浅谈js中调用函数时加不加括号的问题
- mongodb 常见问题处理方法收集
- jQuery结合CSS制作动态的下拉菜单
- jQuery中is()方法用法实例
- jquery改变disabled的boolean状态的三种方法