- 浏览: 140812 次
- 性别:
文章列表
Java虚拟机内存管理
- 博客分类:
- Java SE
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选项可以 ...
枚举类:包含抽象方法的枚举类
- 博客分类:
- Java SE
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 ...
枚举类:实现接口的枚举类
- 博客分类:
- Java SE
package org.lgy.study.enumstudy;
public interface GenderDesc{
void info();
}
package org.lgy.study.enumstudy;
/*
枚举类也可以实现一个或多个接口,与普通类实现一个或多个接口完全一样。
枚举类实现一个或多个接口时,也需要实现该接口所包含的方法。
*/
public enum Gender implements GenderDesc{
MALE("男"),FEMALE("女");
private S ...
枚举类:枚举类的Field、方法、构造器
- 博客分类:
- Java SE
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;
//局部内部类仅在 ...
内部类:内部类的继承
- 博客分类:
- Java SE
一、父类和子类在同一个外部类中
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 ...
内部类:非静态内部类
- 博客分类:
- Java SE
package org.lgy.study.innerclass;
/*
非静态内部类是属于外部类对象的,而不是属于外部类。
如果想要使用非静态内部类,必须先创建一个外部类对象。
非静态内部类对象必须寄存在外部类对象里;而外部类对象不一定有内部类 ...
包:命令行如何编译带包结构的源文件?
- 博客分类:
- Java SE
目录结构如下:
|---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 ...
多态:成员变量和成员方法的多态性
- 博客分类:
- Java SE
1、成员方法的多态性
public class Polymorphism{
public static void main(String[] agrs){
BasePolymorphism b = new SubPolymorphism();
b.method1();
}
}
class BasePolymorphism{
public BasePolymorphism(){
//注意:此处调用的将是子类的method2方法
this.method2( ...