java基本数据类型之间赋值与运算归纳_第1页
java基本数据类型之间赋值与运算归纳_第2页
java基本数据类型之间赋值与运算归纳_第3页
java基本数据类型之间赋值与运算归纳_第4页
java基本数据类型之间赋值与运算归纳_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java基本数据类型之间赋值与运算归纳 前言:面对“byte b1=3;byte b2=7;byte b=b1+b2;”报错,而“int i1=3;int i2=7;int i=i1+i2;”不报错,进行了深入探究,从而引 申出 java基本类型之间赋值与运算操作的规律。通过自己制作的图 例分析,达到对不同基本数据类型之间的赋值与运算结果的正确判 断。不会再出现事实而非的回答,知道运算底层。好了,言归正传。 先送给大家今天我看到的一句话,觉得很有意义 如果你自己都模棱两可的话,不要指望 Java虚拟机会明白你的意思。 一、 认识赋值运算符。 赋值使用操作符“=” 。它的意思是“取右边的值(即右值) ,把 它复制给左边(即左值) ”。右值可以是任何常数、变量或者表达式 (只要它能生成一个值就行) 。但左值必须是一个明确的,已命名的 变量。也就是说,必须有一个物理空间可以存储等号右边的值。 分类 基本数据类型 与 类数据类型 的不同 1、 对基本数据类型的赋值是很简单的。基本数据存储了实际的 数值,而并非指向一个对象的引用,所以在为其赋值的时候,是 直接将一个地方的内容复制到了另一个地方。 2、 但是在为对象“赋值”的时候,情况却放生了变化。对一个 对象进行操作,我们真正操作的是对对象的引用。-这种特殊 的现象通常称作“别名现象” ,是 Java操作对象的一种基本方式。 -摘抄自Thinking In JavaP39 二、 Java中 byte、short 和 char类型运算的细节。 Java中涉及 byte、short 和 char类型的运算操作首先会把这 些值转换为 int类型,然后对 int类型值进行运算,最后得到 int 类型的结果。因此,如果把两个 byte类型值相加,最后会得到一个 int类型的结果。如果需要得到 byte类型结果,必须将这个 int类 型的结果显式转换为 byte类型。 Java虚拟机中没有 byte类型! Java虚拟机对基本类型的操作基本都是在栈上完成的(这个是 可信的,因为不是我说的) 。我们知道,Java 在处理一个语句的时 候,首先它会先把用到的操作数压到栈中,然后再从栈中弹出进行 计算,最后将结果再压回到栈中。任何对 byte的操作也会如此。因 此,Java 对 byte类型操作之前会将其压入到栈中。实际上,Java 压入栈的不是 byte类型,而是一个标准的 int类型(32 位,byte 是 8位) ,也就是说,Java 虚拟机将我们短小可爱的 byte类型压入 栈之前,会先把它拉长成 int类型再压栈。不过事实上在压栈之前 也是 int类型.这样一来,我们不管是在栈里还是从栈里弹出的 byte类型实际上都是用 int的长度存储的。这也就是我为什么说, Java虚拟机中没有 byte类型。因为它们都被变成了 int。 -摘抄自网络文章int 与 byte的区别 下面是我做的一些测试 三、 测试一数字值赋值给变量。 格式例如 Xxx x = 数值;/检验是否正确。 变量数值 byte short int long float double byte X X X short X X X int X X X long X X float X double 说明:例如 byte b = 14;14 是 int类型,能成功,对应表格就打钩。 附带说明: 1、 检测数值是否超出变量范围。 2、 右值是常数 是可以确定,编译器可判断数值大小。 四、 检测二变量赋值给变量。 格式例如 Xxx 变量 B=变量 A; /检验是否正确。 变量 B变量 A byte short int long float double byte X X X X X short X X X X int X X X long X X float X double 说明:例如 int i = 14; byte b = i; /如果通过编译,就在对应的表格打钩。 附带说明: 1、 右值为变量 不确定数值大小, 只能简单判断空间的大小。 根据已知理论,结合两个图片做一些练习: 例 1: byte b = 4; b = 3+7; /编译通过,因为“3+7”在编译时直接变为 int的“10” ,根据表 /一,可行。 例 2: byte b1 = 3; byte b2 = 7; byte b = b1+b2; /不能通过编译。因为根据原理二, “b1+b2”的 /运算操作使其结果为 int类型。 /根据表二,int 类型的变量不能赋值给 byte变量。 例 3: byte b1 = 3; byte b2 = 7; int i = b1+b2; /能通过编译。因为根据原理二, “b1+b2”的运 /算操作使其结果为 int类型。 /根据表二,int 类型的变量能赋值给 int变量。 例 4: int i1 = Integer.MAX_VALUE; int i2 = 2; int I = i1+i2; /能通过编译。因为根据原理二, “i1+i2”的运 /算操作使其结果为 int类型。 /根据表二,int 类型的变量能赋值给 int变量。 例 5: short s1=1; s1 = s1+1; /不能通过编译。因为根据原理二, “s1+1”的运算 /操作使其结果为 int类型。 /根据表二,int 类型的变量不能赋值给 short变量。 例 6: short s1=1; s1 = 1+1; /能通过编译。因为根据原理二, “1+1”的运算操作 /使其结果为 int类型。 /根据表一,int 类型的数值能赋值给 short变量。 例 7: short s1=1; s1 += 1; /* 能通过编译。这里“+=”运算符与“+”运算符原理一样,先检查右 边,右边不符合对其强转。 “s1=1”为一次运算;“s1+=1”为一次 运算;“s1=s1+1”为两次运算。所以例题中是将“1”强

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论