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. Valgrind 发现程序的内存问题

    参考 : [1]. 应用 Valgrind 发现 Linux 程序的内存问题. http://www.ibm.com/developerworks/cn/linux/l-cn-valgrind/ [2 ...

  2. Log.properties配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  3. Linux进阶文件系统管理之RAID

    RAID 1.引言 RAID全称Redundant Arrays of Inexpensive Disks / Redundant Arrays of Independent Disks,即独立冗余磁 ...

  4. [转载]Python 资源大全

    原文链接:Python 资源大全 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex  ...

  5. MVC中的@符号

    1: @if (@Model.DepositList != null) { } 2: @if (@Model.DepositList != null) { foreach (Deposit_ViewM ...

  6. pom.xml详解

    setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件:而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和li ...

  7. rt—移植笔记1

    将rtt源码往stm32f407移植的时候,源码串口打印引脚设置有误,以下是源码引脚配置. 以下是原理图 可见配置有误.

  8. 【zZ】OpenCV HOGDescriptor 参数图解

    http://blog.csdn.net/raodotcong/article/details/6239431

  9. HttpClient接口测试之会话保持

    HttpClient接口测试之会话保持     HttpClient4.X自带会话保持功能,使用同一个HttpClient未关闭的连接即可保持登陆会话,如果多个HttpClient想要使用一个登陆会话 ...

  10. ubuntu 配置nginx+php+mysql 遇到的一些问题

    /* 公司内网打算配置一台ubuntu为主机的测试服务器.刚好手头有一个昂达的主机,装的windows 声音又大,还不如直接装ubuntu .声音又小,还占用资源少. */ 刚开始安装php5 结果提 ...