动态加载 静态加载 static Class.forName
写这篇文章是看到一篇文章
震惊,一行MD5居然让小伙伴都回不了家!!! - 京东云开发者 - 博客园 (cnblogs.com)
震惊,一行MD5居然让小伙伴都回不了家!!! - 掘金 (juejin.cn)
动态加载 静态加载
Class.forName 代表了动态加载类。
编译时加载是静态加载类,
运行时加载是动态加载类。
代码为例:
public class Main{
public static void main(String args[]){
String name = "Mike";
if("Tom".equals(name)){
Bean b=new Bean();
b.run();
}
}
}
这段代码编译就通不过,编译时报错。
new 是静态加载类,在编译时就需要加载所有可能使用到的类。
而在日常中我们希望用到哪个就加载哪个,不用不加载,就需要动态加载类。
代码为例:
public class Main{
public static void main(String args[]){
String name = "Mike";
if("Tom".equals(name)){
Class c=Class.forName("com.xxx.Bean");
Bean b=(Bean)c.newInstance();
b.run();
}
}
}
这段代码,就是动态加载。代码逻辑如果没有走进if里,就不会加载Bean这个类。只有使用到了,才会加载。
java动态加载类和静态加载类_scx_white的博客-CSDN博客
static的方法就一直在栈中了,除非你关掉程序,否则就一直占着。而实例化出来的方法,你使用时会留在栈中,使用完了便GC了,而你的静态方法多了,就相当于你玩手机时,把电话本,短信,音乐等所有你能开的都开开了,这时你要是想玩个游戏,不清一下内存,我的2GRAM手机是绝对带不起来的
为什么静态方法会导致性能下降?-CSDN社区
2006年的上古帖子,看看图个乐子。没想到csdn还保存有2006年的数据。
我发现我同事的java代码中所有class的方法都是static,他说这样调用就很方便(因为不用new一个对象了,直接class.方法调用),请问他这样-CSDN社区
还没有评论,来说两句吧...