一张图片包含的JAVA知识点

一张图片包含的JAVA知识点_第1张图片
103033yyp19pc44dqyedqq.jpg

微博看到一张图片,学过JAVA,很容易就算出来了,发现这个代码虽然短,但是包含知识点挺多的

先把代码写上注释

package Demo1;
public class Demo {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] arr =new int[]{8,2,1,0,3};  //存放手机号码的组成元素
        int[] index =new int[]{2,0,3,2,4,0,1,3,2,3,3};//存放arr[]数组的下标
        String tel="";
           for(int i:index){     //遍历数组,取index[]数组中每一个元素的值
            tel+=arr[i];
        }
          System.out.println("联系方式"+tel);
    }

}

知识点

  • 数组:数组从0开始,所以index[]中的最大值4
  • 数组遍历:for each,翻译为,对于循环变量依次取数组每个元素的值,格式为for(声明变量:数组的名字)

疑问

arr[]int类型的数组,里面的元素为int类型,tel为String类型,但是在for循环中,进行了这样的操作tel+=arr[i](等价于tel=tel+arr[i]),两种不同的数据类型怎么可以相加呢?

解决

String并不是基本数据类型,而是一个类,并且是一个final类,final类是不可以修改的,只能用,不能继承.还有arr[i]中的元素为int类型,但是为什么在这个程序可以实现tel+=arr[i]呢?

实际上是String 类中特有的 + 运算符重载的作用(是编译器的做的手脚)

编译器就会把tel+=arr[i]就会变成tel=(new StringBuffer).append(tel).append(arr[i]).toString

JDK API中的StringBufferappend方法:
public StringBuffer append(int i)
Appends the string representation of the int argument to this sequence.
//把int参数以字符串形式追加到这个序列

append意思是追加,append方法中的参数可以是int类型的

你可能感兴趣的:(一张图片包含的JAVA知识点)