str.getBytes 你那输出的是对象你看有变化么?
String str = "123";
byte[] bytes = str.getBytes();
for(int j=0;j<bytes.length;j++){
System.out.print(bytes[j]);
}
String str = "123";
byte[] bytes = str.getBytes();
for(int j=0;j<bytes.length;j++){
System.out.print(bytes[j]);
}
rint直接输出是数组的地址,而非数组内容。
输出内容可以使用Arrays.toStrin()函数。
System.out.println(Arrays.toString("123".getBytes()));
既然你想知道为什么,这里给你补充点C语言的知识,相信你就可以了解些了
C语言中,没有所谓的字符串的概念,在咱们java中的所有字符串都是按照字符数组的方式去存储的
如Java中String str = "I am a boy";
在C中就是char str[11] ={'I',' ','a',‘m’,' ','a',' ','b','o','y' ,''};c[0]='I';
C的特点就是更加关注于底层,即数据在存储区里如何存储,存储的地址,占用多少字节等等,相对于更底层的C语言来说,目前这xie个高级语言更关注与业务逻辑,所以相对的这个底层的东西在高级语言诞生的时候就考虑到,封装起来了,你要看一下java的String类的源码就会了解得,他们一般都是有c语言发展过来的,java就是如此,所以java中也保存了C语言的这个特性,即String类的构造方法里面有一个用数组作为参数的,有的时候你需要对字符也好,文本也罢,做读取写入操作的时候就需要用到getBytes这个方法,像输入输出流拉,上传下载操作等等,适当了解C也不错哦
你的System.out.println("123".getBytes()),输出的是数组的地址,如果你还不明白,看下面
System.out.println("123".getBytes());等价于 Byte[] a="123".getBytes();System.out.println(a);