小言_互联网的博客

Java基础: 小知识点总结

243人阅读  评论(0)

前言


本文主要包含Java中各种易被忽视的小知识点

  • 《Java核心技术 卷1》
  • 《Java程序员面试笔试宝典》

学习重点 : 了解大于应用


  1. 运行已编译程序时, JVM从类中main方法开始执行, 因此为了代码可以执行, 类的源文件必须包含一个main方法, main方法必须为public
  2. /* */不能嵌套
  3. 长整型数值有后缀L,十六进制有前缀0X,八进制前缀0,二进制前缀Ob
  4. 操作数自动转换 int -> long -> float -> double (两个操作数中有一个为大类型, 另外一个自动转为大类型)
    5.Math.round()返回长整型,对于正数四舍五入, 对于负数在取值为 0.5 时向水平轴 0 方向取整 eg : Math.round(-11.5) == -11
  5. 移位运算符左移取模32 1 << 35 = 1 <<3
  6. break跳转到标签语句块末尾(read_data:)
  7. Arrays.toString()打印一维数组 Arrays.deepToString()打印二维数组
  8. (byte)300 = 44;截断高位,保留低位,相当于300%256=44
  9. 隐式参数为方法的调用者
  10. 方法名及参数类型叫做方法的签名

  1. 浅拷贝:未克隆对象中引用的其他对象
  2. Error,RuntimeException都是非检查型异常
  3. Switch语句的参数可以是整数(int,Integer以下),枚举常量,字符串
  4. char类型用来存储unicode编码的字符,unicode编码字符集包含了汉字,因此char类型可以存储汉字,并且unicode编码占用2个字节,char类型变量占用2个字节
  5. 静态变量和实例变量的区别
    • 语法:静态变量前加static,实例变量前不加
    • 运行:实例变量属于某个对象的属性,必须创建实例对象,实例变量才会被分配空间并才能使用.而静态变量只要程序加载了类的字节码,不用创建任何实例对象,静态变量就被分配内存,可以开始使用
  6. 当一个static方法调用时,可能还没创建任何实例对象,因此不能在static方法中调用非static方法和属性
  7. 构造器不能被继承,因此不能被Override,但可以Overload
  8. 接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类
  9. 访问修饰符的访问权限
  10. 内部类能访问外部类中的成员变量和常量; 创建内部类的实例对象,必须先创建外部类的实例对象,方法内部定义的内部类前面不能有访问修饰符
     Outer outer = new Outer();
     Outer.Inner inner = outer.new Inner();
    

  1. getClass()方法在Object类中定义成了final,因此子类不能覆盖

  2. j = j++等同于
    		temp = j; 
    		j = j + 1; 
    		j = temp
    因此j的值不变
    
  3. == 对于基本类型来说是值比较,对于引用类型来说是比较的是内存地址;equals 也是引用比较,但很多类重新定义 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

  4. 十进制的数在内存中使用补码保存

  5. 字节是存储容量的基本单位,字符是数子,字母,汉子以及其他语言的各种符号。1 字节=8 个二进制单位:一个一个字符由一个字节或多个字节的二进制单位组成。

  6. PriorityQueue是基于完全二叉树实现的优先级队列,默认小顶堆

  7. 内存泄漏: 不再使用的对象没有得到及时的回收,持续占用内存空间而造成内存空间的浪费的情况。发生内存泄漏的第一个迹象通常是:在应用程序中出现了 OutOfMemoryErroe(OOM)


  1. 内存溢出:程序在申请内存时,没有足够的内存空间供其使用。(内存泄漏容易导致内存溢出,但内存溢出不一定是内存泄漏导致)
  2. 泛型,即参数化类型,泛型擦除:Java 编译器生成的字节码文件不包含有泛型信息,泛型信息将在编译时被擦除,这个过程称为泛型擦除。其主要过程为 1)将所有泛型参数用其最左边界(最顶级的父类型)类型替换2)移除 所有的类型参数。
  3. 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。
  4. String.equals(char[])类型不为false,数组没重写该方法(基本数据类型不能使用object方法)
  5. 接口的修饰符只能是abstract、public和缺省
  6. Integer和int比较时自动拆箱,无论数值大小
  7. Queue中的方法,抛出异常:add/remove/element,返回null值的:offer/poll/peek
  8. 发布对象:使对象能在当前作用域外的代码中使用,某个不该发布的对象被发布称为逸出
  9. 一个线程new出来一个对象,将引用传递给另外一个线程,另外一个线程可以使用,因为new出来的对象在堆里,线程共享

待后续更新…


转载:https://blog.csdn.net/qq_44352476/article/details/101616242
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场