1.11.&和&&的区别?

参考答案:

  &和&&都可以执行关系判断。二者的区别是:&运算是把逻辑表达式全部计算完,而&&运算具有短路计算的功能。所谓短路计算,是指系统从左到右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。

1.12.写出Java中8种原始类型及其字节长度

参考答案:

类型名称

字节空间

说明

byte

1字节(8位)

存储1个字节的数据

short

2字节(16位)

兼容性考虑,一般不用

int

4字节(32位)

存储整数(常用)

long

8字节(64位)

存储长整数(常用)

float

4字节(32位)

存储浮点数

double

8字节(64位)

存储双精度浮点数(常用)

char

2字节(16位)

存储一个字符

boolean

1字节(8位)

存储逻辑变量(true、false)

1.13.请描述一下JVM加载class文件的原理机制

参考答案:

  JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。

1.14.你对软件开发中迭代的含义的理解

参考答案:

  软件开发中,各个开发阶段不是顺序执行的,而各个阶段都进行迭代,然后进入下一个阶段的开发。这样对于开发中的需求变化,及人员变动都能得到更好的适应。

java在线hashcode java在线解答_源文件

1.15.什么是进程

参考答案:

  进程是操作系统结构的基础,是一个计算机中正在运行的程序实例。可以分配给处理器并由处理器执行的一个实体,由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。

1.16.什么是垃圾回收?什么时候触发垃圾回收?如何降低垃圾回收的触发频率?它能保证程序由足够的可用内存吗?

参考答案:

第一问:
垃圾回收(GC)是Java语言的一个重要特性,作用是释放不再被使用的内存。
第二问:
垃圾回收是由系统进行管理。在系统认为需要的时候自动启动一个线程进行护理。
第三问:
尽量减少垃圾内存,也就是新建对象的数量,可以降低垃圾回收的频率。
第四问:
垃圾回收机制无法保证有足够的内存。

1.17.Java中会存在内存泄漏吗,请简单描述?

参考答案:

  会存在内存泄漏。
  一般来说内存泄漏有两种情况。一是堆中分配的内存,在没有将其释放掉的时候,就将所有能访问这块内存的方式都删掉;另一种情况则是在内存对象已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用)。第一种情况,在Java中已经由于垃圾回收机制的引入,得到了很好的解决。所以,Java中的内存泄漏,主要指的是第二种情况。
  下面给出了一个简单的内存泄漏的例子。在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个List中,如果我们仅仅是放引用本身,那么List仍然引用该对象,所以这个对象对GC来说是不可回收的。代码如下所示:

List list = new ArraryList(10);
for (int i = 1; i < 100; i++){
    Object o = new Object();
    list.add(o);
    o = null;
}

  此时,所有的Object对象都没有被释放,因为变量list引用这些对象。

1.18.Java源文件中是否可以包括多个类,有什么限制?

参考答案:

  一个Java源文件中可以包含多个类,每个源文件中至多有一个public类,如果有的话,那么源文件的名字必须与之相同。如果源文件中没有public类,则源文件用什么名字都可以,但最好还好具有特定的意义,免得自己都不记得里面写的是什么了。一般建议一个源文件中只写一个Java类。

1.19.列出自己常用的jdk包

参考答案:

常用的JDK包如下:
1.java.lang包:这个包中包含了JDK提供的基础类,比如String等都是这里面的,这个包是唯一一个不用导入就可以使用的包;
2.java.io包:这个包中包含了与输入输出相关的类,比如文件操作等;
3.java.net包:这个包中包含了与网络有关的类,比如URL,URLConnection等;
4.java.util包:这个是系统辅助类,特别是集合类Collction,List,Map等;
5.java.sql包:这个是数据库操作的类,Connection,Statement,ResultSet等。

1.20.简单说明什么递归?什么情况会使用?并使用Java实现一个简单的递归程序?

参考答案:

1.递归作为一种算法在程序设计语言中广泛应用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。
2.递归算法一般用于解决三类问题:
 1)数据的定义是递归定义的。(fibonacci(斐波那契)函数)
 2)问题解法按递归算法实现。(回溯)
 3)数据的结构形式是按递归定义的。(数的遍历,图的搜索)
3.下面是使用递归算法实现计算某个整数在二进制中的个数,代码如下所示:

/**
* 计算二进制中1的个数
* N为奇数,二进制中1的个数等于N/2的个数
* 例子:
* num=13
* 1.getBinary(13/2=6)+1;
* 2.getBinary(6/2=3)+1;
* 3.getBinary(3/2=1)+1+1;
* 4.getBinary(1)+1+1; getBinary(1)返回1,与后边两个1相加得结果3
*/
public static int getBinary(int num){
    if (num == 1){
        return 1;
    }
    if (0 == num % 2){ // 是否为偶数
        return getBinary(num / 2);
    } else {
        return getBinary(num / 2) + 1;
    }
}