美文网首页
带你走进Java数组世界

带你走进Java数组世界

作者: 古拉啦啦 | 来源:发表于2019-08-06 21:50 被阅读0次

跟C语言一样,数组在java中也是中重要的数据结构,在Java 语言中提供的数组跟C语言中的相同,但又有点小小的区别,我们小面就会讲到。你可以声明一个数组变量,如 num[100] 来代替直接声明 100 个独立变量 num有的子怒骂num0,num1,....,num99。
本教程将为大家介绍 Java 数组的声明、创建和初始化,并给出其对应的代码。

一、数组的声明和两种定义方式

1, 声明数组变量

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

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

datatype arryRefVar [ ] ;

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

1, 数组的定义:

1, 静态方式

dataType[] arrayRefVar = { };

例如:

int [ ] score = { 90,78,89,94,65};

String [ ] = {"jftr","jiuk","java"};

2, 动态方式

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

dataType[] arrayRefVar = new dataType [size];

例如:

int [ ] score = new int [5];
score[0] = 90;
score[1] = 78;
score[2] = 89;
score[3] = 95;
score[4] = 65;

上面的语法语句有两个功能:

一、使用 dataType[arraySize] 创建了一个数组。

二、把新创建的数组的引用赋值给变量 arrayRefVar。

需要注意的是,数组一旦被定义就无法修改数组的大小

3、数组的使用:

接下来我们来个数组试试Java中的数组。

 public class TestArray {
 public static void main(String[] args) {
  // 数组大小
  int size = 10;
  // 定义数组
  double[] myArry = new double[size];
  myArry[0] = 5.6;
  myArry[1] = 4.5;
  myArry[2] = 3.3;
  myArry[3] = 13.2;
  myArry[4] = 4.0;
  myArry[5] = 34.33;
  myList[6] = 34.0;
  myList[7] = 45.45;
  myList[8] = 99.993;
  myList[9] = 11123;
  // 计算所有元素的总和
  double total = 0;
  for (int i = 0; i < size; i++) {
     total += myArry[i];
  }
  System.out.println("总和为: " + total);
 }
}

下面的图片描绘了数组 myArry。这里 myArry数组里有 10 个 double 元素,它的下标从 0 到 9。


二、遍历数组的三种方式

假如有数组int [ ]count = {1,2,3,4,5,6,7,8,9,1};

则数组的输出方式有如下三种:

1, 数组输出方式1

传统的for循环方式

       for (int i = 0; i < 10; i++){
        System.out.print(count[i]+" ");
    }
    System.out.println();

2, 数组输出方式2

for each 循环

    for (int temp: count){
        System.out.print(temp + " ");
    }
    System.out.println();

3, 数组输出方式3

利用Array类中的toString方法调用Array.toString(a),返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号分开

    System.out.println(Arrays.toString(count));
 }

说明:System.out.println(count);这样是不行的,这样打印是的是数组的首地址。

前面我们有C语言写了一个数字游戏,今天带领大家有java来感受一下。
首先来说一下这个游戏要求:

1, 随机产生4个不相同的数字
2, 玩家开始输入四个数字
3, 如果位置正确且数字正确用A输出
4, 如果数字正确位置不正确用B输出B

如:随机产生的四个数字为: 1 2 3 4
玩家输入的数字为: 1 2 4 6
则提示:2A1B

java代码如下:

class GuessNumber{
public static void main(String[] args){
    //保存原始数字
    int[] org = new int[4];
    //保存用户猜测的数字
    int[] guess = new int[4];

    //产生4个随机数
    Random random = new Random();
    for (int i = 0; i < 4; i++){
        //产生一个随机数
        int temp = random.nextInt(10);

        //判断是否存在
        boolean result = contains(org, temp);

        if (result){
            //确保i对应的位置能够得到一个不重复的数字
            i--;
        }else{
            org[i] = temp;
        }
    }

    //排序
    Arrays.sort(org);

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

    //定义一个扫描仪对象Scanner
    Scanner scanner = new Scanner(System.in);
    //开始游戏
    while(true){
        int countA = 0;
        int countB = 0;

        System.out.print("请输入猜测的数字:");

        for (int i = 0; i < 4;i++){
            guess[i] = scanner.nextInt();
        }

        //判断用户输入
        //1.判断是否存在
        for (int i = 0; i < 4; i++) {
            boolean result =contains(guess, org[i]);
            if(result == true){
                //数字存在
                //判断位置是否相同
                int index = indexOf(guess, org[i]);

                             if (index == i){
                    //数字和位置都相同
                    countA++;
                } else{
                    countB++;
                }
            }
        }

        if (countA == 4){
            System.out.println("恭喜全对!");
            break;
        }else{
            System.out.println(countA+"A"+countB+"B");
        }
    }
}

/**
 * 在一个数组里面查找某个对象的索引值
 * @param val 数组
 * @param obj 查找的对象
 * @return 索引值
 */
public static int indexOf(int[] val, int obj){
    for (int i = 0; i < val.length; i++){
        if (val[i] == obj){
            return i;
        }
    }
    return -1;
}

//自己写一个方法实现 判断某个数组里面是否包含某个值
public static boolean contains(int[] val, int obj){
    for (int i = 0; i < val.length; i++){
        if (val[i] == obj){
            //重复了
            return true;
        }
    }
    return false;
 }
}

运行结果如下:


寄语读者

从C到java是有一个过度阶段的,一个面向过程,一个面向对象,是有区别的,现在还没找到学习java的同学,希望你们不要焦急,只要你在一步一个脚印地走,总会找到学习的方法,学好java 的,祝所有读者每天都能快乐地学习!好了,小编今天的分享就到此了,我们明天见!

相关文章

  • 带你走进Java数组世界

    跟C语言一样,数组在java中也是中重要的数据结构,在Java 语言中提供的数组跟C语言中的相同,但又有点小小的区...

  • 从JAVA内存到垃圾回收,带你深入理解JVM

    ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​【摘要】今天带你走进JVM的世界。 学过Java程...

  • 带你走进楷书世界

    楷书四大家是对书法史上以楷书著称的四位书法家的合称,也称四大楷书。他们分别指是:唐朝欧阳询(欧体)、唐朝颜真卿(颜...

  • 带你走进冰雪世界

    昨天哈尔滨下了一场大雪,可能你会说,这对于冰城(столица ледяных фонарей )哈尔滨来说不稀奇...

  • 带你走进《诗经》世界

    西方有古谚,“恐惧源于未知”。戴尔·卡耐基在《人性的弱点》里说,“恐惧大都因为无知和不确定感而产生”。 中学课本上...

  • 带你走进烘焙世界

    最近我听得最多的一句话就是一入烘焙深似海!闺蜜自从入了一烤箱,就开启了甜蜜烘焙恋爱模式,然而我很幸运地成为她的"私...

  • 12个Java小程序带你走进Java大世界

    java学习关注,java免费学习群:479749726 如果是刚接触或者刚学习java,练习一些基础的算法还是必...

  • DIY果冻蜡烛杯——一杯一小世界

    DIY手工蜡烛,果冻蜡烛杯带你走进趣味世界,一杯一心情,果冻蜡烛杯带你走进神奇的手工世界,一起品味乐趣,制作记录下...

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • Java基础(六) | 熟悉异常处理机制

    Java异常处理机制,带你走进程序员的完美世界。 Error类程序无法处理的错误,其超出了应用程序的控制和处理能力...

网友评论

      本文标题:带你走进Java数组世界

      本文链接:https://www.haomeiwen.com/subject/zufgdctx.html