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

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

  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. 如何使用Jquery直接导入记事本的内容

    直接上代码 <!DOCTYPE html> <html> <head> <title> </title> </head> < ...

  2. 玩转 lua in Redis

    一.引言 Redis学了一段时间了,基本的东西都没问题了.从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当中,来扩展其功 ...

  3. Confluence 6 选择一个外部数据库

    注意: 选择一个合适的数据库通常需要花费很多时间.同时 Confluence 自带的 XML 数据备份和恢复功能通常也不适合合并和备份有大量数据的数据库.如果你想在系统运行后进行数据合并,你通常需要使 ...

  4. (一)python 数据模型

    1.通过实现特殊方法,自定义类型可以表现的跟内置类型一样: 如下代码,实现len, getitem,可使自定义类型表现得如同列表一样. import collections from random i ...

  5. Java与C++&C语言的个人看法----异同点(A)

    日期:2018.7.30 星期一 博客期:004 第四期的博客我来说一下自己对Java的看法以及它与C++有什么异同之处! 先说不同之处吧!Java应该说是更面向对象一点,它的Java包里类可以通过用 ...

  6. day14 迭代器 生成器 面向过程思想

    "" 迭代器 什么是迭代器(iterator) 器指的某种工具, 迭代指的是更新换代的过程,例如应用程序的版本更新从1.0 变成 1.1 再1.2 迭代的目的是要根据上一个结果,产 ...

  7. 浅谈FastJson的TypeReference用法

    简单描述:看同事提交的代码,发现有一行代码 似曾相识,但却朦朦胧胧,ε=(´ο`*)))唉很明显自己没掌握呗,于是乎,就百度了一下 干货:对进行泛型的反序列化,使用TypeReference可以明确的 ...

  8. Metasploit

    1.启动Metasploit 声明:本次渗透测试的主机是我自己在自己的攻击主机上搭建的另一个操作系统,为了真实性设置了常见的IP地址,如有重合但绝对不是任何实体公司或者单位的IP地址. 所以不承担任何 ...

  9. lightoj 1282 取对数的操作

    /* 前三位 len=log10n^k(乘积的长度) len=klog10n n^k=x*10^(len-1) x=n^k/10^(len-1) log10x = k*log10n - (len-1) ...

  10. Python集合(set)

    Python中的集合同数学中的集合概念类似,也是用于保存不重复的元素.他有可变集合(set),和不可变集合(frozenset);可变集合(set)是无序的可变的. 创建集合 直接使用{}创建 set ...