--------------------------------------------------------------------------------------------------

★★自动(隐式、默认)类型转换与强制(显式)类型转换★★

  1) boolean类型不参与转换
  2) 默认转换
    A:从小到大
    B:byte,short,char --» int --» long --» float --» double
    C:byte,short,char之间不相互转换,直接转成int类型参与运算。
  3) 强制转换
    A:从大到小
    B:可能会有精度的损失,一般不建议这样使用。
    C:格式:
      目标数据类型 变量名 = (目标数据类型) (被转换的数据);

★★表达式的式值★★

int a = 10;

int b = 20;

int c = (a = b);   //赋值式本身也是表达式,所以它也有式值!!!

--------------------------------------------------------------------------------------------------

大家都知道,在进行运算时,Java会隐式的自动进行类型转化。那么有哪些情况会进行转化呢?总结如下:

(一)算术运算符

1) 单目运算符:+(取正)、-(取负)、 ++(自增1)、 --(自减1)

a) +(取正)、-(取负)

    当操作数是byte,short,char时,会自动转化为int类型;返回结果为int。

    当操作数是int,long时,不转化,原来是啥类型,还是啥类型。

b) ++(自增1)、 --(自减1)

    不管操作数是啥类型,不转化。

2) 双目运算符:+、 -、 *、 /、 %(取余)

    当两个操作数中没有long类型时,两个操作数中非int类型会先自动转换为int类型,再参与运算,返回结果为int;

    当两个操作数中含有long类型时,两个操作数中非long类型会自动转换为long类型,再参与运算,返回结果为long;

(二)位运算符

1)  &(按位与)、|(按位或)、^(按位异或)

    当两个操作数中没有long类型时,两个操作数中非int类型会先自动转换为int类型,再参与运算,返回结果为int;

    当两个操作数中含有long类型时,两个操作数中非long类型会自动转换为long类型,再参与运算,返回结果为long;

2)  ~(按位非)

    当操作数是byte,short,char时,会自动转化为int类型;返回结果为int。

    当操作数是int,long时,不转化,原来是啥类型,还是啥类型。

3)  << (带符号左移)、 >>(带符号右移)、 >>> (无符号右移)

    当操作数是byte,short,char时,会自动转化为int类型;返回结果为int。

    当操作数是int,long时,不转化,原来是啥类型,还是啥类型。

(三)赋值运算符

1) 基本赋值运算符:=

    a) 变量 = 变量:小赋大,自动转;大赋小,不自动转换;

    b) 变量 = 常量:不自动类型转换

2) 扩展赋值运算符:+=、-=、*=、/=、%=

    这里需要特别说明一下,扩展赋值运算符隐含了强制类型转换,即: ※※ s += 1  等价于  s = (s的数据类型)(s + 1) ※※

★★总结★★

※除了自增和自减不进行转化外,其它情况都是无long型时,所有非int类型转成int类型;有long类型时,都转成long类型(简称:运算中无long,int称大王。。。)※

Java中byte、short、char、int、long运算时自动类型转化问题的更多相关文章

  1. 【转】java中byte数组与int类型的转换(两种方式)----不错

    原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ...

  2. java乱码详解(java中byte与char的转换)

    转自:http://hi.baidu.com/%C6%F3%D2%B5%BC%D2%D4%B0/blog/item/825a4858d6248e8b810a181a.html   java byte与 ...

  3. Java中基本数据类型byte,short,char,int,long,float,double 取值范围

    部分内容转自:java 彻底理解 byte char short int float long double 首先说byte: 这段是摘自jdk中 Byte.java中的源代码: /** * A co ...

  4. [转载] java中byte数组与int,long,short间的转换

    文章转载自http://blog.csdn.net/leetcworks/article/details/7390731 package com.util; /** * * <ul> * ...

  5. java中byte数组与int,long,short间的转换

    http://blog.csdn.net/leetcworks/article/details/7390731 package com.util; /** * * <ul> * <l ...

  6. Java 中byte 与 char 的相互转换 Java基础 但是很重要

    char转化为byte: public static byte[] charToByte(char c) {        byte[] b = new byte[2];        b[0] = ...

  7. java中byte数组与int类型的转换(两种方式)

    http://blog.csdn.net/z69183787/article/details/38564219 http://blog.csdn.net/z69183787/article/detai ...

  8. Java 中 byte、byte 数组和 int、long 之间的转换

    Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) x; ...

  9. java中String和char的区别

    首先来看一下Java的数据类型.Java 包括两种数据类型: 1.原始数据类型(primitive data type):byte,short, char, int, long,float,doubl ...

随机推荐

  1. php如何实现图片点击下载,并保存本地?-----本例子为二维码的生成图片,并支持点击下载

    ### 今天因为工作需要,完成了一个二维码的生成图片,并支持点击下载的 ### 控制器文件,相关代码 // 生成二维码 $url = action('Apih5\\VersionController@ ...

  2. ID过滤靓号写法(PHP和Nodejs版本)

    1 前言 例如某APP的用户ID,需要按照一定规则把靓号先存取来,然后慢慢按要求释放靓号 2 代码 PHP版本如下: function genUserId(){ $id = ""; ...

  3. Django 笔记(六)mysql增删改查

    注:增删改查表数据在 views.py 内 添加表数据: 删表数据:  改表数据:  查表数据: 常用的查询方法: 常用的查询条件: 相当于SQL语句中的where语句后面的条件 语法:字段名__规则

  4. Codeforces Educational Codeforces Round 57 题解

    传送门 Div 2的比赛,前四题还有那么多人过,应该是SB题,就不讲了. 这场比赛一堆计数题,很舒服.(虽然我没打) E. The Top Scorer 其实这题也不难,不知道为什么这么少人过. 考虑 ...

  5. swift 学习- 23 -- 扩展

    // 扩展 就是为一个已有的 类, 结构体, 枚举, 或者 协议类型添加新功能, 这包括在没有权限获取 原始代码的情况下 扩展类型的能力 (即 逆向建模), 扩展和 OC 中的分类类似, (与 OC ...

  6. Confluence 6 隐藏人员目录

    人员目录提供了你 Confluence 中所有用户的列表. 如果你希望禁用人员目录,请在你应用程序命令行中的 Configuring System Properties 进行设置. 希望为匿名用户禁用 ...

  7. Confluence 6 用户宏示例 - Color and Size

    这个示例定义了如何向你宏中传递参数.我们将会创建一个字体样式宏,在这个宏中有 2 个参数,允许用户在这 2 个参数中指定宏中包含的字体的颜色大小. Macro name stylish Visibil ...

  8. Confluence 6 用户目录图例 - 和 Jira 连接到 Crowd

      上面的图:Confluence, JIRA 和其他应用程序连接到 Crowd 作为用户管理. https://www.cwiki.us/display/CONF6EN/User+Managemen ...

  9. Linux磁盘与文件系统管理笔记

    ### Linux磁盘与文件系统管理 linux 最传统的文件系统格式是EXT2,centos7 默认文件系统是xfs(日志式文件系统) 磁盘的组成: 盘片 机械手臂 主轴马达 (机械硬盘) 磁盘格式 ...

  10. django-admin的源码流程

    一.admin的源码流程 首先可以确定的是:路由关系一定对应一个视图函数 a.当点击运行的时候,会先找到每一个app中的admin.py文件,并执行 b.执行urls.py admin.site是什么 ...