数组

174 阅读2分钟

嵌套循环

  • 格式

    外层循环{
        内层循环{
        
        }
    }
    
    for (int i =0 ;i < 9 ;i++){
                for (int j =0;j<9;j++){
                    System.out.println((i+1)+"*"+(j+1));
                    //内层次数=外层次数*内层的次数
                }
            }
    
  • 关键是执行顺序,外层循环执行一次,内层循环执行一圈

    • 1、几重循环看的是循环嵌套的层级,而不是循环的个数;
    • 2、在语法上循环嵌套的层次是可以无限的,但是在现实开发当中,最多达到三重循环;嵌套层次过多会导致程序流程控制力度下降,算法可读性降低;
    • 3、嵌套循环的关键,在于搞清楚循环执行的顺序。外层循环执行1次,内层循环执行1圈;内层循环可以访问外层循环的循环控制变量;外层不能访问内层;
    • 4、循环控制变量命名,最外层的用i,第二层用j,第三层用k,依次类推,这是“约定俗成的规范”;同层循环可以使用同命的循环控制变量;
    • 5、break只能跳出本层循环
    for (int i = 0; i < 10; i++){
       for(int j = 0; j < 5; j++){
       System.out.println("第" + i + "次外层,第" + j + "次内层循环语句");//次数 = 外层的次数 * 内层的次数
       }
    }
    

数组

  • 集合:把一组元素批量放在一起,进行集中合并操作。
  • 数组:是引用数据类型, 集合中一种结构,且是最简单原始的一种。几乎所有的编程语言,在语法设计的时候直接自带数组。

数据在结构上的特点

  • 只能存放同一数据类型的元素;
  • 所有元素是存放在连续内存地址空间的;
  • 数据空间大小一旦确定,不可更改(不能加也不能减)。

数据申明的语法

数据类型[] 变量名; 这里的变量名就是数组的名字 -- 标准 数据类型 变量名[]; 这是Java为照顾C程序员早期提供的兼容语法 --非标准

数据类型[] 数据名  ={数据1,数据2,...,数据n}
  • 数组初始化语法(一)

    • 已知要放入数组的元素个数和值是多少
     int[] score = {12,23,35,47,58};
     double[] rainFall = {123.4,56,78.98};
     String[] names ={"zhang3","li4","wang5","zhao6"};
    
  • 数组初始化语法(二)

    • 只知道要放入数组的元素个数
    int[]  ages = new int[10];
    //默认放上初始值  int初始值为0
    //这里的10和5,我们称为"数组的长度"
     int[] ages = new int[10];
     double[] heights = new double[5];
     String[] nameArray = new String[10];
     System.out.println(nameArray[3]);
    
  • 两种语法区别:

    • 采用第二种初始化语法的时候,数组中的每个元素都会被自动初始化。

      • 其中:如果元素是基本数据类型,那么赋初始值0 int的就是0, doule/float就是0.0 char就是ASCII码 为0的字符 boolean就是false
      • 如果元素是引用数据类型,那么赋初始值null

操作数组中的元素

  • 语法: 数组名[下标]

    • 下标 相当于数组元素在数组中的编号。这个编号无需我们指定,而是数组在生成的时候就自带了的,英文"index",数组的下标都是从0开始的,然后到 数组长度 - 1。

    • 我们完全可以把 数组名[下标] 这种语法 当成是一个变量来使用,可以取出它的值,也可以给它赋值。

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

数组异常

如果在访问数组元素的时候没有正确指定下标,那么编译不会报错,

但运行时会报错(ArrayIndexOutofBoundsException - 数组下标越界异常)。

异常一旦发生,我们又没有学习使用异常处理机制,那么我们的程序会在这句报异常的代码处中断掉。

所以,大家在处理数组下标的时候一定要做好控制。

为了对最大下标进行良好的控制,Java中的数组提供了一个叫做length的属性,可以获取该数组的长度。

经验: 在循环操作数组元素的时候,循环结束的条件不要写常量, 写成"数组.length"

   System.out.println(scores.length);
   System.out.println(heights.length);

字符串类型转字符类型

  • 字符串的toCharArray方法,可以把一个字符串转成一个char[],然后可以利用数组语法,依次访问操作里面的每一个字符。

     char[] array = 变量名.toCharArray();//定义string的变量名
     String str = scan.next();
     char[] array = str.toCharArray();
    

    \