Java初学者非常容易忽视或者不知道的小知识
Q. 为什么 -0/3 结果是 0,而 -0.0/3.0 结果是 -0.0?(注意后边的结果0带负号)
A. 在Java里,整数是用补码表示的。在补码中0只有一种表示方法。另一方面,浮点数则是用 IEEE 标准表示的, 对于0有两种表示方法, 0 和 -0。
Q.当 a b 都是基本类型变量时,a += b 和 a = a + b
A. 当 a 和 b 的类型不同时,那两条语句的效果就可能有区别。 a += b 等同于 a = (int) (a + b),这种情况下可以是 a是int型,b是float型。但是同等情况下 a = a + b 就会编译报错。
Q. 为什么判断字符串相等不能使用 == ?
A. 这反映了基础类型(int, double, boolean)和引用类型(String)的区别。
Q. 某些Java开发人员使用 int a[] 而不是 int[] a 去声明一个数组。这两者有什么区别?
A. 在Java中这两种用法都是合法的,他们的作用都是一样的。前者是在C中的定义数组的方法。后者是JAVA推荐的方法,因为它的写法 int[] 更能表明这是一个 int 的数组。
Q. 为什么数组下标从0 开始 而不是从 1 开始?
A. 这种传统起源于机器语言的编程方法。在机器语言中,数组下标被用来计算元素位置与第一个元素之间的偏移量。如果从1开始的话,计算偏移时还需要做一次减法运算,那是种浪费。
Q. 既然 a[] 是一个数组,为什么 System.out.println(a) 会打印出一个16进制的数,就像 @f62373 这样,而不是打印出数组的元素?
这条语句打印出的是 数组在内存中的地址,不幸的是,在绝大多数情况下,这不是你需要的。
Q. 有没有只能用循环而不能用递归的情况?
A. 不可能,所有的循环都可以用递归替代,虽然大多数情况下,递归需要额外的内存。
Q. 为什么我们要花大篇幅来证明一个程序是正确的?
A. 为了防止错误的结果。二分查找就是一个例子。现在,你懂得了二分查找的原理,你就能把递归形式的二分查找改写成循环形式的二分查找。二分查找的论文发表与1946年,但是第一个正确的二分查找的程序在 1962年在出现。
Q. 在JAVA内建库中有没有排序和查找的函数?
A. 有的。在 java.util.Arrays 中包含了 Arrays.sort() 和 Arrays.binarySearch() 方法。对于Comparable 类型它使用了 归并排序,对于基本数据类型,它使用了快速排序。因为基本类型是值传递,快速排序比归并排序更快而且不需要额外的空间。
Q. 为什么JAVA库不用 随机pivot方式的快速排序?
A. 因为某些程序员在调试代码时,可能需要确定性的代码实现。使用随机pivot违背了这个原则。
最后
我整理了一份Java系统学习资料,如有需要请扫描下方二维码领取!
Java初学者非常容易忽视或者不知道的小知识相关推荐
- C语言你不得不知道的小知识
C语言你不得不知道的小知识: 1: 常见的变量修饰关键字:static.const.extern.volatile.register static:(该变量保存在全局静态区) a.修饰局部变量--& ...
- 一些你我所不知道的小知识
一.老师没教的事 a.人类全身上下,最强韧有力的肌肉,竟是舌头. b.张开眼睛打喷嚏是不可能的. c.憋气自杀也是不可能成功的. d.每一次你舔一张邮票的背胶,你就吸收了十分之一卡路里. e.右撇子平 ...
- 程序员常用编程工具: VS Code,那些你不得不知道的小知识!
工欲善其事,必先利其器.这句话真好,一句话可以写两篇文章.上一篇我们介绍了键盘,对于程序员来说,光有键盘可不行,你还需要一个趁手的编程工具.就像很多工程师对 HHKB 键盘情有独钟一样,好的编程工具可 ...
- 如何减小电压跟随器输出电阻_补课贴 | 关于运算放大器和比较器的异同,那些你不得不知道的小知识!...
在直入正题讲解运算放大器的异同之前,小A先来帮助大家简单回顾一下运算放大器和比较器的基础知识: 比较器是一种带有反相和同相两个输入端以及一个输出端的器件,该输出端的输出电压范围一般在供电的轨到轨之间. ...
- 你可能不知道的小知识-bug为什么叫bug
学了这么长时间的计算机,敲了很多行的代码,当然也很熟悉bug这个单词了.今天就来聊聊bug的来历. (bug就是指是bai指电脑系统du的硬件.系统软件(如操作系统)或应用软件zhi(如文字处理软件) ...
- 净水器哪种好?不得不知道的小知识
净水器哪种好想必是很多购买净水器的小伙伴纠结的问题,作为一个有相关经验的人来说,我总结了以下几点. 一.净水器的种类 首先净水器是根据过滤膜来分类的,现在市场上的净水器由微滤.超滤.RO反渗透.纳滤和 ...
- 【咬文嚼字】c语言中你可能不知道的小知识
前言 作为一名c语言萌新,在学习完c中的基本语句后,就能写出一些小的c语言程序了,但在写的过程中可能总是会碰到一些小地方困扰着你,因此我决定写下这篇文章记录下我遇到的一些小问题帮助你查漏补缺,并扫清那 ...
- 英雄联盟怎么解除小窗口_英雄联盟:老玩家都不知道的小技巧,一定要注意这些细节|英雄联盟|召唤师|防御塔|新英雄|亚索...
英雄联盟:老玩家都不知道的小技巧,一定要注意这些细节 英雄联盟作为当下最火爆的游戏之一,已经陪伴大家走过了无数的春夏秋冬,如今英雄联盟已经迎来了越来越多的新英雄,随着英雄联盟里面的英雄不断的增多,越来 ...
- Java初学者需掌握的4大核心基础知识
Java人才需求量一直是居高不下,Java一直霸主流行编程语言排行榜,这使得大家对学Java有前途,一致成赞同的态度,使得涌入Java行业的朋友是越来越多,只为谋个好前程.但由于Java语言没有这么强 ...
最新文章
- js canvas游戏初级demo-上下左右移动
- Elasticsearch 在各大互联网公司大量真实的应用案例!
- 空值排序(oracle/sqlserver)
- Linux平台下的内存泄漏检测
- 关于在新建的package中用SetContentView()函数时无法找到已创建的R.layout的布局文件的的问题的解决办法
- 2021辽宁省大学生程序设计竞赛题解
- substring substr slice 区别
- matlab做三次拉格朗日插值多项式_买菜必用的MATLAB拉格朗日插值函符号解输出
- 十大著名黑客——斯蒂芬-沃兹尼克
- STS热部署,springboot项目中修改代码不用重新启动服务
- selenium调用edge driver的坑
- MongoDb进阶实践之七 MongoDB的索引入门
- 飞鱼科技<校招开发面试官>面试经验分享
- java 绑定mac地址_如何JAVA实现使用TrueLicense在证书中绑定PC的MAC地址,以防止拷贝应用...
- HDU 1425 sort
- Python高效编程之88条军规(1):编码规范、字节序列与字符串
- 如何退出SCALA命令界面
- C++语言程序设计第五版 - 郑莉(第四章课后习题)
- yolo论文_YOLO之父宣布退出CV界,坦言无法忽视自己工作带来的负面影响
- 美团—大众软件测试开发校招题
热门文章
- java根据开始日期和结束日期计算天数
- Fluent UDF 实现用Newmark-β方法计算圆柱绕流流固耦合时的位移振动响应
- ICN6202是一颗MIPI DSI转LVDS的桥接芯片
- 2022年海南最新建筑八大员(机械员)模拟考试题库及答案
- Snorkel-数据标注系统
- Python爬虫爬取链家网上的房源信息练习
- 6. 聚类算法之K-Means
- “数”说“云上盛宴” “智”创未来生活 中国联通:“线上+线下”为智博会赋能添彩
- js 破解爬虫-四川金榜路AES加密
- 推荐10个AI人工智能技术网站