三年Java五年模拟—2 算数操作符(2)基础数据类型的转换、强制转换、%求余数

志之所趋,无远弗届,穷山距海,不能限也。

  • 志向所趋,没有不能达到的地方,即使隔着重山,相距江海,也是不能限制的
  • 常有人嘲笑Java基础,各种框架名词,新潮的框架,侃侃而谈,我想说:做好自己,默默前行,打下扎实的基础,方能无远弗届。

在此和Java学习者们,学习、回顾、重温、总结,尽力涵盖知识点,祝你在虚心求学的路上,风雨兼程。

1基础数据类型的强制转换

  • 在适当的时候,Java会将一种数据类型自动转换成另一种。例如,假设我们为某浮点变量赋以一个整数值,编译器会将int自动转换成float。类型转换运算允许我们显式地进行这种类型的转换,或者在不能自动进行转换的时候在强制进行类型转换。–《Java编程思想》
package arithmeticOperators;
/**
 * @author:180285
 * @date: 2018/6/12 18:57
 */
public class BasicTypeConversion {

    public static void main(String[] args) {
        int a = 5;
        double b = 6L;
        //显式强转
        int c = (int) (a+b);
        //隐是转换
        long d = a+b;

        System.out.println("c:" + c);
        System.out.println("d:" + d);
    }
}

Console result:
c:11
d:11.0

再看例子

package arithmeticOperators;

/**
 * @author:180285
 * @date: 2018/6/12 18:57
 */
public class BasicTypeConversion {

    public static void main(String[] args) {
        int a = 10;
        double b = 3;
        int intC = (int)(a/b);
        double doubleC = a/b;

        int intD = (int) (a+b);
        double doubleD = a+b;

        System.out.println("intC:" + intC);
        System.out.println("doubleC:" + doubleC);
        System.out.println("intD:" + intD);
        System.out.println("doubleD:" + doubleD);
    }
}

在代码int intC = (int)(a/b);中,强制转换丢失了小数点之后的精度。

Console resultintC:3
doubleC:3.3333333333333335
intD:13
doubleD:13.0

题目:
(1)在上述程序中,有代码int c = (__) (a+b);填写完成。
(2)int c = (int) (a+b);long d = a+b;同样是类型转换,有什么不同?
答:前者是显式强转,也叫做窄化转换,就是说,将能容纳更大数据信息的类型转换成无法容纳name多信息的类型,视类型范围的限制,可能面临数据丢失的危险(小数、超出类型范围),此时,编译器会强制我们进行类型转换。后者隐式转换,也叫扩展转换,基础数据类型会默认向上转型,新类型肯定能容纳原来的信息,不会造成任何信息的丢失,是安全的。例如int a = 1; long d = a;int类型转long类型,编译器默认向上转型。

4求余数

package arithmeticOperators;

/**
 * @author:180285
 * @date: 2018/6/12 19:29
 */
public class Remainder {

    public static void main(String[] args) {
        //%取余数,又叫取模
        //5除以2,余1
        int i = 5;
        int j = 2;
        System.out.println("求余数:"+ i % j);
    }
}

题目:
(1)求余是几目运算符,答:取余运算符是%是一个双目运算符。
(2)两个整数求余的过程什么,答:java的取余运算规则如下

整数求余规则:
a%b=a-(a/b)*b 
5%3=5-(5/3)*3=2 
5%-3=5-(5/-3)*-3=2 
-5%3=-5-(-5/3)*3=-2 
-5%-3=-5-(-5/-3)*-3=-2 

(3)如果是两个浮点数求余呢?答:浮点数则采用的规则为其实完全符合a%b=a-(a/b)*b规则

浮点数求余规则:
a%b=a-(b*q),这里q=int(a/b) 
5.2%3.1=5.2-1*3.1=2.1 
5.2%-3.1=5.2-(-1)*(-3.1)=2.1 
-5.2%3.1=-5.1-(-1)*3.1=-2.1 
-5.2%-3.1=-5.1-(-1)*(-3.1)=-2.1 

下一篇:三年Java五年模拟—3 算数操作符(3)自增自减、计算BMI习题
上一篇:三年Java五年模拟—1 算数操作符(1)基本的加减乘除运算、Scanner使用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值