大家好,我是小小刀,又和大家见面了,下面我们直接进入分享
开场白
一个星期坚持下来了,我也给自己打个卡,下个星期加油!我们共同学习,共同进步!!
今日分享
数据共用一个栈内存问题(蔓延)
-
原问题
如果new 两个相同的基本数据类型,是不是它俩就共用同一个栈内存
-
回答(唐恒)
- 基本数据类型不能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)的进步,先上图
这是我们在前篇知识分享提到的那道多态的题目,这是那位小伙伴学习之后的第一次的分享,我仔细看了下,说这感觉很像离散数学里面的三段式推论,然后第二天,小伙伴就做了第二次分享:
这样的注释读起来,逻辑条理都清楚了许多,而且恕我直言,一下子和好多程序员拉开了差距!