存档

文章标签 ‘面试’

简易Java(08):为什么Java中的字符串是不可变的?

2014年5月23日 没有评论

“图解Java字符串的不可变性”中,介绍了在Java中字符串是不可改变的。但是,大家有没有想过“为什么字符串是不可变的?”今天就来给大家解释一下这个问题。

通过substring()方法在JDK6和JDK7中的异同 ”这篇文章,让D瓜哥看到,对于字符串的处理也是与时俱进。所以,如果发现下文中如有已经过时之处,请及时指出。D瓜哥也会及时更正的。

这是面试中经常被问到的老问题了。在Java中,将字符串设计成不可变是又很多原因的。一个好的回答需要建立在 阅读全文…

简易Java(07):substring()方法在JDK6和JDK7中的异同

2014年5月21日 没有评论

看到substring(),D瓜哥就想起来去年面试的惨痛精力。连续两次被问到substring()会造成什么问题;第一次被问到时,确实不知道会造成什么问题,面试结束后就查了查资料。但是,没有认真看。没想到接下来的面试又问到,由于没有看,还是没回答上来,结果面试就惨遭失败!

没想到,这次又遇到了substring()。所以,这篇文章D瓜哥必须好好翻译!

substring()会造成什么问题,请看参考资料

另外,需要提前说明一点,本节内容是针对Oracle JDK来说明的,其他JDK的实现也许可能不同。请读者自己查看相关文档以及源代码。

substring(int beginIndex, int endIndex)方法,在JDK6和JDK7中的实现是不一样的。了解实现的不同之处,可以帮助我们更好地使用这个方法。为了简单起见, 阅读全文…

分类: Java, 挨踢(IT) 标签: , , ,

简易Java(06):图解Java字符串的不可变性

2014年5月20日 没有评论

本节,我们将通过一系列的图片来解释Java String的不可变性。

1、声明一个字符串

String s = "abcd";

s存放了到字符串对象的引用。下面图片中的箭头就代表这种“存放引用”。

存放应用

2、将 阅读全文…

分类: Java, 挨踢(IT) 标签: , ,

简易Java(05):Javadouble示例

2014年5月16日 没有评论

其实,这篇文章所讲内容非常简单、非常基础。相信99%的Java程序员都了解。不过,为了整个《简易Java》系列的完整性,还是把这篇文章翻译出来了。大家可以忽略这篇文章,直接飞过。

你应该遇到过这样的情形,你想得到一个double类型的数,但是却得到一个int类型的数。

对于如下方法,devide(2, 3)将返还0.0。

/**
 * Coder: D瓜哥,http://www.diguage.com/
 */
public static double devide(int x, int y) {
    return x / y;
}

问题就在于 阅读全文…

分类: Java, 挨踢(IT) 标签: ,

简易Java(04):Java如何进行静态类型检查?

2014年5月15日 2 条评论

维基百科上对“静态类型检查”和“动态类型检查”的介绍如下:

静态类型检查是一个基于程序源代码分析来确保程序类型安全的过程。

动态类型检查是一个在运行时检查程序类型安全的过程。

Java语言在编译时使用静态类型检查来分析程序。如果有类型错误,则报错。基本思想是不要让类型错误在运行时发生。通过下面的例子,可以更好地理解Java中静态类型检查的工作原理。

1、代码示例

假设我们有如下两个类, 阅读全文…

分类: Java, 挨踢(IT) 标签: ,

简易Java(03):Java类何时以及如何加载并初始化?

2014年5月14日 没有评论

开发Java程序时,我们想编辑一个.java文件,然后该文件被编译器编译成.class文件。Java在运行时,自己加载所需要的类。但是,加载初始化有什么不同,却让人难以区分。一个Java类在何时以及如何被加载和初始化呢?让我们通过下面的例子来给大家清晰地描述一下。

1、 “加载一个类”是什么意思?

在C/C++中,首先被编译成本地机器代码,然后在编译之后有一个链接过程。所谓链接,就是将不同地方的源代码搜集起来,然后生成一个可执行文件。但是,Java并不这样。在Java中,类似链接的过程是在加载到Java虚拟机时完成的。

不同Java虚拟机,加载类的方式也不同。(D瓜哥注:即使同一个虚拟机,不同的类,加载方式也可能不同。)但是,最基本的加载规则是按需加载。如果已经加载过的类需要其他类,则这些被需要的类就加载。这个加载过程是递归进行的。

2、一个类何时以及如何加载?

在Java语言中,加载规则由ClassLoade来处理。下面, 阅读全文…

分类: Java, 挨踢(IT) 标签: ,

简易Java(02):如何构建您自己的Java库?

2014年5月13日 没有评论

代码重用(Code Reuse)是软件开发中重点考虑的因素之一。将常用的功能组织起来,构建成一个“自产自销”的私有库是一个非常好的主意!只要有一些方法被调用,则将其简化成一个方法调用。至于Java,最直接了当的就是管理一个库。在Eclipse中,有个一个简单的例子。为了这个演示构建库的方法,这个库很简单,仅仅包含一个add方法。

  • 步骤1:创建一个名为MyMathJava项目,然后添加一个库Simple,然后在类中添加一个方法add

包(Package)结构如下所示:

包结构

阅读全文…

分类: Java, 挨踢(IT) 标签: ,

简易Java(01):从HelloWorld中可以学到什么?

2014年5月12日 4 条评论

HelloWorld程序是每一个Java程序员都知道的程序。它很简单,但是小事物却包含着大道理,它可以帮助我们更深入的去理解Java中一些更复杂的原理。在这篇文章中,我将向大家说明我们能从这个简单程序中学到什么知识。如果你能从HelloWorld中体会到更多东西,请留言告知。

public class HelloWorld {
    /**
     * Coder: D瓜哥,http://www.diguage.com/
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Hello World");
    }
}

1、为什么一切事物皆从一个类(Class)开始?

Java程序都是从类开始构建的, 阅读全文…

分类: Java, 挨踢(IT) 标签: ,

2013年10月29日面试Java工程师时被问的一些问题

2014年3月31日 2 条评论

D瓜哥在2013年10月29日面试来一家公司。这次面试,被问的问题更加细致和深入,并且确实都是D瓜哥不太确定或者说研究得不够透彻的问题。记录下来,以备以后研究使用。

本次发布的面试有两三家公司的面试题。全部记录下来,就不做细致区分了。本次发布的面试题没有得到面试官到许可。如果相关人员看到了,觉得不方便发布的。请及时和D瓜哥联系。D瓜哥会立即撤下这篇文章。另外, 阅读全文…

发一些曾经面试时被问的一些面试题,权当年末总结

2013年12月31日 3 条评论

2013年已经过完了。在2013年里,对D瓜哥来说最重要的一件事情就是面试,长达半年的面试(2013年5月10日离职到2013年11月15日上班)。至于找工作的时候经常玩,这种丢脸的事情,我会到处张扬吗?别人都去写年末总结了,D瓜哥也想写,但是还没动手。所以,滥竽充数,把以前面试时整理的一些面试题拿出来权当年末总结吧。这是D瓜哥2013年10月18日面试时,被问的问题和“昨天面试被问到的一些问题”有不少区别的,而且也确实有一些是我自己不太确定或者说研究得不够透彻。所以, 阅读全文…