`
文章列表
  java虚拟机内存管理机制(一)   java虚拟机内存管理机制(二)   java虚拟机内存管理机制(三)   java虚拟机内存模型

对象的引用

一、概念     对大部分对象而言,程序里会有一个引用变量引用该对象,这是最常见的引用方式。除此之外,java.lang.ref包下提供了3个类:SoftReference、WeakReference、PhantomReference,它们分别代表了系统对对象的3种引用方式:软引 ...

对象与垃圾回收

/* 程序1 */ package org.lgy.study.gc; public class GcTest{ public static void main(String[] args){ for(int i = 0; i < 4; i++){ new GcTest(); } } public void finalize() throws Throwable{ System.out.println("finalize..."); } } /* -verbose:gc选项可以 ...
package org.lgy.study.enumstudy; public enum Operation{ PLUS,MINUS,MULTI,DIVIDE; public double eval(double a, double b){ switch(this) { case PLUS: return a + b; //因为前面有return语句,所以后面的break语句永远不会被执行 //break; case MINUS: return a - b; //break; case ...
package org.lgy.study.enumstudy; public interface GenderDesc{ void info(); }   package org.lgy.study.enumstudy; /* 枚举类也可以实现一个或多个接口,与普通类实现一个或多个接口完全一样。 枚举类实现一个或多个接口时,也需要实现该接口所包含的方法。 */ public enum Gender implements GenderDesc{ MALE("男"),FEMALE("女"); private S ...
package org.lgy.study.enumstudy; public enum SeasonEnum{ //枚举类通过如下方式调用构造器 SPRING("春天", 3),SUMMER("夏天", 6),FALL("秋天", 9),WINTER("冬天", 12); //枚举类的实例是在该类的第一行显式指定的,但依然可以定义构造器,只是构造器被强制为private权限, //因此无法通过调用构造器来显示创建实例 SeasonEnum(String name,int mouth ...
package org.lgy.study.enumstudy; /* 枚举类是一种特殊的类,它一样可以有自己的Field、方法,可以定义自己的构造器,可以实现一个或多个接口。 一个java源文件中只能定义一个public访问权限的枚举类,且该java源文件也必须和该枚举类的类名相同。 使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类。其中,java.lang.Enum类实现了 java.lang.Serializable和java.lang.Comparable接口。 使用enum定义的、非抽象的枚举类默认使用final修饰, ...
package org.lgy.study.innerclass; public class AnonymousTest{ public void test(Product p){ System.out.println("p.name = " + p.getName() + " p.price = " + p.getPrice()); } public static void main(String[] args){ final String str = "******"; Ano ...
package org.lgy.study.innerclass; public class LocalInnerClass{ public static void main(String[] args){ //如果需要在局部内部类中访问所在方法的局部变量,则必须将局部变量声明为final final int x = 1; //局部内部类仅在 ...
一、父类和子类在同一个外部类中 package org.lgy.study.innerclass; public class InnerClassInheritance{ //如果父类是静态的,则子类既可以是静态的也可以是非静态的; //如果父类是非静态的,则子类只能是非静态的。 public static class InBase{ public InBase(String msg){ System.out.println("InBase's constructor : " + msg); } public v ...
一、在外部类内部使用内部类 对于非静态内部类,不能在外部类的静态成员(静态方法、静态初始化块)中使用。 对于静态内部类,可以在任何成员(静态方法、实例方法、静态初始化块、普通初始化块)中使用。   二、 ...
package org.lgy.study.innerclass; /* 静态内部类属于外部类本身,而不属于外部类的对象。 使用静态内部类时无需创建外部类的对象。 */ public class StaticInnerClass{ private String str1 = "non static str1 in outer"; private static String str2 = "static str2 in outer"; public void method1(){ System.out.println ...
package org.lgy.study.innerclass; /* 非静态内部类是属于外部类对象的,而不是属于外部类。 如果想要使用非静态内部类,必须先创建一个外部类对象。 非静态内部类对象必须寄存在外部类对象里;而外部类对象不一定有内部类 ...
目录结构如下:                              |---classes(存放包和类文件) z:\ ---- Study----- |                            |---src(存放源文件)    源文件: package org.lgy.study.interfacestudy; public interface Output{ public static final int MAX_LINE = 10; public abstract void out(); public abstract v ...
1、成员方法的多态性 public class Polymorphism{ public static void main(String[] agrs){ BasePolymorphism b = new SubPolymorphism(); b.method1(); } } class BasePolymorphism{ public BasePolymorphism(){ //注意:此处调用的将是子类的method2方法 this.method2( ...
Global site tag (gtag.js) - Google Analytics