前言

该文章是我在复习Java,所记录的一些知识点,主要是通过《Java编程思想》这一本书,所记录的。所记录的知识点,大都是我不知道或者是接触少容易忘记的,所以在此记录一下,以便查阅。如果对你也有帮助,那就是我莫大的荣幸了。

操作符

按位操作符

操作符(&,按位‘与’) :如果两个输入位都是1,则生成一个输出位1;

操作符(|,按位‘或’):如果两个输入位只要有一个是1,则生成一个输出位1;

操作符(^,按位‘异或’):如果输入位的某一个是1,但不全都是1,,则生成一个输出位1

操作符(~,按位‘非’):生成与输入位相反——若输入0,则输出1,若输入1,则输出0

位移操作符

左移操作符(<<): 能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)

“有符号” 右移操作符(>>): 则按照操作符右侧指定的位数将操作符左边的操作数向右移动。“有符号”的意思是指:若符号为正,则在高位补0,符号为负,则在高位补1

“无符号” 右移操作符(>>>): 无论符号正负,都在高位补0

(<<=或>>=或>>>=)表示将得到的结果赋值给左边的变量(对byte和short可能出现误差,原因是需要先转为int再做位移运算)

enum

在switch语句中可以使用枚举类

final关键字

  1. final属性(域):当数据为基本类型的时候,被final声明的数据被初始化后无法被修改,当数据位对象时,final保证其引用(内存地址)无法被修改,但是对象的值仍可修改。final数据只能在定义处或者在构造器中被赋值。此举保证了数据被使用前可以得到正确初始化。

  2. final参数:在方法参数声明中添加final,这意味着你无法在方法中修改参数引用所指向的对象。(意思就是说:参数指向一个对象,对象指向一个引用,你仍然可以通过参数修改对象的内容,但是无法修改参数指向,比如重新new 一个对象给这个参数)

  3. final方法:将被final修饰的方法锁定,以防任何继承类修改它的含义。将final和private进行对比,private更具安全性。

  4. final类:当final修饰类时,该类将无法被继承,且该类的方法都被隐式指定为final,String类为什么无法修改其值?原因在于底层数组用了private final,也是做过了特殊处理。
    此外可以通过反射修改String的数组哦!

类的初始化顺序

  1. 父类静态(代码块,变量赋值二者按顺序执行)
  2. 子类静态
  3. 父类构造代码块
  4. 父类构造方法
  5. 子类构造代码块
  6. 子类构造方法

Foreach与迭代器

任何类只要实现了Iterator接口,就可以使用foreach语法。

异常

修改异常的发生地

直接抛出异常不会修改原来的信息,调用异常对象的fillInStackTrace()再抛出,可以修改异常发生的地点。

异常链

在捕获一个异常后再抛出另外一个异常,常常想保存原来的异常信息,这就叫异常链。
有三个异常类的构造器可以接受cause参数,分别是Error,Exception,RuntimeException。如果其他类型则需要调用initCause().

异常使用指南

应该在下列情况下使用异常:

  • 在恰当的级别处理问题。(在知道该如何处理的情况下才捕获异常)
  • 解决问题并且重新调用产生异常的方法。
  • 进行少许修补,然后绕过异常发生的地方继续执行。
  • 用别的数据进行计算,以代替方法预计会返回的值。
  • 把当前的运行环境下能做的事情尽量做完,然后把相同的异常重抛到更高层。
  • 把当前的运行环境下能做的事情尽量做完,然后把不同的异常抛到更高层。
  • 终止程序。
  • 进行简化。(如果你的异常模式使问题变得太复杂,那用起来会非常痛苦也烦人)
  • 让类库和程序更安全。

字符串

String重载了操作符‘+’,在做‘+’运算时,编译器会自动使用StringBuilder进行处理。

正则匹配


本博客所有文章除特别声明外,均采用: 署名-非商业性使用-禁止演绎 4.0 国际协议,转载请保留原文链接及作者。

linux基本命令 上一篇
设计模式 下一篇

 目录


买个卤蛋,吃根冰棒