微博看到一张图片,学过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中的
StringBuffer
的append
方法:
public StringBuffer append(int i)
Appends the string representation of the int argument to this sequence.
//把int参数以字符串形式追加到这个序列
append意思是追加,append方法中的参数可以是int类型的