黑马程序员技术交流社区

标题: 基础问题! [打印本页]

作者: 黄方    时间: 2012-3-5 13:21
标题: 基础问题!
       byte   int   long   short   char   double  float 是各占多少个字节呀?大小顺序又是怎么样的呀?还有 int  test=‘A’+ 'B'    为什么可以这样表示呀?而char =‘a’+'b'怎么不行啊?求解!
   
作者: djx900    时间: 2012-3-5 13:53
byte--8位,short--16位,int--32位,long--64位,float--32位,double--64位
作者: dangfei    时间: 2012-3-5 14:19
基本类型字节数书上都有,楼上都说的很好,我就不多说了。
至于int  test=‘A’+ 'B'    实现根据ascii码表找到'A','B'对应的整型值后再进行加减的。
char =‘a’+'b' 我试验了,不是不可以,只是'a'+'b'得到的整型值是195对应的char 是Ã,特殊字符打印不出来。
lz可打印System.out.println('('+'$');试试,结果是 L。
作者: wang耀雨    时间: 2012-3-5 15:12
只要是存在计算机上的数据都是二进制数据(视频、图片、声音等),8个二进制数(0和1)组成一个字节(即二进制数据的基本单位是8位),由于 int   long   short   char   double  float和byte(字节)一样都是数据类型,楼主更规范的说法是说各占多少位,位数多所能表现的数据范围就大,楼上已经说过他们各占多少位我就不再一一道来。
还有 int  test=‘A’+ 'B'    为什么可以这样表示呀?而char =‘a’+'b'怎么不行啊?:所谓计算机上的数据都是二进制数据,字符也不例外,在计算机内存中,被计算机收录的每个字符都有其对应的值,例如010..001——A,
011..001——B……这就构成了编码表ASCii,而每个字符所对应的值就是所谓的 ASCii值,所以在 int  test=‘A’+ 'B'中,由于test是int类型的数据是把A、B当做所对应数值来进行运算的;而char =‘a’+'b'之所以不可以这样运算是因为赋值号左边的变量也是字符类型,而字符与字符不具备运算的规则,但是字符都有相连接的规则,“+”既可以用来数值之间的加法运算,又可以用来连接字符与字符,但是char是单个字符的类型,如果必须要‘a’和'b'相+(连接),则左边的数据类型必须是字符串类型的,即相加后的结果是string类型的“ab”;参考毕老师视频0204到0219进制以及转换!忘采纳
作者: wang耀雨    时间: 2012-3-5 18:08
wang耀雨 发表于 2012-3-5 15:12
只要是存在计算机上的数据都是二进制数据(视频、图片、声音等),8个二进制数(0和1)组成一个字节(即二 ...

感谢刘老师鼓励!
作者: 黄方    时间: 2012-3-5 20:02
wang耀雨 发表于 2012-3-5 15:12
只要是存在计算机上的数据都是二进制数据(视频、图片、声音等),8个二进制数(0和1)组成一个字节(即二 ...

谢谢你的回答。我收获很大!呵呵,,,
作者: 种法腾    时间: 2012-3-5 20:24
想问一下,char占位,有的说是2个字节,有说是一个

作者: 种法腾    时间: 2012-3-5 20:24
gbk一个汉字是2位》?utf-8是3位?

作者: 黑马肖凯骏    时间: 2012-3-5 21:01
int  test=‘A’+ 'B'    是转换成数值计算了
char test=‘A’+ 'B'   在对字符进行操作时,+ 这个符号起的是连接符的作用!
作者: 史龙贤    时间: 2012-3-5 21:56
基础中的基础,不行就死记硬背吧!
作者: 王杰    时间: 2012-3-6 00:25
是char test =‘a’+'b'吧, 当然不行了,char是字符型,一个字节,八个位,你把两个八位的字符装在一个八位里是不可以的。
作者: wang耀雨    时间: 2012-3-6 02:08
舞动的心弦 发表于 2012-3-5 20:02
谢谢你的回答。我收获很大!呵呵,,,

哈哈,以前学过7个月的计算机编程都没搞明白,我也是听了毕老师的课恍然大悟才会记得这么清楚的,相信黑马的力量!




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