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. CODE[VS]-寻找子串位置-字符串处理-天梯青铜

    题目描述 Description 给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置. 输入描述 Input Description 仅一行包含两个字符串a和b 输出描述 ...

  2. ios下iphone的plus下

    二维码能被长按识别,但因为某种原因识别区域发生了偏移 meta标签定义了默认缩放为一倍就能识别,不定义就不能识别. 网上是这么说的: meta标签定义了默认缩放为一倍就能识别,不定义就不能识别.于是我 ...

  3. PHP在浏览器上跟踪调试的方法以及使用ChromePhp、FirePHP的简单介绍

    之前用ThinkPHP时发现有个 trace 函数可以跟踪调试,感觉很有意思,网上搜索了下类似的东西,发现了 ChromePhp ,以前没想过这样来调试 PHP 程序,感觉非常方便,很有用. Thin ...

  4. CodeForces 709C Letters Cyclic Shift

    贪心. 肯定是两个$a$之间的那些字符都$-1$,没有$a$就全部$-1$.如果输入的串全是$a$,那么把最后一个$a$改成$z$. #pragma comment(linker, "/ST ...

  5. 图像处理_imgproc笔记(1)

    图像处理_滤波器 (1)图像的平滑处理 图像的平滑也称模糊,平滑处理需要一个滤波器,最常用的滤波器就是线性滤波器,线性滤波器的输出像素值是g(x,y),是输入像素值是  f(x,y)的加权和:    ...

  6. java 调用打印机 打印服务

    import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import javax ...

  7. java实现的简单词法分析器

    一个简单的词法分析器 词法分析(Lexical Analysis) 是编译的第一阶段.词法分析器的主要任务是读入源程序的输入字符.将他们组成词素,生成并输出一个词法单元序列,每个词法单元对应一个词素. ...

  8. github上前100的ios项目

    1. AFNetworking    作者是 NSHipster 的博主, iOS 开发界的大神级人物, 毕业于卡内基·梅隆大学, 开源了许多牛逼的项目, 这个便是其中之一, AFNetworking ...

  9. Uploadify 上传后的文件删除,上传队列无法更新问题

    1. 定义一个上传限制数量 var uploadLimit = 3; 2. 点击页面的删除图片成功后,将uploadLimit++操作 3. 通过uploadify的settings方式重置上传限制数 ...

  10. Jquery 获取上传文件大小

    <input type="file" id="file1" /> <script> var size = $("#file1& ...