编译时 和运行时

编译时和运行时编译时编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.运行时所谓运行时就是代码跑起来了.被装载到内存中去了常量的计算是在编译时进行的  变量的计算是在运行时进行的http://www.cnblogs.com/downey/p/4946807.html泛型泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。作用 :参数类型化 避免类型转换失败 把运行时的错误转到编译时 有擦除的功能  安全机制?(占位符) extnd T 上限? super T  上限 T  有类型?  未知类型 占位符一、通配符的上界既然知道List<Cat>并不是List<Anilmal>的子类型,那就需要去寻找替他解决的办法, 是AnimalTrianer.act()方法变得更为通用(既可以接受List<Animal>类型,也可以接受List<Cat>等参数)。在Java里解决办法就是使用通配符“?”,具体到AnimalTrianer,就是将方法改为act(List< extends Animal> list),当中“?”就是通配符,而“? extends Animal”则表示通配符“?”的上界为Animal,换句话说就是,“? extends Animal”可以代表Animal或其子类,可代表不了Animal的父类(如Object),因为通配符的上界是Animal。如下,为改进之后的AnimalTrianer现总结如下,对于通配符的上界,有以下几条基本规则:(假设给定的泛型类型为G,(如List<E>中的List),两个具体的泛型参数X、Y,当中Y是X的子类(如上的Animal和Cat))•G<? extends Y> 是 G<? extends X>的子类型(如List<? extends Cat> 是 List<? extends Animal>的子类型)。
•G<X> 是 G<? extends X>的子类型(如List<Animal> 是 List<? extends Animal>的子类型)
•G<?> 与 G<? extends Object>等同,如List<?> 与List<? extends Objext>等同。
http://sharewind.iteye.com/blog/1622164集合String StringBuffer StringBuiler的区别String类:String类是不可变类,任何对String的改变都会引发新的String对象的生成;不能拼接StringBuffer:而StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。可以拼接 线程安全StringBuffer和StringBuilder类的区别也在于此,新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高http://www.cnblogs.com/Fskjb/archive/2010/04/19/1715176.html图片加载优化:使用好的网络加载工具展示略缩图先展示给用户看 在缓存在滑动的时候不加载图片 停止时在加载图片三级缓存
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值