Category: Java

Java中的switch语句 0

Java中的switch语句

很多人在学习Java语言的时候,应该就听说switch语句和if else差不多,其实事实上真的是这样吗?尤其是当你真的写代码的时候,是使用一个if else还是使用switch呢?让我们带着这些问题来仔细阅读以下本文的内容吧。 首先我们来看一个简单的代码,他们实现的功能类似,但分别使用的打包开关(packed switch),稀疏开关(sparse...

0

Java程序员常犯的十个错误

本文总结了Java程序员常犯的十个错误: #1 把Array转变成ArrayList 为了把Array转变成ArrayList,程序员经常这样做: Arrays.asList返回的是Arrays内部的一个静态私有的ArrayList类,他不是Java.util.ArrayList类。Java.util.Arrays.ArrayList类有set(),...

0

面试题之如何用Java设计一个自动售货机

如何用Java设计一个自动售货机程序是一个非常好的Java面试题。大多数情况会在面试比较senior的Java开发者的时候出现。在一个典型的代码面试中,你需要在一定的时间内根据对应的条件完成相关的代码。通常2到3小时内(面试哪有这么多时间,哈哈),你需要产生设计文档,可以工作的代码已经单元测试。这样的Java面试的好处就是你能够一次性检测面试者的很多能力。为了能够完成代码的设计,编码以及单元测试,面试者需要在这三个方面都比较精通。 另外,这种真实的问题可以提升你面向对象分析和设计能力的技能,假如你想成为一个很好的应用开发者,那么这个技能就很重要。 要想用Java或者别的面向对象的语言来设计一个自动售货机,你不仅仅需要了解最基本的东西,比如封装(Encapsulation),多态(Polymorphism)或者继承(Inheritance),你还需要理解如何使用抽象类和接口的细节,这样才能解决问题或者设计一个好的应用。 通常这种问题,还会给你一个使用设计模式的机会,因为在这个问题中你可以使用工厂模式去创建不同的售货机。我在20个Java软件开发的问题一文中曾今讨论过这个问题,那之后,我收到了很多反馈关于解决这个问题的方案。 这篇文章,我们将会提供一个自动售货机问题的解决方案。顺便说一下,其实这个问题有很多种解决的方案,你应当在看本文之前自己先尝试一下。你也需要先复习一下SOLID和OOPS的设计原则,我们会在代码中使用到他们。当你设计自动售货机的时候,你会发现我们会用到其中很多的相关内容。...

0

Java应用性能测试之堆内存

每一个性能工程师都需要知道Java中内存是如何工作的吗?假如你想完全解决性能瓶颈的话,我的答案是“必须的”。Java的性能管理对每一个性能工程师以及Java开发者来说都是一个梦魇,但同时又是写好Java应用必不可少的一部分。 这是一个申请新的对象和清除不使用对象(垃圾回收)的过程。Java有自动的内存管理,在后台有自动运行的垃圾回收机制来回收不使用的对象并释放内存。假如没有足够的知识和经验来了解JVM和垃圾回收是如何工作的,不知道Java的内存是如何创建的,我们工程师在执行Java应用程序的时候就很难发现对应的瓶颈是在哪里。 当分析性能瓶颈的时候,理解Java内存模块的运行是一个技术活。在我查阅了很多博客,以及结合我自身的工作经验来看,趟过了很多工作上的坑之后,慢慢理解了JVM各个部分都是如何工作的。当我开始做性能测试的时候,根本不知道什么是Java的堆,我甚至不关注Java中对象都是如何创建的,更不用说GC是如何把不同类型的不使用的对象释放的。 在我开始做Java性能测试的时候,我遇到了好几个内存相关的错误,比如 java.lang.OutOfMemoryError,也就是在那时,我开始了解Java性能测试中JVM堆和栈所扮演的不同角色。当你想要获得一些性能相关的工作时,很多公司和客户都会检查你对Java开发和Java性能调试上面的专业度,所以理解Java中内存是如何申请的是非常重要的,它可以让你写出高性能的应用,再也不会出现诸如OutOfMemoryError或者Memory...