关于java中一些小技巧

如果直接写一个java.lang.String类,并写一个main方法,即


(改图为转载网络中的)

[java] view plain copy
  1. package java.lang;  
  2.   
  3. public class String {  
  4.   
  5.     public static void main(String[] args) {  
  6.         System.out.println("Hello String");  
  7.     }  
  8.   
  9. }  


运行之后会抛一个异常:

错误: 在类 java.lang.String 中找不到主方法, 请将主方法定义为:
   public static void main(String[] args)



java类的加载模式是“双亲委托模型”



先找Bootstrap ClassLoader----系统的


再找Extension ClassLoader----扩展的


最后找App ClassLoader   ----容器中的jar包(例如:程序中的lib目录下的、tomcat中的)



三个中,只要有一个找到,就可以进行类的加载,再进行验证、初始化等等操作



如果最后都没有找到,会抛出ClassNotFoundException异常







所有:类加载中,先找到Bootstrap 中已经存在了java.util.String类了。就直接返回。但是在运行函数main的时候,发现系统类中,并没有main方法,所以就会抛出异常







String 的值是常量池中的值,所以采用“==”来比较是可以得到true的。但如果是用new  String这种变量来比较,则不同,因为new一个对象的地址是放在堆里面的。所以就会得到false


当我们创建String s1 = "abc"这样一个对象之后,"abc"就存储到了常量池(也可叫做字符串池)中,

当我们创建引用String s2 = "abc" 的时候,Java底层会优先在常量池中查找是否存在"abc",如果存在则让s2指向这个值,



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值