楼主看看我的代码的注释,希望能解决楼主的问题.纯手巧,希望能仔细观看.并给一点意见- public class Test1 {
- /**
- * @description 解释说明楼主的问题
- * @param args
- */
- public static void main(String[] args) {
- int[] arr = {22,33,4,555,6,77};
- char[] arr1 = {'2','3','0','5','6','7'};
- String s = String.valueOf(arr);
- String s1 = String.valueOf(arr1);
-
- /*解释:,下面的这句输出的是一个字符串类型的地址值
- * 因为String.valueOf并没有重载的String.valueOf(int[] arr)
- * 而此处用的是String.valueOf(Object obj)的重载形式
- * 所以传递的时候,会传递arr的地址值传递给s
- * 而这个s就在常量池中创建了一个地址值,s就指向了这个常量中的地址值
- */
- System.out.println(s);//输出的是[I@37748ba4
-
- /*解释:下面的这句话输出的是字符串,因为String.valueOf()的重载形式有一个valueOf(char[] data)
- * 所以会将字符型数组转换成字符串.因此,输出的是字符类型
- */
- System.out.println(s1);//输出的是字符串数组
-
- /*
- *经过验证 s是否是String类型,得出s确实为字符串类型,字符串的内容是字符串类型"地址值"
- */
- if (s instanceof String) {
- System.out.println("如果输出此句,那么s为一个字符串");
- System.out.println(s.toString());
- }
- }
- /**
- * 最后说明一下,String.valueOf()的重载形式
- * valueOf(boolean b)
- * valueOf(char c)
- * valueOf(char[] data)
- * valueOf(char[] data, int offset, int count)
- * valueOf(double d)
- * valueOf(float f)
- * valueOf(int i)
- * valueOf(long l)
- * valueOf(Object obj)
- */
- }
复制代码 |