【java:牛客每日三十题总结-6】

java:牛客每日三十题总结

  • 总结如下

总结如下

  1. transient 变量和序列化有关,这是一个空接口,起标记作用,具体的序列化由ObjectOutputStream和ObjectInputStream完成。transient修饰的变量不能被序列化,static变量不管加没加transient都不可以被序列化
  2. 主义什么时候引用类型是从cache中拿的实例
    只有进行直接赋值和使用.valueof()方法并且-值为128至127时,从内部维护的cache中拿取实例。其余的是新建对象。
    【java:牛客每日三十题总结-6】_第1张图片
  3. java中的移位运算
    ‘ >>为带符号右移,右移后左边的空位被填充为符号位
    ’ >>>为不带符号右移,右移后左边的空位被填充为0
    没有<<< 因为<<后右边总是补0
  4. 维护map结构的数据类型底层
    ThreadLocalMap使用开放定址法解决hash冲突,HashMap使用链地址法解决hash冲突。
  5. socket连接过程
    其中
    【java:牛客每日三十题总结-6】_第2张图片
  6. protected abstract void f1();是正确的方法声明,不违反规范,且抽象类可以被子类重写。
  7. 方法头指:修饰符+返回类型 +方法名(形参列表)
    • 接口的访问权限:public,abstract
    • 两同两小一大原则
    • 返回值和参数列表相同
    • 返回值类型小于等于父类的返回值类型
    • 异常小于等于父类抛出异常
    • 访问权限大于等于父类
  8. 数组相关知识
  • 当数组的初始化完成后数组在内存中所占用的空间将会被固定,即使我们清空这个数组中的元素,它所占用的空间依然会被保留。这造成了Java数组长度的不可变,选项B错误。
  • Java语言中,数组是一种引用类型的变量,使用它定义变量时,这个引用变量还没有指向任何有效的内存空间,因此定义数组时不能指定数组的长度。而由于这个引用变量并没有指向任何有效的内存空间,所以没有空间来存储任何元素,只有当对数组初始化后,才可以使用这个数组。正确的定义方式为int[] array =new int[100]。
  • 数组是一种引用数据类型,继承自Object类的,所以其中也包含了未被重写的equals()方法,所有的引用变量都能调用equals()方法来判断他是否与其他引用变量相等,使用这个方法来判断两个引用对象是否相等的判断标准与使用==运算符没有区别,只有在两个引用变量指向同一个对象才会返回true。如果想达到E选项描述的效果,需要使用Arrays.equals()方法。
  1. 局部变量相关知识
  • 不是局部变量在该方法被执行/调用时创建,而是应该为在该变量被声明并赋值时创建,可以理解为“当代码执行到该变量被赋值的代码时才被创建
  • 栈会为每个方法在运行的时候分配一块独立的栈帧内存区域,栈帧又包含“局部变量表”、“操作数栈”、“动态链接”以及“方法出口”四个部分。
  1. java标识符相关信息
    void属于java中的关键字 [1]Java标识符只能由数字、字母、下划线“_”或“ ”符号以及 U n i c o d e 字符集组成 [ 2 ] J a v a 标识符必须以字母、下划线 “ ” 或“ ”符号以及Unicode字符集组成 [2]Java标识符必须以字母、下划线“_”或“ 符号以及Unicode字符集组成[2]Java标识符必须以字母、下划线”符号以及Unicode字符集开头 [3]Java标识符不可以是Java关键字、保留字(const、goto)和字面量(true、false、null) [4]Java标识符区分大小写,是大小写敏感的

你可能感兴趣的:(刷题总结,java,开发语言)