精华内容
下载资源
问答
  • 1.阅读QiPan.java示例程序了解如何利用二维数组和循环语句绘制五子棋盘。程序代码:运行结果截图:2.编写一个程序,将一个整数转化为汉字读法(1123--壹千壹百贰十叁);更进一步,将数字金额转化为汉字读法(¥123.52-...

    1.阅读QiPan.java示例程序了解如何利用二维数组和循环语句绘制五子棋盘。

    程序代码:

    3a71fc9b6d423f5bea96f4c540255f80.png

    运行结果截图:

    a87633f57951dc053dbc51bb2506e35e.png

    2.编写一个程序,将一个整数转化为汉字读法(1123--壹千壹百贰十叁);

    更进一步,将数字金额转化为汉字读法(¥123.52--壹百贰十叁元五角贰分)。

    (1)程序代码:

    b37337db5b42f6228f0b4b185c2f883a.png

    运行结果截图:

    dfe720e2dd33a751b23edbd82a358684.png

    (2)程序代码:

    f6c19c313979b35c9a60db4ac3d1d8bf.png

    运行结果截图:

    c2dcdeef552a2e3613b2a98aeb630f76.png

    3.

    前面几讲介绍过JDK所提供的BigInteger能完成大数计算,如果不用它,直接使用数组表达大数,你能实现相同的功能吗?

    (1)大数类实现加法

    4a47362b225b089f0146aa0a473cdf6a.png

    (2)阅读BigInteger类源码弄清楚它是用什么算法实现加减乘除四种运算的?

    public static void main(String[] args) {

    BigInteger a =new BigInteger("100");

    BigInteger b= new BigInteger("25");

    BigInteger sub=a.subtract(b);//大整数的减

    BigInteger add=a.add(b);//大整数的加

    BigInteger mul=a.multiply(b);//大整数的乘

    BigInteger div=a.divide(b);//大整数的除

    System.out.println(sub.toString());

    System.out.println(add.toString());

    System.out.println(mul.toString());

    System.out.println(div.toString());

    }

    (3)通过互联网查找大数运算的相关资料,给你的大数类添加乘、除、求阶乘等其它功能。

    阶乘

    edaf79d48d05977c3d9ea13136a831ea.png

    运行结果:

    ee1795b53d0c8723edbab8ee368461df.png

    4.随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中。

    (1)设计思路:定义一个数组来储存10个随机数,并通过for循环将数组输出且求和,最后以对话框的形式输出。

    (2)程序流程图:

    bbccadd55bdbb4d0c3f9644224136a7e.png

    (3)源程序代码:

    7ca4ae807a8af1bd52930e427d9f8406.png

    运行结果截图:

    714427dfbdcd2b56f3f659b75fa5b096.png

    展开全文
  • 今天在刷Java题的时候,写惯了C++发现忘记了Java数组的操作,遂把以前写的文章发出来温习一下。首先,数组有几种创建方式?Java程序中的数组必须先进行初始化才可以使用,所谓初始化,就是为数组对象的元素分配内存...

    今天在刷Java题的时候,写惯了C++发现忘记了Java数组的操作,遂把以前写的文章发出来温习一下。

    首先,数组有几种创建方式?

    Java程序中的数组必须先进行初始化才可以使用,所谓初始化,就是为数组对象的元素分配内存空间,并为每个数组元素指定初始值,而在Java中,数组是静态的,数组一旦初始化,长度便已经确定,不能再随意更改。

    声明数组变量

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

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

    dataType arrayRefVar[]; // 效果相同,但不是首选方法 c++沿用

    但是以上只是声明了数组,并不能直接使用,因为没有为其分配内存空间,此时必须初始化。

    例如以下代码在Java8中就会报错

    public class test{

    public static void main(String[] arg) {

    int[] a;

    a[0]= 1;

    System.out.println(a[0]);

    }

    }

    // 系统将报错 局部变量 a 可能尚未初始化

    // 进一步加入我个人的理解,声明的数组没有确定大小,没有办法分配内存空间,所有必须初始化

    // 但是以下代码在Java中是禁止的

    public class test{

    public static void main(String[] arg) {

    int[10] a;

    a[0]= 1;

    System.out.println(a[0]);

    }

    }

    // 系统将报错 标记“10”上有语法错误,删除此标记

    // 不能像c++这样初始化数组

    所以,我们拥有两种初始化数组的方式

    静态初始化:由程序猿自己确定每个数组元素的初始值,而数组的长度则由系统自己决定,例如:

    int[] a = {1,2,3,4,5};

    System.out.println(a.length);

    // 第二行代码可以看出,数组拥有类的性质,可以用dot访问其变量

    // 第一行代码静态初始化了数组整型数组a,赋予其固定的长度,系统可以为其分配空间

    动态初始化:初始化时由程序猿确定数组的长度,而没一个数组元素的值,则由系统来分配初始值,例如:

    int[] b=new int[5];

    System.out.println(b[0]);

    // 很明显,数组就是类

    数组一定要初始化吗?所谓的对数组初始化究竟是对什么初始化?是数组变量本身吗?

    答案看上去肯定是一定要,但是我在实践中发现却是不一定需要,要想搞清楚这个问题,我们需要理解数组变量和数组对象的区别。而在认识他们之前需要先了解Java的数据类型。Java的数据类型分为两种,基本数据类型和引用数据类型。

    基本数据类型有八种:byte,short,int,long,float,double,boolean,char。只需要知道基本数据类型变量包含一个值,这个值的类型与变量相对应。

    引用数据类型:引用型变量的值与基本类型变量不同,变量值是指向内存空间的引用(地址)。所指向的内存中保存着变量所表示的一个值或一组值。这和C++中的指针很相似,事实上Java语言中的引用实际上就是指针,是指向一个对象的内存地址。Java所说的不支持指针只是不支持指针的计算,但是指针类型被保留了下来,并称为引用类型。声明引用数据类型后,不可以直接使用,还需要实例化在堆内存中开辟内存空间。

    数组变量是一个引用类型的变量,数组变量是指向堆内存当中的数组对象,并不是数组本身。当改变一个数组变量所引用的数组,就可以造成数组长度可变的假象。实际上数组对象本身的长度本没有变化,只是数组变量指向了一个新的数组对象。

    所以对于数组变量来说,他并不需要初始化,我们常说的初始化其实是初始化数组对象而非数组变量,有时候我们不进行初始化,而让数组变量指向一个有效的数组对象,数组也可以使用,例如:

    int[] a = {0,1,2,3,4};

    int[] b;

    b = a;

    System.out.println(b[1]);

    // 输出结果为 1

    b[1] = 99;

    System.out.println(a[1]);

    // 输出结果为 99

    我自己的理解是,Java的数组就是一个对象。初始化数组的最好办法就是new一个。

    数组的增强循环(也可用于其他集合)

    Java增强循环语句如下:

    for(声明语句:表达式){

    // 代码

    }

    // 冒号可以理解为"in"

    声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等(而不是数组的下标!!)。

    表达式: 表达式是要访问的数组名,或者是返回值为数组的方法。

    实例

    public class Test {

    public static void main(String args[]){

    int [] numbers = {10, 20, 30, 40, 50};

    for(int x : numbers ){

    System.out.print( x );

    System.out.print(",");

    }

    System.out.print("\n");

    String [] names ={"James", "Larry", "Tom", "Lacy"};

    for( String name : names ) {

    System.out.print( name );

    System.out.print(",");

    }

    }

    }

    输出结果

    10,20,30,40,50,

    James,Larry,Tom,Lacy,

    我们回头理解其执行顺序:

    创建名为x的integer变量

    将numbers的第一个元素赋值给x

    执行大括号内的代码

    赋值给下一个元素x

    重复执行至所有的元素都被运行

    Java的变量类型Java中有三种变量类型类变量:独立于方法之外的变量,用static修饰实例变量:独立于方法之外的变量,不过没有static修饰类的每个对象特定的变量也是实例对象(顾名思义)局部变量:类的方法中的变量

    public class variable{

    static int a = 0; // 类变量

    String str = "Java is easy to learn."; // 实例变量 实例变量声明在类内而不是方法中

    public void method{

    int b = 1; // 局部变量 局部变量是声明在方法中的

    // 局部变量在使用前必须初始化

    int x;

    int z = x + 1; // 这就是错误的代码,无法编译

    }

    }

    声明与初始化变量类型实例变量永远会有默认值。如果没有明确的赋值给实例变量,或者没有调用setter,实例变量仍有默认值。

    integers 0

    floating points 0.0

    Booleans false

    references null

    局部变量没有默认值

    到此这篇关于Java数组的声明与创建示例详解的文章就介绍到这了,更多相关Java数组的声明与创建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    展开全文
  • 本文中的示例代码已归档到:「javacore」1. 简介1.1. 数组的特性数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。几乎所有程序设计语言都支持数组数组代表一系列...

    📓 本文已归档到:「javacore」

    🔁 本文中的示例代码已归档到:「javacore」

    1. 简介

    1.1. 数组的特性

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。几乎所有程序设计语言都支持数组。

    数组代表一系列对象或者基本数据类型,所有相同的类型都封装到一起,采用一个统一的标识符名称。

    数组的定义和使用需要通过方括号 []。

    Java 中,数组是一种引用类型。

    Java 中,数组是用来存储固定大小的同类型元素。

    1.2. 数组和容器

    Java 中,既然有了强大的容器,是不是就不需要数组了?

    答案是不。

    诚然,大多数情况下,应该选择容器存储数据。

    但是,数组也不是毫无是处:

    Java 中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组的效率要高于容器(如 ArrayList)。

    数组可以持有值类型,而容器则不能(这时,就必须用到包装类)。

    1.3. Java 数组的本质是对象

    Java 数组的本质是对象。它具有 Java 中其他对象的一些基本特点:封装了一些数据,可以访问属性,也可以调用方法。所以,数组是对象。

    如果有两个类 A 和 B,如果 B 继承(extends)了 A,那么 A[] 类型的引用就可以指向 B[] 类型的对象。

    如果想要论证 Java 数组本质是对象,不妨一读这篇文章。

    1.4. Java 数组和内存

    Java 数组在内存中的存储是这样的:

    数组对象(这里可以看成一个指针)存储在栈中。

    数组元素存储在堆中。

    如下图所示:只有当 JVM 执行 new String[] 时,才会在堆中开辟相应的内存区域。数组对象 array 可以视为一个指针,指向这块内存的存储地址。

    07eee2670ca004706e77e7924338478f.png

    2. 声明数组

    声明数组变量的语法如下:

    int[] arr1; // 推荐风格

    int arr2[]; // 效果相同

    3. 创建数组

    Java 语言使用 new 操作符来创建数组。有两种创建数组方式:

    指定数组维度

    为数组开辟指定大小的数组维度。

    如果数组元素是基础数据类型,会将每个元素设为默认值;如果是引用类型,元素值为 null。

    不指定数组维度

    用花括号中的实际元素初始化数组,数组大小与元素数相同。

    示例 1:

    public class ArrayDemo {

    public static void main(String[] args) {

    int[] array1 = new int[2]; // 指定数组维度

    int[] array2 = new int[] { 1, 2 }; // 不指定数组维度

    System.out.println("array1 size is " + array1.length);

    for (int item : array1) {

    System.out.println(item);

    }

    System.out.println("array2 size is " + array1.length);

    for (int item : array2) {

    System.out.println(item);

    }

    }

    }

    // Output:

    // array1 size is 2

    // 0

    // 0

    // array2 size is 2

    // 1

    // 2

    💡 说明

    请注意数组 array1 中的元素虽然没有初始化,但是 length 和指定的数组维度是一样的。这表明指定数组维度后,无论后面是否初始化数组中的元素,数组都已经开辟了相应的内存。

    数组 array1 中的元素都被设为默认值。

    示例 2:

    public class ArrayDemo2 {

    static class User {}

    public static void main(String[] args) {

    User[] array1 = new User[2]; // 指定数组维度

    User[] array2 = new User[] {new User(), new User()}; // 不指定数组维度

    System.out.println("array1: ");

    for (User item : array1) {

    System.out.println(item);

    }

    System.out.println("array2: ");

    for (User item : array2) {

    System.out.println(item);

    }

    }

    }

    // Output:

    // array1:

    // null

    // null

    // array2:

    // io.github.dunwu.javacore.array.ArrayDemo2$User@4141d797

    // io.github.dunwu.javacore.array.ArrayDemo2$User@68f7aae2

    💡 说明

    请将本例与示例 1 比较,可以发现:如果使用指定数组维度方式创建数组,且数组元素为引用类型,则数组中的元素元素值为 null。

    3.1. 数组维度的形式

    创建数组时,指定的数组维度可以有多种形式:

    数组维度可以是整数、字符。

    数组维度可以是整数型、字符型变量。

    数组维度可以是计算结果为整数或字符的表达式。

    示例:

    public class ArrayDemo3 {

    public static void main(String[] args) {

    int length = 3;

    // 放开被注掉的代码,编译器会报错

    // int[] array = new int[4.0];

    // int[] array2 = new int["test"];

    int[] array3 = new int['a'];

    int[] array4 = new int[length];

    int[] array5 = new int[length + 2];

    int[] array6 = new int['a' + 2];

    // int[] array7 = new int[length + 2.1];

    System.out.println("array3.length = [" + array3.length + "]");

    System.out.println("array4.length = [" + array4.length + "]");

    System.out.println("array5.length = [" + array5.length + "]");

    System.out.println("array6.length = [" + array6.length + "]");

    }

    }

    // Output:

    // array3.length = [97]

    // array4.length = [3]

    // array5.length = [5]

    // array6.length = [99]

    💡 说明

    当指定的数组维度是字符时,Java 会将其转为整数。如字符 a 的 ASCII 码是 97。

    综上,Java 数组的数组维度可以是常量、变量、表达式,只要转换为整数即可。

    请留意,有些编程语言则不支持这点,如 C/C++ 语言,只允许数组维度是常量。

    3.2. 数组维度的大小

    数组维度并非没有上限的,如果数值过大,编译时会报错。

    int[] array = new int[6553612431]; // 数组维度过大,编译报错

    此外,数组过大,可能会导致栈溢出。

    4. 访问数组

    Java 中,可以通过在 [] 中指定下标,访问数组元素,下标位置从 0 开始。

    public class ArrayDemo4 {

    public static void main(String[] args) {

    int[] array = {1, 2, 3};

    for (int i = 0; i < array.length; i++) {

    array[i]++;

    System.out.println(String.format("array[%d] = %d", i, array[i]));

    }

    }

    }

    // Output:

    // array[0] = 2

    // array[1] = 3

    // array[2] = 4

    💡 说明

    上面的示例中,从 0 开始,使用下标遍历数组 array 的所有元素,为每个元素值加 1 。

    5. 数组的引用

    Java 中,数组类型是一种引用类型。

    因此,它可以作为引用,被 Java 函数作为函数入参或返回值。

    数组作为函数入参的示例:

    public class ArrayRefDemo {

    private static void fun(int[] array) {

    for (int i : array) {

    System.out.print(i + "\t");

    }

    }

    public static void main(String[] args) {

    int[] array = new int[] {1, 3, 5};

    fun(array);

    }

    }

    // Output:

    // 135

    数组作为函数返回值的示例:

    public class ArrayRefDemo2 {

    /**

    * 返回一个数组

    */

    private static int[] fun() {

    return new int[] {1, 3, 5};

    }

    public static void main(String[] args) {

    int[] array = fun();

    System.out.println(Arrays.toString(array));

    }

    }

    // Output:

    // [1, 3, 5]

    6. 泛型和数组

    通常,数组和泛型不能很好地结合。你不能实例化具有参数化类型的数组。

    Peel[] peels = new Pell[10]; // 这行代码非法

    Java 中不允许直接创建泛型数组。但是,可以通过创建一个类型擦除的数组,然后转型的方式来创建泛型数组。

    public class GenericArrayDemo {

    static class GenericArray {

    private T[] array;

    public GenericArray(int num) {

    array = (T[]) new Object[num];

    }

    public void put(int index, T item) {

    array[index] = item;

    }

    public T get(int index) { return array[index]; }

    public T[] array() { return array; }

    }

    public static void main(String[] args) {

    GenericArray genericArray = new GenericArray(4);

    genericArray.put(0, 0);

    genericArray.put(1, 1);

    Object[] array = genericArray.array();

    System.out.println(Arrays.deepToString(array));

    }

    }

    // Output:

    // [0, 1, null, null]

    7. 多维数组

    多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。

    Java 可以支持二维数组、三维数组、四维数组、五维数组。。。

    但是,以正常人的理解能力,一般也就最多能理解三维数组。所以,请不要做反人类的事,去定义过多维度的数组。

    多维数组使用示例:

    public class MultiArrayDemo {

    public static void main(String[] args) {

    Integer[][] a1 = { // 自动装箱

    {1, 2, 3,},

    {4, 5, 6,},

    };

    Double[][][] a2 = { // 自动装箱

    { {1.1, 2.2}, {3.3, 4.4} },

    { {5.5, 6.6}, {7.7, 8.8} },

    { {9.9, 1.2}, {2.3, 3.4} },

    };

    String[][] a3 = {

    {"The", "Quick", "Sly", "Fox"},

    {"Jumped", "Over"},

    {"The", "Lazy", "Brown", "Dog", "and", "friend"},

    };

    System.out.println("a1: " + Arrays.deepToString(a1));

    System.out.println("a2: " + Arrays.deepToString(a2));

    System.out.println("a3: " + Arrays.deepToString(a3));

    }

    }

    // Output:

    // a1: [[1, 2, 3], [4, 5, 6]]

    // a2: [[[1.1, 2.2], [3.3, 4.4]], [[5.5, 6.6], [7.7, 8.8]], [[9.9, 1.2], [2.3, 3.4]]]

    // a3: [[The, Quick, Sly, Fox], [Jumped, Over], [The, Lazy, Brown, Dog, and, friend]]

    8. Arrays 类

    Java 中,提供了一个很有用的数组工具类:Arrays。

    它提供的主要操作有:

    sort - 排序

    binarySearch - 查找

    equals - 比较

    fill - 填充

    asList - 转列表

    hash - 哈希

    toString - 转字符串

    9. 小结

    4f44727591142d4c2fa9d4a7213eb030.png

    10. 参考资料

    展开全文
  • 本文中的示例代码已归档到:「javacore」1. 简介1.1. 数组的特性数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。几乎所有程序设计语言都支持数组数组代表一系列...

    📓 本文已归档到:「javacore」

    🔁 本文中的示例代码已归档到:「javacore」

    1. 简介

    1.1. 数组的特性

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。几乎所有程序设计语言都支持数组。

    数组代表一系列对象或者基本数据类型,所有相同的类型都封装到一起,采用一个统一的标识符名称。

    数组的定义和使用需要通过方括号 []。

    Java 中,数组是一种引用类型。

    Java 中,数组是用来存储固定大小的同类型元素。

    1.2. 数组和容器

    Java 中,既然有了强大的容器,是不是就不需要数组了?

    答案是不。

    诚然,大多数情况下,应该选择容器存储数据。

    但是,数组也不是毫无是处:

    Java 中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组的效率要高于容器(如 ArrayList)。

    数组可以持有值类型,而容器则不能(这时,就必须用到包装类)。

    1.3. Java 数组的本质是对象

    Java 数组的本质是对象。它具有 Java 中其他对象的一些基本特点:封装了一些数据,可以访问属性,也可以调用方法。所以,数组是对象。

    如果有两个类 A 和 B,如果 B 继承(extends)了 A,那么 A[] 类型的引用就可以指向 B[] 类型的对象。

    如果想要论证 Java 数组本质是对象,不妨一读这篇文章。

    1.4. Java 数组和内存

    Java 数组在内存中的存储是这样的:

    数组对象(这里可以看成一个指针)存储在栈中。

    数组元素存储在堆中。

    如下图所示:只有当 JVM 执行 new String[] 时,才会在堆中开辟相应的内存区域。数组对象 array 可以视为一个指针,指向这块内存的存储地址。

    07eee2670ca004706e77e7924338478f.png

    2. 声明数组

    声明数组变量的语法如下:

    int[] arr1; // 推荐风格

    int arr2[]; // 效果相同

    3. 创建数组

    Java 语言使用 new 操作符来创建数组。有两种创建数组方式:

    指定数组维度

    为数组开辟指定大小的数组维度。

    如果数组元素是基础数据类型,会将每个元素设为默认值;如果是引用类型,元素值为 null。

    不指定数组维度

    用花括号中的实际元素初始化数组,数组大小与元素数相同。

    示例 1:

    public class ArrayDemo {

    public static void main(String[] args) {

    int[] array1 = new int[2]; // 指定数组维度

    int[] array2 = new int[] { 1, 2 }; // 不指定数组维度

    System.out.println("array1 size is " + array1.length);

    for (int item : array1) {

    System.out.println(item);

    }

    System.out.println("array2 size is " + array1.length);

    for (int item : array2) {

    System.out.println(item);

    }

    }

    }

    // Output:

    // array1 size is 2

    // 0

    // 0

    // array2 size is 2

    // 1

    // 2

    💡 说明

    请注意数组 array1 中的元素虽然没有初始化,但是 length 和指定的数组维度是一样的。这表明指定数组维度后,无论后面是否初始化数组中的元素,数组都已经开辟了相应的内存。

    数组 array1 中的元素都被设为默认值。

    示例 2:

    public class ArrayDemo2 {

    static class User {}

    public static void main(String[] args) {

    User[] array1 = new User[2]; // 指定数组维度

    User[] array2 = new User[] {new User(), new User()}; // 不指定数组维度

    System.out.println("array1: ");

    for (User item : array1) {

    System.out.println(item);

    }

    System.out.println("array2: ");

    for (User item : array2) {

    System.out.println(item);

    }

    }

    }

    // Output:

    // array1:

    // null

    // null

    // array2:

    // io.github.dunwu.javacore.array.ArrayDemo2$User@4141d797

    // io.github.dunwu.javacore.array.ArrayDemo2$User@68f7aae2

    💡 说明

    请将本例与示例 1 比较,可以发现:如果使用指定数组维度方式创建数组,且数组元素为引用类型,则数组中的元素元素值为 null。

    3.1. 数组维度的形式

    创建数组时,指定的数组维度可以有多种形式:

    数组维度可以是整数、字符。

    数组维度可以是整数型、字符型变量。

    数组维度可以是计算结果为整数或字符的表达式。

    示例:

    public class ArrayDemo3 {

    public static void main(String[] args) {

    int length = 3;

    // 放开被注掉的代码,编译器会报错

    // int[] array = new int[4.0];

    // int[] array2 = new int["test"];

    int[] array3 = new int['a'];

    int[] array4 = new int[length];

    int[] array5 = new int[length + 2];

    int[] array6 = new int['a' + 2];

    // int[] array7 = new int[length + 2.1];

    System.out.println("array3.length = [" + array3.length + "]");

    System.out.println("array4.length = [" + array4.length + "]");

    System.out.println("array5.length = [" + array5.length + "]");

    System.out.println("array6.length = [" + array6.length + "]");

    }

    }

    // Output:

    // array3.length = [97]

    // array4.length = [3]

    // array5.length = [5]

    // array6.length = [99]

    💡 说明

    当指定的数组维度是字符时,Java 会将其转为整数。如字符 a 的 ASCII 码是 97。

    综上,Java 数组的数组维度可以是常量、变量、表达式,只要转换为整数即可。

    请留意,有些编程语言则不支持这点,如 C/C++ 语言,只允许数组维度是常量。

    3.2. 数组维度的大小

    数组维度并非没有上限的,如果数值过大,编译时会报错。

    int[] array = new int[6553612431]; // 数组维度过大,编译报错

    此外,数组过大,可能会导致栈溢出。

    4. 访问数组

    Java 中,可以通过在 [] 中指定下标,访问数组元素,下标位置从 0 开始。

    public class ArrayDemo4 {

    public static void main(String[] args) {

    int[] array = {1, 2, 3};

    for (int i = 0; i < array.length; i++) {

    array[i]++;

    System.out.println(String.format("array[%d] = %d", i, array[i]));

    }

    }

    }

    // Output:

    // array[0] = 2

    // array[1] = 3

    // array[2] = 4

    💡 说明

    上面的示例中,从 0 开始,使用下标遍历数组 array 的所有元素,为每个元素值加 1 。

    5. 数组的引用

    Java 中,数组类型是一种引用类型。

    因此,它可以作为引用,被 Java 函数作为函数入参或返回值。

    数组作为函数入参的示例:

    public class ArrayRefDemo {

    private static void fun(int[] array) {

    for (int i : array) {

    System.out.print(i + "\t");

    }

    }

    public static void main(String[] args) {

    int[] array = new int[] {1, 3, 5};

    fun(array);

    }

    }

    // Output:

    // 1 3 5

    数组作为函数返回值的示例:

    public class ArrayRefDemo2 {

    /**

    * 返回一个数组

    */

    private static int[] fun() {

    return new int[] {1, 3, 5};

    }

    public static void main(String[] args) {

    int[] array = fun();

    System.out.println(Arrays.toString(array));

    }

    }

    // Output:

    // [1, 3, 5]

    6. 泛型和数组

    通常,数组和泛型不能很好地结合。你不能实例化具有参数化类型的数组。

    Peel[] peels = new Pell[10]; // 这行代码非法

    Java 中不允许直接创建泛型数组。但是,可以通过创建一个类型擦除的数组,然后转型的方式来创建泛型数组。

    public class GenericArrayDemo {

    static class GenericArray {

    private T[] array;

    public GenericArray(int num) {

    array = (T[]) new Object[num];

    }

    public void put(int index, T item) {

    array[index] = item;

    }

    public T get(int index) { return array[index]; }

    public T[] array() { return array; }

    }

    public static void main(String[] args) {

    GenericArray genericArray = new GenericArray(4);

    genericArray.put(0, 0);

    genericArray.put(1, 1);

    Object[] array = genericArray.array();

    System.out.println(Arrays.deepToString(array));

    }

    }

    // Output:

    // [0, 1, null, null]

    扩展阅读:https://www.cnblogs.com/jiangzhaowei/p/7399522.html

    我认为,对于泛型数组的理解,点到为止即可。实际上,真的需要存储泛型,还是使用容器更合适。

    7. 多维数组

    多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。

    Java 可以支持二维数组、三维数组、四维数组、五维数组。。。

    但是,以正常人的理解能力,一般也就最多能理解三维数组。所以,请不要做反人类的事,去定义过多维度的数组。

    多维数组使用示例:

    public class MultiArrayDemo {

    public static void main(String[] args) {

    Integer[][] a1 = { // 自动装箱

    {1, 2, 3,},

    {4, 5, 6,},

    };

    Double[][][] a2 = { // 自动装箱

    { {1.1, 2.2}, {3.3, 4.4} },

    { {5.5, 6.6}, {7.7, 8.8} },

    { {9.9, 1.2}, {2.3, 3.4} },

    };

    String[][] a3 = {

    {"The", "Quick", "Sly", "Fox"},

    {"Jumped", "Over"},

    {"The", "Lazy", "Brown", "Dog", "and", "friend"},

    };

    System.out.println("a1: " + Arrays.deepToString(a1));

    System.out.println("a2: " + Arrays.deepToString(a2));

    System.out.println("a3: " + Arrays.deepToString(a3));

    }

    }

    // Output:

    // a1: [[1, 2, 3], [4, 5, 6]]

    // a2: [[[1.1, 2.2], [3.3, 4.4]], [[5.5, 6.6], [7.7, 8.8]], [[9.9, 1.2], [2.3, 3.4]]]

    // a3: [[The, Quick, Sly, Fox], [Jumped, Over], [The, Lazy, Brown, Dog, and, friend]]

    8. Arrays 类

    Java 中,提供了一个很有用的数组工具类:Arrays。

    它提供的主要操作有:

    sort - 排序

    binarySearch - 查找

    equals - 比较

    fill - 填充

    asList - 转列表

    hash - 哈希

    toString - 转字符串

    扩展阅读:https://juejin.im/post/5a6ade5c518825733e60acb8

    9. 小结

    4f44727591142d4c2fa9d4a7213eb030.png

    10. 参考资料

    https://juejin.im/post/59cae3de6fb9a00a4551915b

    https://www.cnblogs.com/jiangzhaowei/p/7399522.html

    https://juejin.im/post/5a6ade5c518825733e60acb8

    展开全文
  • 可以使用java.util.Arrays.fill()方法以短数组填充元素。此方法将所需的short值分配给Java中的...演示此的程序如下所示-示例importjava.util.Arrays;publicclassDemo{publicstaticvoidmain(String[]argv)throwsExcep...
  • Java数组

    2021-02-28 12:20:19
    必须声明数组变量,才能在程序中使用数组示例代码: 数组初始化 数组的初始化主要有两种方式: 静态初始化和动态初始化 一、数组静态初始化 二、数组动态初始化 数组引用 Java中通过下标来引用数组元素: ...
  • 以下是一个Java程序,用于线性查找数组中的元素。示例importjava.util.Scanner;publicclassSearchingRecursively{publicstaticbooleansearchArray(int[]myArray,intelement,intsize){if(size==0){returnfalse;}if...
  • 让我们首先创建一个int数组-int[]arr={10,20,30,40,50,60,70,80,90};现在,将数组元素向右移动arraycopy()并正确放置元素,以使它向右移动-System.arraycopy(arr,0,...示例importjava.util.Arrays;publicclassDemo{p...
  • java数组

    2019-09-24 13:17:03
    1.阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照 按引用传递与按值传送数组类型方法参数的最大关键在于: 使用前者时,如果方法中有代码更改了数组元素的...
  • 可以使用java.util.Arrays.binarySearch()方法在数组上执行二进制搜索。如果所需元素的索引在数组中可用,则此...演示此的程序如下所示-示例importjava.util.Arrays;publicclassDemo{publicstaticvoidmain(String[]a...
  • 以下是必需的程序示例importjava.util.Arrays;publicclassTester{publicstaticint[]removeDuplicateElements(intarr[]){intn=arr.length;int[]temp=newint[n];intj=0;for(inti=0;iif(arr[i]!=arr[i+1...
  • Java程序来查找数组相乘再除以n的余数,Java代码如下-示例importjava.util.*;importjava.lang.*;publicclassDemo{publicstaticintremainder(intmy_arr[],intarr_len,intval){intmul_val=1;for(inti=0;imul_val=(mul....
  • 可以使用java.util.Arrays.binarySearch()方法实现对长数组的二进制搜索。如果所需的长元素在数组中可用,则...演示此的程序如下所示-示例importjava.util.Arrays;publicclassDemo{publicstaticvoidmain(String[]ar...
  • 数组示例

    2017-04-09 16:00:00
    然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”。 public class Test{ public static void main(String []args){ String []arr ={"java",...
  • 假设以下是我们的整数集-Setset=newHashSet<>(Arrays.asList(50,100,150,200,400,600,800,1000,1200,1500));现在,将其转换为整数数组-int[]arr=set.stream().mapToInt(Integer::...示例以下是在Java中将Int...
  • 在循环检查中,对每个元素进行I%2运算的结果,如果元素为0,...示例publicclassOddNumbersInAnArray{publicstaticvoidmain(Stringargs[]){int[]myArray={23,93,56,92,39};System.out.println("Evennumbersinthegiv...
  • Java数组习题

    2020-02-18 18:27:03
    下面是这个程序的一个运行示例: 注意:如果一个数出现的次数大于一次,就在输出时使用复数“times“。 本题有两种思路: 1.使用动态数组扩容技术,边输入边存值 import java.util.*; class Demo05_01{ public ...
  • 要查找数组中的第一个非重复数字-构造count数组以将给定数组中每个元素的计数存储为相同长度,且所有元素的初始值为0。将数组中的每个元素与除自身之外的...示例importjava.util.Arrays;publicclassNonRpeatingArray...
  • 以下程序显示了如何从数组中删除负数。示例importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;publicclassTester{publicstaticvoidmain(String[]args){ListobjArray=newArrayList();...
  • 深入理解 Java 数组

    2019-12-16 15:27:07
    本文中的示例代码已归档到:「javacore」 1. 简介 1.1. 数组的特性 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。几乎所有程序设计语言都支持数组数组...
  • java.util.Arrays.sort()方法可用于对Java数组元素的子集进行排序。此方法具有三个参数,即要排序的数组,子集的第一个元素的索引...演示此的程序如下所示-示例importjava.util.Arrays;publicclassDemo{public...
  • 请看以下代码:上述代码可以顺利通过编译,并且输出一个“很...NullPointerArrayExample.java例子:动手动脑:阅读并运行示例,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照。按引用传递与...
  • 可以合并两个排序的数组,以便获得单个结果排序的数组。一个例子如下。Array1=137910Array2=258Mergedarray=123578910演示该程序程序如下。示例publicclassExample{publicstaticvoidmain(String[]args){int[]arr1=...
  • 数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组数组有一维数组和多维数组。 一维数组 1. 一维数组介绍 图解一维数组 ...
  • 之前给大家介绍了java一维数组以及java二维数组,下面的话就来给大家讲一下java多维数组方面的知识。除去一维数组和二维数组之外,Java当中还支持更多维的数组。...下面来直接来看一个示例:假设程序当...
  • Java数组课后作业

    2016-11-06 14:20:00
    阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照。 分析:按引用传递与按值传送数组类型方法参数的最大关键在于:使用前者时,如果方法中有代码更改了数组...
  • Java程序使用数组计算平均值在此程序中,您将学习计算Java中给定数组的平均值。示例:使用数组计算平均值的程序publicclassAverage{publicstaticvoidmain(String[]args){double[]numArray={45.3,67.5,-45.6,20.34,...
  • 程序思路分析:求一个数组中的最大值和最小值,可以设置max和min两个变量,max存储最大值,min存储最小值。max和min被初始化为数组元素的第一个值。然后,遍历数组元素,将max和min与数组元素的每一个值进行比较,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 859
精华内容 343
关键字:

java数组程序示例

java 订阅