黑马程序员 总结---> java中的两个运算问题
2013-01-24 14:26
330 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
第一节 一元算数运算
先看下面一段简单的代码:
运行之后会显示如下信息:
![](http://img.my.csdn.net/uploads/201212/23/1356248600_8681.jpg)
其中,“ byte b = 6; ”是合法的,而“ byte b1 = -b; ”是一个问题。一元运算符“ - ”的结果是具有int类型的,而代码中试图把一个int变量分配给一个byte变量,那么,编译将会运行失败。那么要是将“ byte b1 = -b; ”改成“ long b1 = -b; ”,也就是说改成数据类型宽于int类型的如long、float、double等类型,就可以编译通过。
这虽然是一个小问题,但是细节决定成败,我学习Java的时间不太长,但是觉得把基础打好,是十分有必要的,尤其是细节的东西一定要注意。因为我觉得Java里好多都是这种细节问题。基础打好了,以后深入学习才能手到擒来。其实这和我们做人是一样的,如果一个人在细节上总是出问题,那么这个人是无法成就大事的。
第二节 高效运算
计算机让我们减少了很多繁重复杂而重复枯燥的事情,那么,如何让计算机更高效的运算呢?
下面是一道测试题:如何最有效率的算出2和8的乘积?
看了视频都知道可以使用位运算进行计算,为什么这是最高效的呢?
大家都知道计算机底层是二进制的运算,位运算同样也是二进制的运算方式,由于和底层运算方式相同,所以是十分高效的,下面是我在DOS命令行中测试的结果:
源代码:
测试结果:
![](http://img.my.csdn.net/uploads/201301/24/1359008787_2220.png)
结果还是有一定效果的,(可能是本人电脑配置不太高啊,运行速度还没走在时代的最前沿吧,嘿嘿)
希望这篇文章能够带给像我一样的新手一些启示,希望多多批评指正,谢谢!!!
第一节 一元算数运算
先看下面一段简单的代码:
class TestOpr { public static void main(String [] args) { byte b = 6; byte b1 = -b; } }
运行之后会显示如下信息:
![](http://img.my.csdn.net/uploads/201212/23/1356248600_8681.jpg)
其中,“ 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 + "次循环。"); } }
测试结果:
![](http://img.my.csdn.net/uploads/201301/24/1359008787_2220.png)
结果还是有一定效果的,(可能是本人电脑配置不太高啊,运行速度还没走在时代的最前沿吧,嘿嘿)
希望这篇文章能够带给像我一样的新手一些启示,希望多多批评指正,谢谢!!!
相关文章推荐
- 黑马程序员 总结---> java中注释
- Java学习总结(一)—— >Java环境变量的配置,DOS窗口的带包编译,Jdk1.5的两个新特性(可变参数和增强的for循环)
- 黑马程序员——java基础知识篇——>异常总结
- 黑马程序员:Java基础总结----接口 Collection<E>&iterator
- 黑马程序员:Java基础总结----子接口 List<E>及其实现类
- Java软件低级错误(十二):Java的移位(>>和>>>)运算问题
- 黑马程序员:Java基础总结----子接口 set<E>及其实现类
- 黑马程序员 总结---> 传递问题
- 黑马程序员 浅谈---> JAVA指针问题
- 黑马程序员 JAVA基础<二> 面向对象之封装 继承 多态
- 达内第15天培训知识总结,关于大数字的精确浮点运算以及linkList<>用法
- 黑马程序员 Java基础<十>---> IO流<1>
- Java笔记3 多线程<1>线程概述、多线程的创建、多线程的安全问题、静态同步函数的锁、死锁
- 黑马程序员-Java语言基础– Map<K,V> 第16-17天
- 黑马程序员——java基础知识篇——>集合
- Java总结<一>
- 黑马程序员:Java基础总结----字符字节转换流&system.in&out
- java中的移位运算符:<<,>>,>>>总结
- 黑马程序员 Java基础 ---> 集合(下)
- 黑马程序员:Java基础总结----编码&解码流