堆栈溢出回答了我们不知道的Java首要问题

您不应该错过的堆栈溢出问题集合:

这不是秘密; 我们都使用堆栈溢出。 它掌握了生命,宇宙以及几乎所有与代码相关的内容的答案。 该平台为开发人员,工程师和其他人员提供了一个找到他们所面临问题的答案的地方,或者至少使他们处于解决方案的正确轨道上。

Java是Stack Overflow上最受欢迎的类别之一,总共提出了将近150万个问题,并且每天增加数百个问题。 它为您在日常任务中偶然发现的问题提供了一些非常有趣的答案,以及对您不知道应该问的问题的答案。

热门Java问题

我们总是可以学习到一些新的东西,而这正是我们决定要寻找的东西:对我们所不知道的问题的有趣答案。 让我们来看看。

Java难题

堆栈溢出是寻找答案的地方,但它也是解决更多问题和谜语的好地方。 来自荷兰的软件开发人员Kevin Cruijssen发布了以下问题:

为什么array [idx ++] + =“ a”在Java 8中增加一次idx,而在Java 9和10中增加两次?

为了证明这一点,他创建了以下代码:

import java.util.*;
public class Main {public static void main(String[] args) {int size = 3;String[] array = new String[size];Arrays.fill(array, "");for(int i = 0; i <= 100; ) {array[i++%size] += i + " ";}for(String element: array) {System.out.println(element);}}
}

在Java 8中运行它,我们得到以下输出:

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 
2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95 98 101 
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99

但是,在Java 10中,我们得到以下信息:

2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100

在继续阅读之前,您可以尝试猜测这里发生了什么吗? 是什么导致了版本之间的不同输出的神秘Java属性?

准备不知所措:这是javac中的一个错误,该错误始于JDK9。根据正式的错误报告,当对字符串操作数应用“ + =”时,可能会产生一些副作用,如上面的代码所示。

乔恩·韦尔尼 ( Jorn Vernee )将此答案向前推进了一步,并查看了此行的相应字节码:

array [i ++%size] + = i +”“;

这是输出:

21: aload_222: iload_323: iinc          3, 126: iload_127: irem28: aload_229: iload_330: iinc          3, 133: iload_134: irem35: aaload36: iload_337: invokedynamic #5,  0 // makeConcatWithConstants:(Ljava/lang/String;I)Ljava/lang/String;42: aastore

好的一面是,此问题已修复,并将与其他一些不错的功能一起在JDK 11中部署。

NullPointerException的重要性

您花了多少时间浏览日志,试图查找异常并处理它们? 我们已经知道答案了-太久了。 确实,Stack Overflow提供了一个地方,我们可以在这里查询和搜索有关问题的正确答案,并且在大多数情况下,过去有人已经遇到过同样的问题。

开发人员遇到的最常见的异常之一是NullPointerException。 实际上,这是Java生产环境中最常见的例外。 一个引起我们注意的问题是有人试图通过问“ 什么是NullPointerException,以及如何解决它? ”来找到问题的根本原因。 。”

投票最多的答案将其分解为步骤,因此更容易理解过程中发生的情况。 它首先声明一个对象的指针,再声明一个引用变量。

Integer num;
num = new Integer(10);

第一行是指针,由于我们没有说明要指向的内容,因此Java将其设置为null。 仅在第二行中创建对象类型Integer,并将指针变量num分配给该对象。

在声明变量但未创建对象之后,在第一行发生NullPointerException。 如果在创建对象之前尝试取消引用num,则将获得NullPointerException。 在大多数情况下,编译器会发现问题,并告知“ num可能尚未初始化”,但有时您编写的代码不会直接创建该对象。

你怎么解决呢? Stack Overflow上最受关注的方法之一是在整个代码中添加空检查。 但是,您最终会得到太多如下所示的代码行:

if (someobject != null) {someobject.doCalc();
}

同样, Stack Overflow可以帮助我们提高此代码的效率。 在合同无效的情况下,或者在代码无效的情况下,在代码中检查null是有意义的。

第一个建议很简单:不要使用null作为响应。 但是,如果null为有效响应,则必须对其进行检查。 使用返回集合的方法会更容易。 我们可以返回空集合(或数组)而不是null。

如果不使用集合,则可以使用Null Object模式。 在此模式中,我们使用一个实现预期接口的对象,其方法主体为空。 要将其放入代码中,请进行以下比较:

Parser parser = ParserFactory.getParser();
if (parser == null) {// now what?// this would be an example of where null isn't (or shouldn't be) a valid response
}
Action action = parser.findAction(someInput);
if (action == null) {// do nothing
} else {action.doSomething();
}

对此:

ParserFactory.getParser().findAction(someInput).doSomething();

