java7

不能(直接)把一个大的数据类型赋值给小的类型
强制类型转换,但会造成数据的溢出(导致数据的不正确性)

    int a = 200;
    byte b = 5;       //范围-128到127
    b = (byte)a;   //将a类型强制转换成b类型,括号中写出最终转换成的类型,但超出b的数据类型所控制的范围会造成数据的溢出(数据的不正确性)
    System.out.println(b);
【-56】

注意:

    byte b = 3;
    short c = 5;
    int g = 4;
    double w = 6;
    float e = 7;
    boolean t = true;
    char h = 'a';    //A---65,a----97

1.未参与运算:最前面不需要加转换后的数据类型

  b = (byte)c;   //将c的数据类型short强制转换成b的数据类型byte
  System.out.println(b);
【5】

2.参与运算时,两端的数据类型要保持一致

    short b1 = b+t;
    System.out.println(b1);
【error】

3.如果为同为数值型,则自动将小的数据类型转变为大的类型,但是jvm在运算(相加)时的
最小数据量类型为int类型(输入的数据类型小于int时,会自动给你转成int)

    double w1 = (double)b+w;      //b,w同为数值型,但w的类型位数大于b的类型位数,
 【  自动类型转换】                                                //所以将b的数据类型转换为w的数据类型
    System.out.println(w1);
 【9】

short c1= c+(short)b;   //b,c同为数值型,但c的类型位数大于b的类型位数,本应将b的类型byte转换
                                                                //成c的类型short,但是由于jvm识别的最小数据类型为int,所以最后强制转换为int d = (int)c+(int)b;
    System.out.println(c1);/
 【error】
    int c1= (int)c+(int)b;
    System.out.println(c1);
   【8】
如果真的想转换成short类型,得这样写:
   short c2 = (short)(b+c)
    System.out.println(c2);
【8】
OR
  b = (short)(b+c);
    System.out.println(b);
【8】                 *数据类型+新的变量名称    OR       原变量名称*                                             
   System.out.println(h+b);//字符和整数小数类型可以相加减
【100】
原文地址:https://www.cnblogs.com/-zero/p/10201095.html