部门内部JAVA培训几点不清晰地方

java

2013-10-28

1.重新考虑一下JAVA中的基本数据类型和引用类型,JAVA中没有指针,只有引用;参考一下自己之前写的指针和引用的区别。

2.关于JAVA构造函数的问题

(1)父类如果构造函数没有形参,有时也叫入参,那么子类可以不写构造函数

public class Children extends Parent{

public static void main(String[] args){

Children children = new Children();

System.out.println("Hello world!");

}

}

class Parent{

public Parent(){

System.out.println("Parent!");

};

}

输出:

Parent!

Hello world!

(2)父类如果构造函数有形参,子类必须有构造函数

public class Children extends Parent{

public static void main(String[] args){

Children children = new Children();

System.out.println("Hello world!");

}

}

class Parent{

public Parent(String a){

System.out.println("Parent!");

};

}

输出:编译错误

 3.String和StringBuffer之间的关系

(1)String和StringBuffer之间的区别大概就是String没有缓冲区,不能动态增长,如果做了append的操作就会在内存中重新分配一块空间,再往底层说实际上是调用的StringBuilder分配内存空间,性能方面的测试参照园内博友一篇文章

http://www.cnblogs.com/fancydeepin/archive/2013/04/23/min-snail-speak_String-StringBuffer-StringBuilder.html

有关于性能方面的测试,非常不错~ 

贴一段代码进行佐证

public class DifferStrAndStrBuf{

public static void main(String[] argc){

String a = "String";

System.out.println("String orignal address:" + a.hashCode());

a += "add";

System.out.println("String change address:" + a.hashCode());

StringBuffer b = new StringBuffer("StringBuffer");

System.out.println("StringBuffer orignal address:" + b.hashCode());

b.append("plus");

System.out.println("StringBuffer change address:" + b.hashCode());

}

}

说明:由于JVM的原因,无法向C/C++一样获取到地址,用hashCode代替,关于hashCode参照园内博友一篇文章

http://www.cnblogs.com/hxsyl/p/3203470.html

输出:

String orignal address:-1808118735

String change address:1814688464

StringBuffer orignal address:1701381926

StringBuffer change address:1701381926

4.关于线程安全的问题

参照下面园内博友一篇文章

http://www.cnblogs.com/kunpengit/archive/2011/11/18/2254280.html

5.关于强引用和弱引用问题(回头写)

题外话:居然不知道接口不能实例化,对自己无语。。。

 

以上是 部门内部JAVA培训几点不清晰地方 的全部内容, 来源链接: utcz.com/z/391938.html

回到顶部