- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
0000JAVA笔记21
类中的成员变量实例化的时候会自动初始化,而方法中的成员变量不会被自动初始化,所以
使用之前需要赋初值。
Main 函数和类没有任何关系,可以放在任何一个类中
构造函数在被调用的时候并不是先执行其中的代码,而是先执行类中的显式的初始化的赋值。
static 方法和static 的变量一旦将什么东西设为static,数据或方法就不会同那个类的任何对
象实例联系到一起。所以尽管从未创建那个类的一个对象,仍能调用一个static 方法,或访
问一些static 数据。而非静态的方法或者变量就必须知道它们操作的具体对象
静态代码块在实例化类的时候会先执行
比如:
static
{
count++;
}
上面代码需要修改:将Chinese objRef = new Chinese();
改为静态:static Chinese objRef = new Chinese();
否则会一直循环创建对象直到消耗问内存
这样就只能使用如下代码
来调用类中的唯一的一个实例:
public static Chinese getInstance()
{
return objRef;
}
使用static 使类在内存中只能创建一个实例对象
子类不继承父类的构造方法,但是可以使用super(参数列表)调用父类的构造方法
如果子类中的构造方法没有显示调用父类的构造方法,也没有使用this 关键字调用重载的其
他构造方法,则在产生子类的实例的时候,系统默认调用父类的无参构造方法。
Runnblbe 适合用于多个相同代码的线程使用同一资源的情况
享元模式:如果有许多很小的对象,他们有很多相同的东西,可以编成一个对象,把相同的
作为内部状态,不同的属性做为方法的属性作为外部状态
枚举就是一个类,枚举中的元素就相当于是类的对象。
枚举中元素列表必须位于所有的成分之前;
枚举的构造方法只能是私有的;
只要用到了类,它的静态代码都会执行;
Java 在哪里分配空间?实例堆 栈 (基本类型变量)
内部类和外部类
Reload and override ?
重载:方法名相同,参数不同(个数、类型)形成重载,重载的方法可看成一个全新的方法,
与原方法相比它可以有不同的可见度和 “返回值类型”。“可见度”即访问权限
覆盖:方法名,参数相同形成重写,重写的方法不能降低原方法的可见度,也不能改变原方
法的返回值类型。可以提高访问权限
单例的实现方式:
单例是日常开发中经常会碰到的一种模式,最常见的写法如下所示:
public class Singleton {
private Singleton() {}
private static final class Holder {
static final Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return Holder.instance;
}
}
这样写不仅达到了单例的效果,而且还是延迟加载,至于为什么不明白的童鞋可以 google
或百度一下。( 这称为 lazy initialization holder class 模式 )
其实使用枚举可以很容易地实现单例。
public enum Singleton {
INSTANCE {
public void someMethod() {
// . . .
}
};
protected abstract void someMethod();
}
枚举类型 INSTANCE 就是一个单例,类型为 Singleton。
注:双检查锁只有在 jdk 1.5 及以上版本才能达到单例的效果的。
反射:java 程序中的各个类属于同一类事物,描述这一类事物的java 类名就是Class
如何获得类的字节码:
.getClass();
类名.class;
Class.forName(“java.lang.String”);
获得字节码
有9 个预定义的实例对象,8 个基本类型,和一个void
数组类型的class 对象用System.out.println(int[].class.isArray());
System .out.println (cls1.isPrimitive ());//看String是不是基本类型的
System .out.print
文档评论(0)