黑马程序员技术交流社区

标题: 整型数组,为什么还能这样存储? [打印本页]

作者: ts5210ts    时间: 2016-9-17 23:42
标题: 整型数组,为什么还能这样存储?
int[]arr={'A','1',2,3,4,5,'a'};数组这么定义,为什么没有错误?

作者: 18088086590    时间: 2016-9-17 23:50
这里的字符是对应码表值得,查一下码表就知道了,一般要记住'A','a'和'1'对应的码表值
public static void main(String[] args) {

                int[]arr={'A','1',2,3,4,5,'a'};
               
                for (int i : arr) {
                        System.out.print(i+" ");   //65 49 2 3 4 5 97
                       
                }
        }
作者: 18088086590    时间: 2016-9-17 23:54
哈哈哈,求回复,是否解决

nice
作者: ts5210ts    时间: 2016-9-17 23:56
18088086590 发表于 2016-9-17 23:50
这里的字符是对应码表值得,查一下码表就知道了,一般要记住'A','a'和'1'对应的码表值
public static void ma ...

赞,可是数组不是存储相同数据类型的吗,怎么字符和整型一块存了呢?
作者: 细听风语为梧桐    时间: 2016-9-17 23:57
在码表中 2  , 3  , 4  , 5 都有对应的符号,所以会自动转换的
作者: 18088086590    时间: 2016-9-18 00:05
因为之前你的接收数组是int,里面的字符就回去找对应的码表值,如果你用char[ ] 接收,录入了整数,是识别不了的

char[] arr={'A','1','2','3','4',5,'a'};//A 1 2 3 4  a
                for (char c: arr) {
                        System.out.print(c+" ");
作者: 18088086590    时间: 2016-9-18 00:06
18088086590 发表于 2016-9-18 00:05
因为之前你的接收数组是int,里面的字符就回去找对应的码表值,如果你用char[ ] 接收,录入了整数,是识别不了 ...

这里5对应的位置就会用?表示
作者: Daveweil    时间: 2016-9-18 00:06
这里面是类型提升啊char类型提升为int型
作者: Daveweil    时间: 2016-9-18 00:07
这里面是类型提升啊char类型提升为int型,如果你想知道一个char类型的码表值,加上0打印出来就可以了
作者: Daveweil    时间: 2016-9-18 00:08
这里面是类型自动提升啊char类型提升为int型,如果你想知道一个char类型的码表值,加上0打印出来就可以了
作者: Daveweil    时间: 2016-9-18 00:10
自动类型提升,byte char short 在运算和一些其他场景会自动类型提升为int,你这里存的是A字符的ASCII码表中的数值
作者: jiubaK    时间: 2016-9-18 00:13
自动类型提升
作者: ts5210ts    时间: 2016-9-18 00:20
jiubaK 发表于 2016-9-18 00:13
自动类型提升

存储数据也会提升类型?说的不是参与运算的时候吗?
作者: taozhihui    时间: 2016-9-18 00:27
我感觉要报错的啊
作者: ts5210ts    时间: 2016-9-18 00:31
taozhihui 发表于 2016-9-18 00:27
我感觉要报错的啊

试试就知道了
作者: Array先生    时间: 2016-9-18 09:30
有类型的提升
作者: 开心的流泪者    时间: 2016-9-18 10:53
一个int型转String类型 ,直接加一个+“”;
char转int型 ,是+0;
作者: litianji2016    时间: 2016-9-18 11:10
'A'是char类型,2是int类型,在你这么写的时候这个char类型自动向上转型了,变成了int,'A'==65的结果是true!你这个数组自动转型后是这样的int[] arr={65,49,2,3,4,5,97}
作者: ts5210ts    时间: 2016-9-20 00:59
litianji2016 发表于 2016-9-18 11:10
'A'是char类型,2是int类型,在你这么写的时候这个char类型自动向上转型了,变成了int,'A'==65的结果是true ...

谢谢  我再想想吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2