美文网首页
Java学习之两个运算问题

Java学习之两个运算问题

作者: 玉圣 | 来源:发表于2017-05-26 16:38 被阅读3次

一、一元算数运算

先看下面一段简单的代码:

class TestOpr  
{  
      public static void main(String [] args)  
      {  
        byte b = 6;  
        byte b1 = -b;  
      }  
}  

运行之后会显示如下信息:

Paste_Image.png

其中,“ byte b = 6; ”是合法的,而“ byte b1 = -b; ”是一个问题。一元运算符“ - ”的结果是具有int类型的,而代码中试图把一个int变量分配给一个byte变量,那么,编译将会运行失败。那么要是将“ byte b1 = -b; ”改成“ long b1 = -b; ”,也就是说改成数据类型宽于int类型的如long、float、double等类型,就可以编译通过。

这虽然是一个小问题,但是细节决定成败,我学习Java的时间不太长,但是觉得把基础打好,是十分有必要的,尤其是细节的东西一定要注意。因为我觉得Java里好多都是这种细节问题。基础打好了,以后深入学习才能手到擒来。其实这和我们做人是一样的,如果一个人在细节上总是出问题,那么这个人是无法成就大事的。

二、高效运算

计算机让我们减少了很多繁重复杂而重复枯燥的事情,那么,如何让计算机更高效的运算呢?
下面是一道测试题:如何最有效率的算出2和8的乘积?
看了视频都知道可以使用位运算进行计算,为什么这是最高效的呢?
大家都知道计算机底层是二进制的运算,位运算同样也是二进制的运算方式,由于和底层运算方式相同,所以是十分高效的,下面是我在DOS命令行中测试的结果:

源代码:

//测试哪种方式是高效运算  
class Benchmark1  
{  
    public static void main(String [] args)  
    {  
        long startTime = System.currentTimeMillis(); //System类中的currentTimeMillis()方法获取当前时间(毫秒)  
        long endTime = startTime + 60000; // 1 分钟 = 60 000 毫秒  
        long ind = 0; //计数器及元数据  
        System.out.println(startTime + "," + endTime);  
        while(true)  
        {  
            int m = 2 << 3;  
            long now = System.currentTimeMillis();  
            if(now > endTime){ //判断是否一分钟,并结束循环  
                break;  
            }  
            ind++;  
        }  
        System.out.println("计算机在一分钟内运行了" + ind + "次循环。");  
    }  
}
class Benchmark2  
{  
    public static void main(String [] args)  
    {  
        long startTime = System.currentTimeMillis(); //System类中的currentTimeMillis()方法获取当前时间(毫秒)  
        long endTime = startTime + 60000; // 1 分钟 = 60 000 毫秒  
        long inde = 0; //计数器及元数据  
        System.out.println(startTime + "," + endTime);  
        while(true)  
        {  
            int n = 2 * 8;  
            long now = System.currentTimeMillis();  
            if(now > endTime){ //判断是否一分钟,并结束循环  
                break;  
            }  
            inde++;  
        }  
        System.out.println("计算机在一分钟内运行了" + inde + "次循环。");  
    }  
}

测试结果:

Paste_Image.png

结果还是有一定效果的,(可能是本人电脑配置不太高啊,运行速度还没走在时代的最前沿吧,嘿嘿)
希望这篇文章能够带给像我一样的新手一些启示,希望多多批评指正,谢谢!!!

相关文章

  • Java学习之两个运算问题

    一、一元算数运算 先看下面一段简单的代码: 运行之后会显示如下信息: 其中,“ byte b = 6; ”是合法的...

  • Java判断与关系运算

    一、Java关系运算的种类 1、概述 Java还有提供了对两个量之间的关系进行比较的运算,称为关系运算。关系运算的...

  • Java运算符

    Java当中的运算符和我们数学当中加减乘除之类的运算符号相同,在学习Java运算符之前,我们首先来要学习表达...

  • 常用的运算符

    常用的运算符 @(Java学习) 一、何为运算符? 运算符是一种“功能”符号,用来通知Java进行相关的运算。Ja...

  • Java编程基础(3)

    微信公众号学习Javagywalke学习 Java基础知识点:运算符 (operator) 计算机的最基本的用途之...

  • java 取反学习

    问题 最近学习java 位操作,取反运算遇到了问题。 c = 2 取反,10变01, 结果应该为1,但运行结果为-...

  • 计算机基础之运算符(20190131)

    java之运算符(20190131) 1. 算数运算符 2. 逻辑运算符 3. 位运算符 4. 三元运算符

  • Lintcode简答题篇章

    language:java A + B 问题DES:给出两个整数a和b, 求他们的和, 但不能使用+等数学运算符。...

  • 05-Java运算符

    学习视频:Java运算符 一、运算符 定义:用来处理四则运算的符号符号:+(加) -(减) *(乘) /(除) %...

  • Java语言逻辑运算

    一、Java逻辑运算的种类 1、概述 逻辑运算是在关系运算基础之上的运算,能处理更加复杂的问题。逻辑运算的结果是t...

网友评论

      本文标题:Java学习之两个运算问题

      本文链接:https://www.haomeiwen.com/subject/gssxfxtx.html