请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术交流,必有回复!

疯狂Java联盟

 找回密码
 加入联盟
查看: 518|回复: 0

Java面试题集16(核心部分)——《疯狂Java讲义》附赠

[复制链接]
发表于 2018-5-29 17:55:14 | 显示全部楼层 |阅读模式

本文随《疯狂Java讲义》光盘附赠

京东购买地址:https://item.jd.com/12261787.html
当当购买地址:http://product.dangdang.com/23532609.html



31、什么时候用assert
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,assert将给出警告或退出。
Java的assert是关键字。
public class TestAssert
{
    public static voidmain(String[] args)
    {
         int a = 5;
         // 断言a>3
         assert a > 3;
         // 断言a<3,否则显示a不小于3,且a的值为:" + a
         assert a < 3 :"a不小于3,且a的值为:" + a;
    }
}
从上面代码可以看出,assert的两个基本用法如下:
assert logicExp;
asert logicExp : expr;
A.第一个直接进行断言,
B.第二个也是进行断言,但当断言失败失败时显示特定信息。
最后要指出:
虽然assert是JDK1.4新增的关键字,但有一点非常重要:
需要说明的是,Java命令默认不启动断言,
为了启动用户断言,应该在运行java命令时增加-ea(Enable Assert)选项。
为了启动系统断言,应该在运行java命令时增加-esa(Enable System Assert)选项。
32Java中会存在内存泄漏吗,请简单描述。
为了搞清楚Java程序是否有内存泄露存在,首先了解一下什么是内存泄露:程序运行过程中会不断地分配内存空间;那些不再使用的内存空间应该即时回收它们,从而保证系统可以再次使用这些内存。如果存在无用的内存没有被回收回来,那就是内存泄露。
对于Java程序而言,只要Java对象一直处于可达状态,垃圾回收机制就不会回收它们——即使它们对于程序来说已经变成了垃圾(程序再也不需要它们了);但对于垃圾回收机制来说,它们还不是垃圾(还处于可达状态),因此不能回收。
看ArrayList中remove(int index)方法的源代码,程序如下:
public E remove(int index)
{
       // 检查index索引是否越界
       RangeCheck(index);
       // 使修改次数加1
       modCount++;
       // 获取被删除的元素
       E oldValue = (E)elementData[index];
       int numMoved = size -index - 1;
       // 整体搬家
       if (numMoved > 0)
              System.arraycopy(elementData,index+1
                     ,elementData, index, numMoved);
       / /将ArrayList的size减1,
       // 并将最后一个数组赋为null,让垃圾回收机制回收最后一个元素
       elementData[--size] =null;
       return oldValue;
}
上面程序中粗体字代码elementData[--size] =null;就是为了避免垃圾回收机制而编写的代码,如果没有这行代码,这个方法就会产生内存泄露——每删除一个对象,但该对象所占用的内存空间却不会释放。


您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

微信群请扫二维码
QQ交流1群:
545923995
(未满)

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11094030号 )

GMT+8, 2020-2-22 02:29 , Processed in 0.244204 second(s), 7 queries , File On.

快速回复 返回顶部 返回列表