浅谈java中byte short基本数据类型

首先,我们来看下这个程序:

不难发现,这个程序在结构上是没有错误的,可是运行结果又是如何呢?

运行结果是错误的

byte类型数据是不能直接相加的,相加会自动类型会转换int型,因此这里应该使用强制转换。

修改后的程序


运行结果正确

再比如:

byte a=1;

byte b=2;

byte c;

c=a+b; //这样是计算不出c,是错误的

c=a+1; //这样也是不能计算c的

c=64+1; //为什么这样就能计算c,在Java中这是什么原理啊?

首先你要明确一点byte类型表示一个字节8位,用来表示一些基本字符,int是长度为32位的整形数。当你在Java中给一个byte类型数据初始化时,你可以用字符,也可以用整数,但是这个整数必须要在-128和127之间(因为byte是8位),它会将这个数转化为一个字符然后存放起来,因此你的前两行代码是没有问题的。第四行就开始有问题了:a,b都是byte型,他们相加会先自动转换为int然后相加,当然相加的结果也是int型的,但是你要将一个int型的数字赋给一个byte型的c显然是要强制转换的,因此Java会报编译错误,第五行是同样的道理。第六行有点特殊了,请注意,64+1编译器会自动当做65来处理,这句和c=65效果是一样的,由于65是在【-128,127】这个区间之间的,因此赋值当然不会出错啦。

在java中整数默认都上int型,意思就是你写一个1那么1就默认为int型。

浮点数默认为double型,同上

c=a+b; //byte+byte=int

c=a+1; //byte+int(1为int型上面解释了)=int

c=64+1; //其实int+int=(?)就不好说了,这要考虑范围,java编译器帮你把类型转换为你想要的类型,这里就转换为你想要的byte了。

但下面这样就不行了

c=1+127//出错,超出byte范围

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 9,805评论 1 44
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,917评论 18 399
  • “大壮他爹,老五家要借咱们那匹枣红去配种,你给拉过去,跟着点。说好只配他家那匹小母马的,可别让他多配。咱们枣红这几...
    相处以墨阅读 2,915评论 2 1
  • 第二章 重逢 一大清早,叶青青躺在床上脑子乱乱的,回想着刚才做的梦,轻轻...
    夜色中的小游魂阅读 3,025评论 2 1
  • 前言 java 常见的单例模式有三种: 懒汉: getInstance的时候实例化; 饿汉: 引用AA类的时候实例...
    叽哩叽哩鸡阅读 3,630评论 0 3