自学Java30

58 阅读2分钟

引言

  • 在记录自己自学java过程中,首先声明关于学习顺序可能并不很科学,即使我也是通过一些公开的资料来进行学习,但不会是完全无基础的教学,更像是比对着python(本人平时编程使用的是python)比较实现方法的异同学习,请酌情参考学习,有理解不对的地方欢迎指正。

java-数组操作 1

遍历数组

  • 前面讲for循环的时候我们已经讲过了如何使用for和for each循环来遍历数组,此处不再赘述,主要介绍如何不使用循环遍历直接打印数组变量
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] ns = { 1, 1, 2, 3, 5, 8 };
        System.out.println(Arrays.toString(ns));
    }
}

关于Arrays.toString()

  • 作用:方便地输出数组。
  • 这个方法是是用来将数组转换成String类型输出的,入参可以是long,float,double,int,boolean,byte,object型的数组。
  • 那么如果去掉Arrays,直接使用ns.toString()
public class Main {
    public static void main(String[] args) {
        int[] ns = { 1, 1, 2, 3, 5, 8 };
        System.out.println(ns.toString());
    }
}

  • 得到的是数组在JVM中的引用地址,其实直接打印也会是这样的结果

  • 在搜索这个方法的用法时候,看到了很多介绍该方法源码的,个人感觉还比较简单就贴出来展示一下吧,底层实现还是用的for循环语句,只是一个简单的封装罢了(注释为参考文章中本来就有的,感觉解释得也比较清楚,所以就没有继续补充,有些用法虽然还没写道但是跟python中用法差距不大,当前看不懂的可以后续学习后回头来看)
/**
*@author:肖佳嘉
*
*/
 * public static String toString(int[] a)
 * public static void sort(int[] a)
 * public static int binarySearch(int[] a,int key)
 * 
 * public static String toString(int[] a) {
   if (a == null)  //如果传入的数组是null
    return "null";  //返回null
   int iMax = a.length - 1;  //iMax最大索引
   if (iMax == -1)  //如果数组中没有元素
    return "[]";  //返回[]
 
   StringBuilder b = new StringBuilder(); //线程不安全,效率高
   b.append('[');  //将[添加到字符串缓冲区中
   for (int i = 0; ; i++) {  //遍历数组,判断语句没有写默认是true
    b.append(a[i]);  //把第一个元素添加进字符串缓冲区
    if (i == iMax)  //如果索引等于了最大索引值
     return b.append(']').toString(); //将]添加到字符串缓冲区,在转换成字符串并返回
    b.append(", ");  //如果不等于最大索引就将, 添加到缓冲区
   }
 }

参考文章