zoukankan      html  css  js  c++  java
  • 从头认识java-2.2 算术操作符

    这一章节来聊一下算术操作符

    1.自动转换结果类型。

    package com.ray.ch01;
    
    public class Test {
    
    	public static void main(String[] args) {
    		int a = 2, b = 3;
    		int c = a / b;
    		int d = b / a;
    		System.out.println(c);
    		System.out.println(d);
    	}
    }
    

    看上面的代码,b/a结果是1.5,明显是float类型,但是由于d是int,因此直接转换成int,而且在转换的过程中直接去掉小数部分。


    2.表达式里面的变量或者常量自动转型,而且是向右转型,往能够容纳更大数据的类型转换。

    转型方向:byte->shot(char)->int->long>float->double

    package com.ray.ch01;
    
    public class Test {
    
    	public static void main(String[] args) {
    		byte a = 2, b = 3;
    		int c = a / b;
    		int d = b / a;
    		// a=c+d;//只能向上转换,不能向下转换,这里报错
    		System.out.println(c);
    		System.out.println(d);
    	}
    }
    

    从代码可以看到,d=b/a没有问题,但是a=c+d确实报错,这就是类型转换的问题。


    3.一元加与一元减

    一元减:就是把数值取反。例如-(+1)=-1,-(-1)=1

    一元加:只是把类型提升为int,对于大于int类型的数据不起作用。

    下面是代码例子:

    package com.ray.ch01;
    
    public class Test {
    
    	public static void main(String[] args) {
    		byte a = 2;
    
    		double c = 2.1;
    
    		int b = 1 * -a;//等价于 int b = 1*(-a)
    
    		double d = 2 * -c;
    
    		System.out.println(getType(+a));
    		System.out.println(getType(+d));
    
    		System.out.println(b);
    		System.out.println(d);
    	}
    
    	public static String getType(Object o) {
    		return o.getClass().toString();
    	}
    }
    

    输出:

    class java.lang.Integer
    class java.lang.Double
    -2
    -4.2

    从上面的例子我们可以看到,1*-a这个在编译器里面是成立的,因此我们为了可读性,一般会写成1*(-a)


    总结:这一章节我们讨论了算术操作符的三个注意点。


    这一章节就到这里,谢谢。

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

    目录



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    模块系统
    控制结构
    基本语法
    Go-技篇第一 技巧杂烩
    微服务的4个设计原则和19个解决方案
    kcp-go源码解析
    windows.go
    服务端跨域处理 Cors
    Snowflake 全局唯一Id 生成
    面试?或许你应该这样
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944486.html
Copyright © 2011-2022 走看看