0000JAVA笔记21.pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档