黑马程序员 总结---> java中的两个运算问题

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------


第一节   一元算数运算

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

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

 

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

 

其中,“ 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 + "次循环。");
	}
}


测试结果:

                  

结果还是有一定效果的,(可能是本人电脑配置不太高啊,运行速度还没走在时代的最前沿吧,嘿嘿)


希望这篇文章能够带给像我一样的新手一些启示,希望多多批评指正,谢谢!!!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值