java基本类型转换规则

 
1、基本数据类型的转换是指由系统根据转换规则自动完成,不需要程序员明确地声明不同数据类型之间的转换。
    转换在编译器执行,而不是等到运行期再执行。
2、基本数据类型的转换在赋值、方法调用和算术运算三种情况下都会发生。在进行方法调用时,数据类型指调用方法向被调用方法传递参数,
    即实参和型参类型不一致,从而发生了类型转换。
3、赋值和方法调用的基本数据类型转换规则一样。合法的基本类型转换原则是指从取值范围窄的类型向取值范围宽的类型转换,
    如果是从取值范围宽的类型向取值范围窄的类型转换,则会产生编译错误。
4、具体规则:
(1)布尔型和其它基本数据类型之间不能相互转换;
(2)byte型可以转换为short、int、、long、float和double;
(3)short可转换为int、long、float和double;
(4)char可转换为int、long、float和double;
(5)int可转换为long、float和double;
(6)long可转换为float和double;
(7)float可转换为double; 也就是说,只能有取值窄的范围向宽范围转换,反之则不行。
5、Java中无后缀数字型,文字型共有两种默认类型,无小数点的整数型文字值、默认类型为整型int;
    带有小数点的浮点数型文字值,默认类型为双精度double。
6、在赋值语句中,默认类型为整型的无小数点整数型文字值作为右操作数时,
     可以赋值给取值范围比整型小的变量,前提是文字值对于的实际数值在变量类型的取值范围内。
     如:byte a=1;(正确)     int a=3000000000;超出整数范围,编译出错。当然 float a=1;是正确的
     而默认类型为双精度的带有小数点的浮点数型文字值只能赋值给双精度型变量,不能赋值给单精度型变量。
     如:float a=1.0;(错误)      应该写成float a=1.0f ; 
7、基本数据类型的转换在算术运算情况下,正对单操作数运算符和双操作数运算符的转换规则是不一样的。
   但操作数运算符算术运算时基本转换规则如下:
(1)当运算符为取正运算符(+)。取负运算符(-)或按位取反运算符(~)时,如果操作数为byte、char或short,则先被转换为int,再参与运算。
    如:byte a=0; byte b=a+1;第二句 编译出错,应该写成 byte b=(byte)(a+1);
(2)当运算符为自动递增运算符(++)或自动递减运算符(--)时,如果操作数为byte,short或char,则不用先被转换为int,
      而是直接参与算术运算,且运算结果类型也不变。
      如: byte a=0; byte b=a++; (正确)
      注意: int i=0; i=i++;i=i++;最终i=0;与C不同;
(3)如果操作数为int或long,则无论运算符为何种单操作数运算符,均不发生类型转换,且运算结果类型也不变。
   双操作数运算符算术运算时基本转换规则如下:
    (1)如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。
    (2)如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。
    (3)如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。
    (4)如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。
        如:byte a=0; byte b=a+1; 第二句编译出错,a+1最终类型为int型
    (5)如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。
 
 
 

java 类型转换(摘自网络)的更多相关文章

  1. java类型转换

    //java类型转换public class Demo2 { public static void main(String[] args){ int num1 = 55; int num2 =77; ...

  2. JAVA多线程下载网络文件

    JAVA多线程下载网络文件,开启多个线程,同时下载网络文件.   源码如下:(点击下载 MultiThreadDownload.java) import java.io.InputStream; im ...

  3. Android:控件WebView显示网页 -摘自网络

    WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要 ...

  4. 8张图带你理解Java整个只是网络(转载)

    8张图带你理解Java整个只是网络 一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符 ...

  5. Java学习之网络编程实例

    转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...

  6. 分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)

    原文:分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要) Java InputStream读取数据问题 ======== ...

  7. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

  8. C# 中的内存管理,摘自网络

    C#编程的一个优点是程序员不需要关心具体的内存管理,尤其是垃圾收集器会处理所有的内存清理工作.虽然不必手工管理内存,但如果要编写高质量的代码,还是要理解后台发生的事情,理解C#的内存管理.本文主要介绍 ...

  9. java socket 多线程网络传输多个文件

    http://blog.csdn.net/njchenyi/article/details/9072845 java socket 多线程网络传输多个文件 2013-06-10 21:26 3596人 ...

  10. Java进阶之网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

随机推荐

  1. Chapter 2 Open Book——36

    "That was awful," he groaned. "They all looked exactly the same. You're lucky you had ...

  2. linux 发送带附件的邮件

    一.mutt命令 1.安装 yum -y install mutt 2.使用 echo "mail content"|mutt -s "mail title"  ...

  3. [SQL基础教程] 2-2 算数运算符和比较运算符

    [SQL基础教程] 2-2 算数运算符和比较运算符 算数运算符 四则运算 运算符 含义 + - * / SELECT col_1*2 AS col_new FROM table; 注意 所有包含NUL ...

  4. linode更换Linux内核教程(独家)

    Linode服务器性价比高,最低套餐2G内存,享受每月2TB流量,机房40Gb带宽,每月供需10美元(Linode优惠链接).Linode用户创建vps服务器后,可在后台自定义Linux系统版本,包括 ...

  5. Elasticsearch 快照和恢复

    摘要: 在Elasticsearch中的可以创建快照,它创建单个索引或整个群集到一个远程的存储库中.在以前的版本中,系统只支持共享存储的快照创建,最新的版本可以通过插件支持更多的方式.在执行快照操作前 ...

  6. 如何提高maven的下载速度:享受一下mvn时飞的感觉

      找到 maven老家 conf/settings.xml,  在<mirrors>标签内增加阿里云maven镜像 最终结果见下面:  <mirrors>       < ...

  7. linux基础概念

    linux的哲学思想 一切皆文件:把几乎所有资源,包括硬件设备都组织为文件格式 由众多单一目的小程序组成:一个程序只实现一个功能,通过组合小程序完成复杂任务 尽量避免跟用户交互:实现脚本编程,以自动完 ...

  8. css3实现进度条

    HTML 结构很简单,但不是 Single Element: <div class="spinner"><i></i></div> ...

  9. Busy Beavers(暴力模拟)

    由于排版问题,题目无法显示,可以到 http://7xjob4.com1.z0.glb.clouddn.com/e4872a15819b6bf9d1e5250bacc2a30b  查看 题目大意是有只 ...

  10. java 方法学习

    手写随机代码 public class suiji{private static final int N = 200;private static final int LEFT = 40;privat ...