`

Java的Class类初学习

    博客分类:
  • Java
阅读更多

      Java在真正使用一个类似才会加以加载,而不是在程序启动时就加载所有的类。Class类没有公开的构造函数。Class对象由JVM自动产生。每当一个类被加载时,JVM就自动为其生成一个Class对象。声明参考名称时类不会被加载,在使用new生成对象时类才会被加载。下面的代码是java.lang.Class类的简单使用。

 

public class classTest 
{
	public static void main(String[] args)
	{
		String str = "yoyo";
		Class<? extends String> strClass = str.getClass();
		System.out.println(strClass.getName());
		Class<String> stringClass = String.class;
		System.out.println(stringClass.getName());
		
		System.out.println(int.class);
		System.out.println(Integer.class);
		System.out.println(boolean.class);
		System.out.println(Boolean.class);
		System.out.println(void.class);
		System.out.println(Void.class);
	
		int[] array = new int[10];
		Class<? extends int[]> arrayClass = array.getClass();
		System.out.println(arrayClass.getName());
		System.out.println(arrayClass.isArray());
		System.out.println(arrayClass.isEnum());
		System.out.println(arrayClass.isInterface());
		System.out.println(arrayClass.isPrimitive());
		System.out.println(arrayClass.getSuperclass().toString());
		
		testDemo test = null;
		System.out.println("Start");
		test = new testDemo();
		System.out.println("End");
	}
}

class testDemo
{
	static
	{
		System.out.println("******");
	}
}

 

 

输出结果为:

 

java.lang.String
java.lang.String
int
class java.lang.Integer
boolean
class java.lang.Boolean
void
class java.lang.Void
[I
true
false
false
false
class java.lang.Object
Start
******
End

 

 

     可以使用Class的静态forName()方法实现动态加载类。Class的静态forName()方法有两个版本:

 

     static Class forName(String name) 和

     static Class forName(String name, boolean initialize, ClassLoader loader)

 

      在加载类的时候,默认是如果类中有定义静态区块则会运行它。如果将initialize设置为false,则在加载类时不会立即运行静态区块,而是在使用类建立对象时才允许静态区块。如下面的代码。

 

package org.yoyo.test;

import java.lang.reflect.Modifier;

public class Test 
{
	public static void main(String[] args)
	{
		try 
		{
//			Class<?> c1 = Class.forName("org.yoyo.test.staticDemo");			
//			getResult();  //输出:CAB
			
			Class<?> c2 = Class.forName("org.yoyo.test.staticDemo", false, Thread.currentThread().getContextClassLoader());
			getResult();

			System.out.println(c2.getName());
			System.out.println(c2.getPackage().getName());
			System.out.println(c2.getModifiers());
			System.out.println(Modifier.isInterface(c2.getModifiers()));
			
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static void getResult()
	{
		System.out.print("A");
		staticDemo test = null;
		
		System.out.print("B");
		test = new staticDemo();
		
		System.out.println();
	}
}

class staticDemo
{
	static 
	{
		System.out.print("C");
	}
}

 

输出结果为:

 

ABC
org.yoyo.test.staticDemo
org.yoyo.test
0
false

  

6
1
分享到:
评论

相关推荐

    java的初体验

    }}"是经典的Java程序,它定义了一个公共类(public class)HelloWorld,其中包含一个主方法(main method),这是Java程序执行的入口点。System.out.println()是输出语句,用于在控制台打印文本。 在Java中,我们...

    java初 学习 笔记

    源代码被Java编译器`javac`编译成字节码(`.class`文件),然后由Java虚拟机(JVM)解释执行。JVM根据不同的平台有不同的实现,如HotSpot VM、KVM等。字节码使得Java程序可以在任何支持JVM的平台上运行,无需重新...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...

    java新手初悟

    【Java新手初悟】这篇内容主要涉及了Java编程中的几个基础知识点,包括四舍五入的处理、抽象类与接口的应用以及在命令行下编译和运行带包的Java文件,以及如何打包成JAR文件。以下是这些知识点的详细解释: 1. **四...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...

    JAVA SE练习代码 Java学习资料

    1. **基础语法**:Java是一种面向对象的语言,学习之初需要掌握基础语法,包括数据类型(如整型、浮点型、字符型、布尔型)、变量声明、运算符、控制结构(如if语句、for循环、while循环)以及方法定义。 2. **类与...

    UstbQQClient_java初训_

    结构方面,Java程序通常由类(Class)组成,类是对象的蓝图。每个类可以包含属性(变量)和行为(方法)。主程序通常在名为`Main`的公共类中的`main`方法中启动,这是Java应用程序的入口点。例如: ```java public ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...

    Java入门学习基础

    例如,创建一个简单的"Hello World"程序,首先编写一个名为Hello.java的源文件,包含`public class Hello { public static void main(String args[]) { System.out.println("欢迎你学习 Java 语言!"); } }`这段代码...

    java-agent学习1

    通过以上步骤,我们不仅了解了 Java Agent 的基本概念和应用场景,还深入学习了如何实现一个简单的 Java Agent。Java Agent 的强大之处在于它能够在不修改源代码的情况下对现有应用程序进行增强,这在生产环境中对于...

    java从入门到精通视频教程(全94讲)学习笔记整理(齐全).docx

    Java是一种广泛使用的编程语言,由James Gosling在1990年代初作为Sun Microsystems的绿色计划的一部分创建,最初命名为Oak。1995年,Sun正式发布了Java的第一个版本,现在最新的稳定版本是JDK 7.0。Java以其简单性、...

    java学习笔记

    Java设计之初就非常注重安全性,这主要体现在以下几个方面: - **严格的类型检查**:所有变量必须明确指定类型,避免类型错误。 - **异常处理机制**:Java提供了一套强大的异常处理系统,可以有效捕获和处理运行时...

    JAVA 学习上课资料 幻灯片

    Java由Sun Microsystems的James Gosling领导的团队在1990年代初创建,最初是为了控制家用电器。1995年,Java在SunWorld会议上正式发布,Netscape宣布在其浏览器中支持Java,从而开启了Java的迅速推广。\n\nJava语言...

    URLClassLoader初体验

    在Java世界中,`URLClassLoader`是一个非常关键的类,它是`ClassLoader`的子类,主要用于从指定的URL(统一资源定位符)加载类...通过学习和掌握`URLClassLoader`,我们可以更好地理解和控制Java应用程序的类加载行为。

    java魔方 真牛逼

    2. **rubik.class**:同样,这又是一个编译后的Java类文件,很可能代表了魔方的核心类,包含了魔方的旋转、还原等操作逻辑。可能包含对魔方状态的表示、算法实现以及与用户交互的方法。 3. **applet(冲突2012-02-01...

    李兴华老师Java基础笔记

    总的来说,《李兴华老师Java基础笔记》是一份涵盖Java SE核心知识的宝典,无论你是初入Java殿堂的新手,还是想要系统复习的老兵,都能从中受益匪浅。通过系统学习这份笔记,你将能够掌握扎实的Java编程基础,为后续...

    java从入门到精通视频教程学习笔记全

    Java是一种广泛使用的高级编程语言,由Sun Microsystems的詹姆斯·高斯林(James Gosling)于1990年代初启动的“绿色计划”中诞生,最初名为Oak。1994年,高斯林在硅谷大会上展示了Java的功能,引起了业界的广泛关注...

    java 在线 画板 嵌入java-applet

    Java Applet 的工作原理是:服务器端将 Applet 类文件发送到用户的浏览器,浏览器中的 Java 插件负责加载并执行这些类文件。由于这个过程依赖于 Java 虚拟机,因此访问包含 Applet 的网页时,用户需要确保他们的...

    JAVA各章习题及答案.pdf

    总的来说,这份习题集涵盖了Java语言的基础概念,包括语言特点、程序结构、类和对象、包的分类、Applet和Application的区别、多线程支持以及源文件命名规则等,这些都是学习Java编程时需要掌握的关键知识点。...

Global site tag (gtag.js) - Google Analytics