读书笔记-1

只是杂乱的记下,为了马上而来的笔试波,望见谅!

  1. java函数的传参,如果形参为对象句柄则传递的是对象句柄的副本,而不是对象对象句柄指向的对象的副本。
  2. 注意i++

int i=0;i=i++;system.out.println(i);//i=0

int i=0;i++;system.out.println(i);//i=1

  1. java中涉及byte、short、char类型的运算操作首先都回把这些值转换为int类型,然后对int类型进行运算,最后得到int类型的结果。注意short s=1;s+=1;正确,但是short s=1;s=s+1;编译出错。
  2. static函数,比如main,不能直接访问非static类型的变量和函数
  3. final、finally、finalize的区别

    final

    修饰符(关键字)如果一个被声明final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final。将变量或方法声明final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 一句话:final修饰类时:没有祖先的光棍(不能继承也不能被继承),final修饰变量或者方法时:固定的,只能拿来用,不能改。

    finally

    在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 

    finalize

    方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

  4. 本地方法和抽象方法都没有方法体
  5. Java反射安全性

    实际上java在反射创建一个类的实例时,默认会检测是否符合相关安全,该检测开关也可以关闭。

    ConstructorFieldMethod都是继承于AccessibleObject,对应实例调用setAccessible(true)关闭该检测开关

    如上面的例子,在代码 cts[i].newInstance(null);行前调用上述方法: cts[i].setAccessible(true);

    这样就可以创建只有构造函数的实例、调用私有构造方法,访问类的私有属性。

    这样好像java安全性就大大降低.如果你非常注重应用的安全性,java当然考虑到这方面,你可以JVM启动参数增加 -Djava.security.manager 启用安全管理器,如果有该参数,它将检测正在关闭接入检测的代码是否许可了这样做,上述代码执行时会抛出java.security.AccessControlException异常。

  6. Java布尔类型默认初始值为false
  7. 如果要读比较大的文本文件,则new BufferedReader(new InputStreamReader(new FileInputStream("file.txt")));
  8. Java Socket编程
  9. Java序列化实现标记接口(Serializable接口),序列化对象(写),先创建一个OutputStream然后将它嵌入到ObjectOutputStream,用writeObject方法将对象写入到OutputStream。反序列化(读)。把InputStream潜入到ObjectInputStream,然后调用readObject方法
  10. Java switch语句

    表达式的类型只能为byteshortcharint4种之一。

     Case的值只能为常数或常量,不能为变量

  11. 随机数,Random()和Random(long seed),其中Random()使用当前时间(System.currentTimeMillis())作为发生器的种子,不会产生重复随机数;而Random(long seed)使用指定的seed作为发生器种子,会产生重复随机数。
  12. Set不能包含重复元素,Map不属于Collection接口

你可能感兴趣的:(读书笔记-1)