如果是我们提到的第二种情况,null不是有效的响应,则可以使用assert语句。 因此,它看起来像这样:

assert <condition>
//or
assert <condition> : <object>

您还可以通过其他方法来处理NullPointerExceptions以及为何它如此重要的解释- 看看 。

Java 10中的局部变量类型推断

Java 10中最受关注的更改之一是引入了局部变量类型推断,这为Java添加了一些语法功能,从而简化了它并改善了开发人员的体验。

Java 10允许我们声明变量而不必指定关联的类型。 所以:

List<String> list = new ArrayList<String>();
Stream<String> stream = getStream();

将被以下新的简化语法取代:

var list = new ArrayList();
var stream = getStream();

这种变化导致了一个有趣的问题。 Kotlin和Java中的var有什么区别? 正如阿列克谢·罗曼诺夫(Alexey Romanov)解释的那样,它们的含义有很大不同。

在Kotlin中,var表示“这是一个可变变量”,并且可以在推断类型和显式类型时使用。 另一方面,Java中var的含义是“这是具有推断类型的变量”,并且可用于可变变量和最终变量。

最重要的是,Java中的var只能用于局部变量。 而Kotlin中的var也用于属性。

最后的想法

堆栈溢出不仅仅是一个问答站点。 这是一个社区,人们可以互相帮助,进行热烈的讨论,然后开始玩乐。

如果您需要一段代码的帮助或遇到无法解决的有趣谜语,那么这是理想的选择。 这些问题仅占您所能找到的一小部分,如果您已经看到值得认为的问题,我们想知道! 在下面的评论中发布您最喜欢的答案或未回答的问题。

翻译自: https://www.javacodegeeks.com/2018/07/stack-overflow-top-java-questions.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sequelize连接mysql_node.js通过Sequelize 连接MySQL

node.js通过Sequelize 连接MySQL一.通过koa2脚手架构建项目1.1 安装koa-generator在终端输入&#xff1a;$ npm install -g koa-generator11.2 使用koa-generator生成koa2项目$ koa2 HelloKoa21成功创建项目后&#xff0c;进入项目目录&#xff0c;并执行npm install命令$ cd H…

杀java_java怎么杀掉java进程

展开全部java中有调用外部程序的e69da5e887aa62616964757a686964616f31333337623431类&#xff0c;Runtime.getRuntime().exec("./**.exe");此函数返回的是一个Process 对象&#xff0c;该对象在创建后&#xff0c;可以对它进行 destroy () 杀掉子进程、 waitFor () …

高级java开发_我最喜欢的Java高级开发人员书籍

高级java开发我上一篇博客文章 &#xff08;我对高级Java开发人员的十个最喜欢的在线资源&#xff09;的想法&#xff0c;是由Xiaoran Wang发表的“面向高级Java开发人员的十大网站”的启发。 Wang还写了一篇名为“面向Java高级开发人员的十大书籍”的文章。 就像关于高级Java开…

camera.swf java_java调用摄像头保存图片上传功能

在项目中要用到jsp页面实现网页采集摄像头图像&#xff0c;并实现上传的功能&#xff0c;页面主要js调用的&#xff0c;所以可以使用多种语言php,asp等都可以使用&#xff0c;而且是跨浏览器的。可以整合的到SSH项目中和struts1或者struts2项目中使用方法1&#xff1a;下载 pri…

java 北理工 教材_北理工《Java技术与应用》在线作业

北理工《Java技术与应用》在线作业可以代做所有奥鹏平台的作业、小论文、毕业论文、离线作业、考核作业、在线作业、在线测试&#xff0c;有需要的请联系本人一、单选题(共 20 道试题&#xff0c;共 40 分。)V1. Socket对象中____函数获取远程端口。A. getPort( )B. getLocalPo…

Apache Spark Job的剖析

Apache Spark是通用的大规模数据处理框架。 了解spark如何执行作业对于获取大部分作业非常重要。 关于Spark评估范式的简短回顾&#xff1a;Spark使用的是惰性评估范式&#xff0c;在该范式中&#xff0c;Spark应用程序在驱动程序调用“ Action”之前不会执行任何操作。 惰性…

scala本地调试_如何编写自己的Java / Scala调试器

scala本地调试在本文中&#xff0c;我们将探讨Java / Scala调试器的编写和工作方式。 诸如Windows的WinDbg或Linux / Unix的gdb之类的本机调试器通过操作系统直接提供给它们的钩子来获取其功能&#xff0c;以监视和操纵外部进程的状态。 JVM充当OS之上的抽象层&#xff0c;它提…

java content()_Java contentEquals() 方法

全屏Java contentEquals() 方法contentEquals() 方法用于将将此字符串与指定的 StringBuffer 比较。语法public boolean contentEquals(StringBuffer sb)参数sb -- 要与字符串比较的 StringBuffer。返回值如字符串与指定 StringBuffer 表示相同的字符序列&#xff0c;则返回 tr…

