1 java世界中万事万物皆对象,除了2个特殊情况
- int float等这些基本数据类型,(但是也都有Integer和Float等封装类做了弥补)
- java staic定义的,它不是属于对象的,而是属于类的
2 类也是对象,类是java.lang.Class类的实例对象 相当于 "There is a class named Class"
下面用代码说明:“任何一个类都是Class类的实例对象,有三种表示方式”
[java] view plain copy
- package com.xsf.Test;
- public class classDemo1 {
- public static void main(String[] args) {
- Test1 test1 = new Test1();//通过new的方式表示Test1的实例对象
- /**
- * 其实Test1类也是对象是java.lang.Class对象的,如何表示?就不可以通过new的方式
- * 任何一个类都是Class类的实例对象,有三种表示方式
- * t1,t2,t3都是Test1的类类型因而都相等
- */
- Class t1 = Test1.class;//第一种方式,任何一个类都有一个隐含的静态成员
- Class t2 = test1.getClass();//第二种方式,已知该类的对象通过getclass方法获取
- //t1,t2表示了Test1类的类类型(class Type)
- /**
- * 万事万物皆对象
- * 类也是对象是class类的实例对象
- * 这个对象我们称为该类的类类型
- */
- System.out.println(t1==t2);
- Class t3 = null;//第三种方式
- try {
- t3 = Class.forName("com.xsf.Test.ClassDemo1");
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- System.out.println(t2==t3);
- //可以通过类的类类型创建该类的实例对象:通过t1,t2,t3创建Test1的实例对象
- try {
- Test1 t4 = (Test1)t1.newInstance();//需要有无参数的构造方法
- t4.init();
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- }
- class Test1{
- void init() {
- System.out.println("Hello World!");
- }
- }
转自:http://blog.csdn.net/xsf50717/article/details/44964605
时间: 2024-09-13 19:42:48