1 java世界中万事万物皆对象,除了2个特殊情况
- int float等这些基本数据类型,(但是也都有Integer和Float等封装类做了弥补)
- java staic定义的,它不是属于对象的,而是属于类的
2 类也是对象,类是java.lang.Class类的实例对象 相当于 "There is a class named Class"
下面用代码说明:“任何一个类都是Class类的实例对象,有三种表示方式”
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!"); } }