大家好,我是小小刀,又和大家见面了,下面我们直接进入分享

开场白


一个星期坚持下来了,我也给自己打个卡,下个星期加油!我们共同学习,共同进步!!

今日分享


数据共用一个栈内存问题(蔓延)

  • 原问题
    

如果new 两个相同的基本数据类型,是不是它俩就共用同一个栈内存

  • 回答(唐恒)
    
    1. 基本数据类型不能new,然后是==和equal的区别
  • 扩展
    

栈和堆里面都存放的有哪些东西?

自定义图标库(TAO,唐恒)

  • 原分享
    

http://fontawesome.dashgame.com

http://www.17sucai.com

http://www.iconfont.cn/home/index

循环输出1-100 (小小刀)

  • 原分享
    

IntStream.range(1,100).forEach(System.out::println)

  • 小刀说
    

在群里看到有小伙伴问怎么输出0-100,然后我就想了下,应该可以用Stream试一试,然后就写了如上代码。使用jdk8有一段时间了,但代码的重构一直没有进行,应该还是对java8的新特性使用不熟,以后还要加强这样的刻意练习。

  • 扩展
    

使用lambda表达式输出水仙花数

java泛型(小白 PS:群里人都很兼虚,好多人昵称叫小白)

  • 原分享
    

今天复习了一下关于java的泛型的相关知识:
1.泛型使得java可以创建按类型参数化的类;
2.泛型在java集合类型中使用会让集合记住元素的类(不再全是object),为后面的取提供了便利,并且会避免许多不必要的错误;
3.List<A>, List<B>,即使B是A的子类,泛型后者也不能看成是前者的子类,泛型没有这种继承关系;
4.List<?>是泛型的通配符,可以看做List<String>,List<Integer>等的“父类”,一定程度解决泛型不能继承的问题;
5.类和方法也可以通过增加泛型参数进行泛型化,参数还可以有上限下限等限制;

  • 二次分享
    

#泛型通配符#
1.<? extends E>是上限通配符,即?所表示的类型只能是E和E的子类;
2.上限通配在写入时只能进行E类型数据的写入,而读取时会返回一个E类型的对象;
3.<? super E>是下限通配符,即?所表示的类型是E和E的父类;
4.下限通配在写入时向下兼容,即可以写入E的子类,读取时返回的是Object对象,要进行转换;
泛型的通配可以联系类的继承关系理解。


  • 再扩展
    


泛型这块,没什么好扩展的了,但有个知识点是我最近才get到的,和大家分享下
class A<T>{
   void show(T t){...}
}

class B extends A<String>{
   @override
   void show(String s){...}
}

看起来没什么两样,小伙伴们可以看下.class文件


最后说两句


最后给大家分享一位小伙伴(lmbby)的进步,先上图

这是我们在前篇知识分享提到的那道多态的题目,这是那位小伙伴学习之后的第一次的分享,我仔细看了下,说这感觉很像离散数学里面的三段式推论,然后第二天,小伙伴就做了第二次分享:

这样的注释读起来,逻辑条理都清楚了许多,而且恕我直言,一下子和好多程序员拉开了差距!