1.

突然间发现自己忘了关于自增自减运算符放在变量前后的区别是什么了?

于是乎,我查了资料。

如果只对自变量进行加1或减1的时候,放在前面和后面都是没有区别的。

但是,如果自增自减运算符使用在需要赋值给其他变量或与其他表达式进行计算时,那么就要注意了,因为这个时候自增自减运算符放在前面和后面就是有区别的了。

从图中可以很明显的看见,当进行赋值运算时,当运算符放在变量之后,是先取变量,然后在对变量进行加一或者减一的操作;当运算符放在变量之前的时候,是先对变量进行加一减一的操作,然后再取变量的值。

现在,经过这么一查,顿时对这个问题又加深了印象。

2.

用最有效率的方法计算出2*16等于几。

基于我浅薄的知识基础,第一眼看到这个问题,我真的是不明白,明明直接乘不就可以了么,难道JAVA中还有其他的运算可以计算2*16,。

于是经过我查阅资料,我了解到:

在计算机中,位运算的效率是最高的。所以要想找出最有效率的方法,应该从位运算入手。

Java的位运算提供了左移‘<<’,右移‘>>’和无符号右移‘>>>’运算符,a<<b,即a乘以2的b次方。所以2*16就写成了2<<4;位运算直接对数据进行二进制移位运算,而乘法运算要先在计算机中进行相应的转换,然后进行计算才能得到正确的结果。

综上所述,采用2<<4位运算才是最有效率的。

3.

为了证明第二个问题的正确性,我想知道一个程序运行的时间,于是乎,我就又上网查,

据了解:

“在程序的开头有一个变量记录起始时间,比如说,start = System.currentTimeMillis(),最后一行用一个变量记录结束时候的时间,比如说,end = System.currentTimeMillis(),两者相减即可,结果的单位是毫秒。

System.nanoTime();貌似精度更高吧。。实际测试System.currentTimeMillis()精度是16ms。。nanoTime是1-2ms” ,用这个方法,就可以得到程序运行的时间了,当然,我又发现了一个问题,就是,程序每次运行的时间都不一样,我猜测可能 是由于硬件或者是什么特殊的原因导致的。

4.

&是按位 与 运算,&&是逻辑运算符

5.

这在C++中很明显是对的,但是,在Java中,这样是编译不成功的。那么,为什么呢?

Java中默认的整数类型是int型,对于不同类型的数值进行计算时,结果总是转换为精度最高的数据类型,因此将计算结果赋值给变量时,这个变量的精度不能低于参加计算的精度最高的数据类型,否则就会发生编译错误。

16.10.18学到的Java知识的更多相关文章

  1. 16.10.17学到的Java知识

    1. 例:3-2.6==0.4的值是什么?可能乍一看,感觉是返回TRUE,因为3-2.6=0.4,0.4==0.4:所以返回TRUE. 然而,上面分析在JAVA中是错的. 由于浮点数的运算在JAVA中 ...

  2. 16.10.16学到的JAVA知识

    1. 每个字节就是八位,所以每个字节的取值范围是  -128~127,它可以保存一个英文字符,包括字母,数字和英文标点.而汉字的的数量很多,一个字节没法把所有的汉字表达出来,所以汉字就是用两个字节来存 ...

  3. 从学习“单例模式”学到的Java知识:双重检查锁和延迟初始化

    一切真是有缘,上午刚刚看完单例模式,还在为其中的代码块同步而兴奋,下午就遇见这篇文章:双重检查锁定与延迟初始化.我一看,文章开头语出惊人,说这是一种错误的优化,我说,难道上午学的东西下午就过时了吗?仔 ...

  4. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...

  5. Java的课后作业——18.10.18

    日期:2018.10.18 星期四 博客期:020 小试验任务: 我就发一下代码好了!!! package test1; import java.util.Scanner; public class ...

  6. [java面试]逻辑推理6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?java实现

    题目: 6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少? 10 = 6 + 4         4 18 = 10 + 8        4 + 4  32 = 18 + 14 ...

  7. 即学即会 Java 程序设计基础视频教程(100课整)无水印版

    课程总共包含100个课时,总授课长达27多个小时,内容覆盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟通过本套视频的学习,学员能够快速的掌握java编程语言,成为java高手. 课程目录:课时1 ...

  8. WEBLOGIC 11G (10.3.6) windows PSU 升级10.3.6.0.171017(Java 反序列化漏洞升级)

    10.3.6版本的weblogic需要补丁到10.3.6.0.171017(2017年10月份的补丁,Java 反序列化漏洞升级),oracle官方建议至少打上2017年10月份补丁. 一.查看版本 ...

  9. 对于最近的一些日常总结by520(17.10.18)

    ---天天考试,各种题型都有,学到了很多新的知识,也发现了自己的许多不足---1.首先,自己的搜索需要加强,特别是广搜,10.18的T1裸广搜没有做对.2.数学的思维和一些逻辑问题需要加强,然后就是要 ...

随机推荐

  1. JS获取文本值

    var closeBtn=document.getElementById("close_btn"): closeBtn.innerHTML即是文本值,如果要的是数字parseInt ...

  2. onethink上传图片(资源)和预览

    直接上干货 不废话了 普通上传:  onthink框架 后台已经有图片和文件上传功能 controller里只需: public function addPicture(){ /* 调用文件上传组件上 ...

  3. js面向对象的实现(example 二)

    //这个方法和上篇文章(js面向对象的实现(example 一))中的方法类似,但是更为简洁 //通过函数赋值的方式来构造对象 //同样通过闭包的方式来封装对象及内部变量 (function () { ...

  4. Cordova 打包 Android release app 过程详解

    Cordova 打包 Android release app 过程详解 时间 -- :: SegmentFault 原文 https://segmentfault.com/a/119000000517 ...

  5. MS - 1 - 把二元查找树转变成排序的双向链表

    ## 1. 把二元查找树转变成排序的双向链表 ## ### 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. ### 要求不能创建任何新的结点,只调整指针的指向. 10       ...

  6. NHibernate系列文章二十二:NHibernate查询之HQL查询(附程序下载)

    摘要 NHibernate提供了多种查询方式,最早的HQL语言查询.Criteria查询和SQL Query,到NHibernate 3.0的Linq NHibernate,NHIbernate 4. ...

  7. NPOI操作Excel导入DataTable中

    using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.Data; using System.IO; using NPOI.X ...

  8. 获取iPhone 联系人列表,并且根据分析得到的姓名首字母进行排序

    获取手机联系人以iOS9为分界点,大家都知道到了iOS9很多方法都更新了,好多接口都弃用,被新的接口代替.这Demo种有新旧两个接口,使用前判断当前iOS版本. 下面是Demo连接地址:Github的 ...

  9. Hive集成HBase;安装pig

    Hive集成HBase 配置 将hive的lib/中的HBase.jar包用实际安装的Hbase的jar包替换掉 cd /opt/hive/lib/ ls hbase-0.94.2*  rm -rf ...

  10. python猜数脚本(电脑猜测)(二分法)

    # coding=utf-8# 猜数# 记录猜数的过程import randomcom_result=[]  #存放电脑结果,数组com_count=0 #存放电脑猜测次数ran=random.ran ...