1.单例模式:
一个类就只生成一个对象。
实现方式 例如:
public class SingleModle
{
public static void main(String[] args)
{
P p = P.getInstance();
}
}
class P
{
private static P p = new P();
private P()
{
}
public static P getInstance()
{
return p;
}
}
这里就只有一个对象。
2.包:
个人理解:相当于创建了一个文件夹,里面可以有很多程序。用于将不同功能的类放在不同的目录下面。分门别类。
3.String类
String a = new String("hello world");
String b = new String("hello world");
a != b
原因:a,b是引用,就是所谓的地址,这是两个不同的对象,当然不相等。
String a = "hello";
String b = "hello";
a == b;
原因:这里只有一个对象,涉及到一个字符串池的概念(String pool),这种方式创建对象的时候是放在内存的栈上的,当第一个a申请的时候就查找池中有没有这个字符串,如果没有就在栈上创建,如果有了就返回该地址赋值给:例如上例中的b。
String a = new String("hello world");
String b = "hello world";
a != b;
原因:a是返回的堆上面的地址,而b是返回的栈上面的地址,申请a的时候在堆栈上都有一个对象,也就是有两个对象,而b查找pool中有没有这个字符串,查找到了,也就是这里的b就相当于前面String在栈上的对象的地址。
a = “hello”;
b = " world";
a = a + b;
第三行就创建了新的对象。不是尾部接上的。也就是说它不能被改变,就改变了,就成了新的对象了。
4.StringBuffer类。
和String类的区别在于它可以追加字符串。例如:
StringBuffer a = new StringBuffer();
a.append("hello").append(" world").append("!!!!!!!!!")....;
返回的还是同一个对象,
转换成String可以用a.toString();
a.append(100);
它的输出结果就是100,只不过这个100是字符串,输入浮点型,false,true等都给转换成字符串。