读java编程思想小记(第一遍)

1.static变量是在编译期初始化的

2.final变量不一定是在编译期初始化。如果在编译期初始化,那该变量必须是基本数据类型;如果是对象类型,在其初始化之后,不可再给句柄引用新的对象,但可以对原引用对象的对象本身进行改变

3.当new一个子类对象时的顺序:

(1) 在采取其他任何操作之前,为对象分配的存储空间初始化成二进制零。(成员变量也会分配初始值,根绝数据类型不同,如int就是0)
(2)调用父类构建方法。(这一步是先给成员变量按顺序初始化,然后再执行构造方法内其余代码)
(3)调用子类构建方法。(执行内容同上)

4.匿名内部类调用外部变量时,外部变量必须是final修饰的,原因有:为了保持内部外部变量的一致性,为了在外部变量被gc处理之后,内部类仍然可以用相同值的变量。内部类中会默认拷贝一份外部变量

5.java中只有传值调用,没有传址调用,对于方法中参数值改变的情况:

(1)对于基本类型参数和String、Integer、Double等,在方法体内对参数进行重新赋值,并不会改变原有变量的值

(2)对于引用类型参数,在方法体内对参数进行重新赋予引用,并不会改变原有变量所持有的引用。

(3)方法体内对参数进行运算,不影响原有变量的值

(4)方法体内对参数所指向对象的属性进行操作,将改变原有变量所指向对象的属性值

6.将字符串按照\分割:String s = "23\\56\\78";
String sp = "\\\\";
String[] ss = s.split(sp);

7.内部类部分没全明白,第二遍重点学习

8.获取数组的下一个元素,判断是否已经遍历了一次循环:(书中7.6.9章节)

next = (next+1)%length;

9.类的继承中,如果有类重写了父类的finalize()方法,则在该类的finalize()方法中,需要在自己的操作之后调用父类的finalize()方法,不然在对象回收时并不调用其父类的finalize()。子类与父类的回收顺序与初始化顺序相反,先回收子类再回收父类。

10.移位运算符:a<<b表示符号a的二进制数向左移动b位,低位补0,等同于a*(2的b次方)。“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java 也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0

11.hashtable存放键值对,是Dictionary的子类,在get方法中,先获取参数的 hashCode,然后用hashCode值去查找key集合中对应的对象,然后在根据key所在的索引,查找value集合内对应的对象,完成get

12.ListIterator类:

(1)

ListIterator指向的位置1在调用next()方法之后,移动到了2

(2)add(Object o)方法,是在当前位置之前插入元素(左边)

(3)remove()方法,是移除当前位置之后的元素(右边),但是,必须在next()或者previous()之后调用,且期间不可调用add(Object o)方法(因为调用后目标元素指向不明)

(4)set(Object o)方法,改变最近一次的next()方法或者previous()方法的返回元素为o

(5)new ListIterator(int index),调用该构造器,会把ListIterator的位置放到对应索引元素之前(左边)

13.Set接口:

(1)添加到Set中的元素,用equals方法进行比较,不允许重复

(2)HashSet用于除非常小以外的所有Set。对象也必须定义hashCode()

(3)ArraySet面向非常小的Set设计,特别是需要频繁创建和删除的,不需要定义hashCode()

(4)ArraySet和HashSet采用不同的方法来保存元素,以便他们以后的定位,ArraySet 保持着它们的顺序状态,而HashSet使用一个散列函数(这是特
别为快速检索设计的)

14.Map接口

(1)key的集合不允许重复

15.数组排序与搜索:在执行一次binarySearch()之前如果不调用sort()便会发生不可预测的行为,其中甚至包括无限循环


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值