长沙java培训
达内长沙芙蓉路中心

18487146383

热门课程

关于 Java 的4个谎言

  • 时间:2016-09-21
  • 发布:长沙Java培训
  • 来源:码农网

有一些关于java的常见叙述,在网上比较流行,但是有时候这些内容是错误的。所以,今天来跟着达内长沙java培训纠正一下这些错误吧:

1. System.exit(0)会跳过finally块的执行

System.setSecurityManager(new SecurityManager() {

@Override

public void checkExit(int status) {

throw new ThreadDeath();

}

});

try {

System.exit(0);

} finally {

System.out.println("In the finally block");

}

这段代码为什么会输出In the finally block?为什么没有打印出堆栈跟踪信息呢?

2. String str =“Hello”;其中str是一个字符串对象

跟C++不同的是,Java里的变量要么是基础类型,要么是引用。变量不可能是对象。这意味着像这样的表达式:

String str = "Hello";

String text = "Bye";

str == text; //比较两个引用,而不是内容

str = text; //把text的引用赋值给str

大多数情况下其实没有太大的区别,不过这么写容易引起困惑。

final StringBuilder sb = new StringBuidler();

sb.append("Hello"); //这个引用是final类型的,而不是这个实例。

method(sb); //可以通过方法来修改这个实例,不过这个变量是无法修改的。

3.Java的内存泄露跟C++程序员理解的一样

达内长沙java培训看到内存泄露在维基百科上的定义是”在计算机科学中,如果程序没有正确地管理好内存分配 ,就会出现内存泄露。在面向对象编程中,如果内存中的一个对象无法在代码中访问不到的话,这就是内存泄露。” 不过在Java中,对象总是可达的,那些没有强引用的对象会被清除掉。内存泄露这个术语在Java中意味着:内存中存在着不该存在的对象,通常来说是有些不再使用的资源却仍存储在集合中。

4.多线程编程很难

如果你没有经验的话,多线程编程的确很难。如果你只是把一堆代码扔到一堆线程中去执行,那样出了问题根本没法解决,只能是一团糟。但达内长沙java培训觉得如果你能进行线程的按需分配,控制线程间的交互,使用一些团队中的成员也能明白的简单的模式,问题就变得简单多了。当然还有一个挑战就是你得让团队中的所有人都遵循你的这个规则。

上一篇:定义不可变对象的策略
下一篇:关于 Java面试的6个谎言

达内长沙Java培训教你阅读GC日志

spring注入配置文件属性到java类

Java中Vector和ArrayList的区别

达内长沙Java培训详解volatile关键字

选择城市和中心
贵州省

广西省

海南省