一些小记录

来源:互联网 发布:数据流图数据字典实例 编辑:程序博客网 时间:2024/06/05 19:46
享元模式
关于自动拆装箱 还有可变参数.  用...来代表,只能出现在参数列表的最后面,前后可以有空格,
自动拆装箱子 当大小超过一个字节的时  会新建一个数组来存放数据.  而不是复用原来的 .所有范围是   -128~127之间

比如26个英文名字母,如果每个单词的英文组成都是一个独立的单词,那么单词的数量是成千上万的.
而如果一个单词中的一个i  和另一个单词的中的一个和i   是共享的.  那么 我们只需要26个英文字母就可以组成各种单词了.
这就是享元设计模式. 
我们把外部传入的作为外部参数. 比如说i 的x坐标和y坐标.  这样就能区分,这个i和别的i的区别在哪里.  而内部特征是一样的 都是i


isPrimitives判断是否是原始数据类型



什么是反射?

反射就是把java类中的各种成分映射成相应的java类

第一行,通过字节码得到class的一个构造函数    参数为StringBuffer
第二行.通过得到的构造函数 去实例  往里边去传入StrinBuffer对象   
这里X是公共的
Y是私有的
所以要通过getDeclaredField来得到字段
然后设置 setAccissible来暴力反射
基本数据类型的一维数组是不可以转换成object类型的[用Arrays.asLIst] 去转换
int类型不是object类型 所以按照jdk1.5去编译  所以把int类型的数组当做一个对象去打印  转换失败
而String类型数组 是object的, 所以按照1.4去编译,当做一个一个参数 输出出来



ArrayList每次存储的时候只会存储到下一个位置.  和存储的内容无关, 可以重复

HashSet每次存储的时候会去判断一下是否已经存在, 存在就不存了.



而如果重写了equals和HashCode方法的话 数量又不一样了..  数量变成了2 因为他会首先比较hashCode值是否相同.相同的情况下在进行equals的比较. 如果都重复了 就不添加了.
而一开始 如果没有重写HashCode和equals方法.  所生成的hashCode是随机的  所以每个对象也是不一样的. 根本没有机会去equals


这里在数组添加了p1之后又修改了p1里面的内容. 所以p1的hashcode值 又改变了  所以删除的时候找不到了  
这也就是所谓的内存泄露.  当你在以后的运算中不需要该对象,而该对象还在运行中,没有被释放,这就是内存泄露


这样就直接删除了
hashcode算法 内部通过对某个数字进行取余的方式 对哈希吗进行分组和划分对象的存储区域   hashcode值相同的就存储在一期.
这就是一个小型的框架.
通过反射.  不知道后来的人的类名.但是可以通过反射来代表类 

内省

通过propertyDescriptor 来设置javabean



泛型里边    父子关系不考虑继承.. 看是啥泛型就是啥泛型  不能装其他的

这样会报错
 
?通配符可以引用其他各种参数化的类型,?通配符定义的变量主要用作引用,可以调用与参数化无关的方法.不能调用与参数化有关的方法.


上边界,说明后面的对象一定要是Number的子类或者Number类型. 所以第二行String报错
下边界,说明后面的对象一定要是Integer的父类或者Integer类型,所以第二行Byte报错

只有引用类型才能作为泛型的实际参数

0 0
原创粉丝点击