A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
class Demo18_DataType {
        public static void main(String[] args) {
                char c1 = 3;
                char c2 = 4;
                char c3 = 5;
                char c4 = 6;
       
                System.out.println(c1);
                System.out.println(c2);
                System.out.println(c3);
                System.out.println(c4);
        }
}
在Editplus中JDK_7u72运行结果如附件1的截图, 视频中讲课的运行结果如附件2.
问题:附件1的运行结果为什么和附件2的不一样?

1我自己的运行结果.png (3.29 KB, 下载次数: 35)

附件1

附件1

2老师视频的运行结果.png (1.12 KB, 下载次数: 37)

附件2

附件2

17 个回复

倒序浏览
机器编码不同
回复 使用道具 举报
就是编码不同吧。我试过了,也是不行。
我打印的结果是 四个方括号



回复 使用道具 举报
我知道了 你一定是在eclipse之类的开发工具里运行的
如果你在dos命令行里运行的话肯定没问题。
你可以去试试。
回复 使用道具 举报
机器编码不同
回复 使用道具 举报
xieyangxuejun 来自手机 中级黑马 2016-2-18 12:07:15
地板
指定下字符编码~~
回复 使用道具 举报

直接写的常数,1,2,3之类的,系统默认为int类型
你将int类型值赋给char,由于char实际也是int类型数,但显示时,会将该数值作为坐标,在ascll码表中查找对应字符
如果你直接给char c1="1";直接给的字符,它内部存储为0x31,但输出时还是"1",
但如果你给的是 char c =1;它存储0x01,打印时,以1为坐标查找ascll码表,就会查到❤了
你去翻翻ascll码表就知道那几个符号对应的坐标了
回复 使用道具 举报
ascll码表中并不是没有个位数都可以输出的。
回复 使用道具 举报
可以打印出来。你用EditPlus 3,我试了,可以的
回复 使用道具 举报
这个是因为个人电脑系统的问题吧    我有同学输出的是4个“?”
回复 使用道具 举报
系统默认的运算数据类型是int类型的;你的char c1 = 3;
系统默认为你将int基本数据类型强行赋给char字符类型,由于char在java中占两个字节,实际也可以看作是int类型数,在运算时系统会在ascll码表中查找对应字符,也就得到了黑桃,红桃,方片,梅花;详情可以参照ASCLL码表;
回复 使用道具 举报
3 4 5 要加引号的   '3'
回复 使用道具 举报
机器编码不同 我打印出来 什么也不显示 不用在意
回复 使用道具 举报
编码不同 把文件保存为ANSI编码,再重试一下,我经常遇到,我用的是notepa++
回复 使用道具 举报
用的编码不同而已
回复 使用道具 举报
首先你在c1 c2.....初始化赋值的时候,你用char类型接受的int数,会被自动提升为int类型,而显示不同应该是用的读取数据的码表的不同,所以对应的码表显示出来的结果就不一样
回复 使用道具 举报
你用的是char型的数据类型接受的 3,4,5,6   这几个整型数,系统会把这几个整数转为对应的char型对象再赋值,每个版本的unicode码不同,得到的结果也不同
回复 使用道具 举报
这个是美国标准ASCII编码表,机器操作系统没出错的话就是你发的那个图!
我正缺着技术分呢!

标准美国ASCII编码表.jpg (703.54 KB, 下载次数: 25)

标准美国ASCII编码表.jpg
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马