数据类型转换&运算符

时间:2021-6-12 作者:qvyue

基本数据类型转换

  • boolean类型不可以转换为其他的数据类型
  • 整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
  1. 容量小的类型自动转换为容量大的数据类型 ;数据类型按容量大小排序为:
    byte,short,char->int->long->float->double
    byte,short,char之间不会相互转换,他们三者在计算时首先会转换为int类型
  2. 容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
  3. 有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算
  4. 实数常量(如:1.2)默认为double
  5. 整数常量(如: 123)默认为int
        int i1 = 123;
        double d1 = i1*0.12;
        float f1 = (float)(d1); // 需要加强制转换符
        System.out.println(f1);
        
        byte b1 = 67;  byte b2 = 89;  // byte的最大范围是127,1个字节
        byte b3 = (byte)(b1+b2);  // 系统将转换为int型运算,需要强制转换符
        System.out.println(b3);
        char c1 = '人';  char c2 = '中';
        char c3 = (char)(c1+c2);
        System.out.println(c3);
        
        double d2 = 1e200;
        float f2 = (float)d2; // 会产生溢出  Infinity
        System.out.println(f2);
        
        float f3 = 1.23f;   // 必须加f
        long l1 = 123;
        long l2 = 30000000000l;  // 必须加l
        float f = l1+l2+f3;  // 系统将转换为float型计算
        long l = (long)f;  //  强制转换会舍去小数部分(不是四舍五入)
        int i = 300, j;
        j =100;  // j 为int类型
        System.out.println(j);
        float f1 = 123;
        System.out.println(f1);
        i = i/1000;  // i为int类型,1000为int类型,// 0 
        System.out.println(i);

格式

格式应注意的问题:
  1. 大括号对齐
  2. 遇到{缩进,Tab/Shift+Tab
  3. 程序块之间加空行
  4. 并排语句之间加空格
  5. 运算符两侧加空格
    1.有特定条件(for循环里的除外)
  6. {前面有空格
  7. 成对编程

程序格式的要求

  • 要让别人看得清楚
  • 要让别人看得舒服

自加和自减运算符

示例

public class HelloWorld {
    public static void main(String[] addd) {
        int i1 = 10 , i2 = 20;
        int i = (i2++);
        System.out.print("i=" + i);
        System.out.println("  i2=" + i2);
        i = (++i2);
        System.out.print("i=" + i);
        System.out.println(" i2=" + i2);
        i = (--i1);
        System.out.print("i=" + i);
        System.out.println(" i1=" + i1);
        i = (i1--);
        System.out.print("i=" + i);
        System.out.println(" i =" + i1);    
    }
}

数据类型转换&运算符
结果.png

注意: ++(–)

  • ++(–)
  • 在前时先运算再取值
  • 在后时先取值再运算

逻辑运算符

逻辑运算符
!——逻辑非
& ——逻辑与
| ——逻辑或
^ ——逻辑异或(两个不同即为true)
&& ——短路与
|| ——短路或

a b !a a&b alb a^b a&&b allb
true true false true true false true true
true false false false true true false true
false true true false true true false true
false false true false false false false false

赋值运算符与扩展运算符

  • 赋值运算符(=)
    当“=”两侧数据类型不一致时,可以适用默认类型转换或使用强制类型转换原则进行处理
    long l = 100; int i = (int) l;
  • 注意: 可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围
    byte b = 12; char c = 100;
    (错误示例 X) byte bb = 256; (bb 最大为127) X short s = -32769; (short(2字节)最小值为-32768)
运算符 用法举例 等效的表达式
+= a += b a = a + b
-= a -= b a = a – b
*= a *= b a = a * b
/= a /= b a = a / b
%= a %= b a = a % b
  • “+”除用于算术加法运算外,还用于对字符串进行连接操作
    int id = 800+80;
    String s = “hello”+”world”;

  • “+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行来连接。
    int c = 12;
    System.out.println(“c=” + c);

  • 当进行打印时,无论任何类型都自动转换为字符串进行打印
    System.out.println(c);

表达式
  • 表达式是符合一定语法规则的运算符和操作数的序列
    a
    5.0+a
    (a-b)*c-4
  • 表达式的类型和值
  1. 对表达式中操作数进行运算得到的结果称为表达式的值
  2. 表达式值的数据类型即为表达式的类型
  • 表达式的运算顺序
  1. 应按照运算符的优先级从高到低的顺序进行
  2. 优先级相同的运算符按照事先约定的结合方向进行

三目条件运算符

  • 三目条件运算符,语法格式:
    x ? y : z
  • 其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算结果为表达式y的值,否则整个运算结果为表达式z的值。
  • 举例:
    int score = 80; int x = -100;
    String type = score
    int flag = x > 0 ? 1 : (x == 0 ? 0 : -1); // 从里面往外面算
    System.out.println(” type= ” + type);
    System.out.println(” flag= ” + flag);

type = 及格
flag = -1

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。