类对象和类的对象

反射

    定义:是程序运行时,自审并对内部的成员进行操作(反射是使用,反编译是查看)

                java运行时变成class文件,自审是针对class文件的

计算机能认识 .class文件,不认识 .java文件,

在内存中需要加载这个java的class文件,由于java中一切皆对象,那么就是在对内存中把class文件封装成了一个对象

 

类对象和类的对象:

    class文件在内存中的类对象表现x形式就只有一个,

    类的全称是:包名+类名(不同包的类名可以相同)

getClass( )方法:获得运行时的那个 .class文件(类对象),返回类型Class类==》所有的 .class文件对应的对象就是Class这个类的对象

Class类负责管理所有 .class文件 && .class文件被封装成了对象(叫类对象)

(**也就是说类对象就是Class类的对象**)

(增强理解:类的对象是根据类new出来的,Class类的new出来的类的对象都是.class文件(类对象))

类的对象 .getclass的结果是类对象(.class文件)

类--->jvm--->new 对象  类的对象
类         public Class String{}
类对象  String.class  单例  一般加载进内存不销毁   jvm虚拟机分配内存
类的对象   String str=new String(); String str1=null;

 

类对象一般加载到内存中不会销毁,会销毁但是不轻易销毁(那什么情况下会销毁呢??)

类对象就相当于人类,类的对象就相当于人,人可以被销毁(内存中被回收释放),人类是不可能销毁的,

我们是根据人类创建的人,而人类中有一个

 

 

 

pvivate针对我们是私有的;但是针对虚拟机JVM不是私有的(你的秘密针对别人来说是个秘密,但是针对人类来说、自己来说就不再是私有的了)

虚拟机加载类进去是可以获得所有的成员(要是保密都加载不进去了,还能用个屁)

但是局部成员是不能获取的,因为局部根本没有暴露(要是暴露了那就内存泄漏了,为什么这么说?这个局部变量名字,你这里也有,我这里也有,内存就傻眼啦)

类可不一样,类是包名+类名,类名相同的话,但是还有包名不同限制着呢,但还是方法和方法之间不可能会冲突(不同的类可以有同种的方法,但是这些方法也算是有路径的存在方法区中)



 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/lm2-1/p/8504830.html