通过这5个简单的技巧减少GC开销

编写代码的五种简单方法&#xff0c;可提高内存效率&#xff0c;而无需花费更多时间或降低代码可读性 垃圾回收会为您的应用程序增加多少开销&#xff1f; 您可能不知道确切的数字&#xff0c;但您确实知道总有改进的余地。 尽管自动GC是最有效的过程&#xff0c;但是如果它过…

内部简单二进制编码(SBE)

SBE是用于金融行业的非常快速的序列化库&#xff0c;在本博客中&#xff0c;我将介绍一些使其快速发展的设计选择。 序列化的全部目的是对消息进行编码和解码&#xff0c;并且有很多可用的选项&#xff0c;从XML&#xff0c;JSON&#xff0c;Protobufer&#xff0c;Thrift&…

mingw64 下 java_在 Windows 10 64 位下安装 Mingw-w64

1、MinGW 的全称是&#xff1a;Minimalist GNU on Windows 。打开网址&#xff1a;http://www.mingw-w64.org/doku.php/download &#xff0c;选择 MingW-W64-builds。如图1图12、下载包名&#xff1a;mingw-w64-install.exe。安装时报错&#xff1a;Cannot download repositor…

java实现layui分页_layui如何实现数据分页功能

我们先来看下官网的演示画面。具体代码&#xff1a;页面引入layui.css、 layui.js前台jsvar limitcount 10;var curnum 1;//列表查询方法function productsearch(productGroupId,start,limitsize) {layui.use([table,laypage,laydate], function(){var table layui.table,la…

java 合并到一行_mysql中将多行数据合并成一行数据

一个字段可能对应多条数据&#xff0c;用mysql实现将多行数据合并成一行数据例如&#xff1a;一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句&#xff1a;1 SELECT am.activeId,m.modelName2 FROM activemodel am3 JOIN model m4 ON am.modelId m.modelId5…

容器化Spring Data Cassandra应用程序

我正在继续学习Docker的旅程。 在这一点上&#xff0c;我仍然保持简单。 这次&#xff0c;我将解决将Spring和Cassandra应用程序转换为使用容器而不是在主机上本地运行的问题。 更准确地说&#xff0c;使用Spring Data Cassandra整理应用程序。 我希望我前几天看过进行此更改。…

使用React和Spring Boot构建一个简单的CRUD应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 React的设计使创建交互式UI变得轻松自如。 它的状态管理非常有效&#xff0c;并且仅在…

使用CUBA进行开发–是Spring的重大转变吗?

阅读另一个供内部公司使用的Web项目的要求时&#xff0c;您&#xff08;至少是我自己&#xff09;通常会看到一个很普通的集合&#xff1a;定义明确的数据存储结构&#xff08;或有时是现有的旧式DB&#xff09;&#xff0c;大量的数据输入形式&#xff0c;非常复杂的业务逻辑&…

java 伴随矩阵_C#计算矩阵的逆矩阵方法实例分析

本文实例讲述了C#计算矩阵的逆矩阵方法。分享给大家供大家参考。具体如下&#xff1a;1.代码思路1)对矩阵进行合法性检查&#xff1a;矩阵必须为方阵2)计算矩阵行列式的值(Determinant函数)3)只有满秩矩阵才有逆矩阵&#xff0c;因此如果行列式的值为0(在代码中以绝对值小于1E-…

java 代码造假_老板居然让我在Java项目中“造假”

1. 前言老板说&#xff0c;明天甲方要来看产品&#xff0c;你得造点数据&#xff0c;而且数据必须是“真”的&#xff0c;演示效果要好看一些&#xff0c;这样他才会买我们的产品&#xff0c;我好明年给你换个嫂子。一般开发接到这种过分要求都不会很乐意去做&#xff0c;这完全…

nginx php环境搭建_php+nginx环境配置

本篇文章的内容是PHP和nginx环境的配置&#xff0c;在这里分享给大家&#xff0c;也给有需要的朋友一个参考phpnginx环境配置1、首先需要准备的应用程序包。nginx&#xff1a;nginx/Windows-1.0.4php&#xff1a;php-5.2.16-nts-Win32-VC6-x86.zip (nginx下php是以FastCGI的方式…

javaone_旅行报告:JavaOne 2013 –重归荣耀

javaone我已经回来几天了&#xff0c;需要赶上过去几天一直搁置的所有事情。 对我来说&#xff0c;这是一年中最忙的时间。 JavaOne和OpenWorld在旧金山的整整一周。 一个非常简短的旅行报告。 年度ACED简报 你们中许多人都知道我是Oracle社区认可计划&#xff08;称为“ ACE计…