前言
本文主要包含Java中各种易被忽视的小知识点
- 《Java核心技术 卷1》
- 《Java程序员面试笔试宝典》
学习重点 : 了解大于应用
- 运行已编译程序时, JVM从类中main方法开始执行, 因此为了代码可以执行, 类的源文件必须包含一个main方法, main方法必须为public
- /* */不能嵌套
- 长整型数值有后缀L,十六进制有前缀0X,八进制前缀0,二进制前缀Ob
- 操作数自动转换 int -> long -> float -> double (两个操作数中有一个为大类型, 另外一个自动转为大类型)
5.Math.round()返回长整型,对于正数四舍五入, 对于负数在取值为 0.5 时向水平轴 0 方向取整 eg : Math.round(-11.5) == -11 - 移位运算符左移取模32 1 << 35 = 1 <<3
- break跳转到标签语句块末尾(read_data:)
- Arrays.toString()打印一维数组 Arrays.deepToString()打印二维数组
- (byte)300 = 44;截断高位,保留低位,相当于300%256=44
- 隐式参数为方法的调用者
- 方法名及参数类型叫做方法的签名
- 浅拷贝:未克隆对象中引用的其他对象
- Error,RuntimeException都是非检查型异常
- Switch语句的参数可以是整数(int,Integer以下),枚举常量,字符串
- char类型用来存储unicode编码的字符,unicode编码字符集包含了汉字,因此char类型可以存储汉字,并且unicode编码占用2个字节,char类型变量占用2个字节
- 静态变量和实例变量的区别
- 语法:静态变量前加static,实例变量前不加
- 运行:实例变量属于某个对象的属性,必须创建实例对象,实例变量才会被分配空间并才能使用.而静态变量只要程序加载了类的字节码,不用创建任何实例对象,静态变量就被分配内存,可以开始使用
- 当一个static方法调用时,可能还没创建任何实例对象,因此不能在static方法中调用非static方法和属性
- 构造器不能被继承,因此不能被Override,但可以Overload
- 接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类
- 访问修饰符的访问权限
- 内部类能访问外部类中的成员变量和常量; 创建内部类的实例对象,必须先创建外部类的实例对象,方法内部定义的内部类前面不能有访问修饰符
Outer outer = new Outer(); Outer.Inner inner = outer.new Inner();
-
getClass()方法在Object类中定义成了final,因此子类不能覆盖
-
j = j++等同于 temp = j; j = j + 1; j = temp 因此j的值不变
-
== 对于基本类型来说是值比较,对于引用类型来说是比较的是内存地址;equals 也是引用比较,但很多类重新定义 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。
-
十进制的数在内存中使用补码保存
-
字节是存储容量的基本单位,字符是数子,字母,汉子以及其他语言的各种符号。1 字节=8 个二进制单位:一个一个字符由一个字节或多个字节的二进制单位组成。
-
PriorityQueue是基于完全二叉树实现的优先级队列,默认小顶堆
-
内存泄漏: 不再使用的对象没有得到及时的回收,持续占用内存空间而造成内存空间的浪费的情况。发生内存泄漏的第一个迹象通常是:在应用程序中出现了 OutOfMemoryErroe(OOM)
- 内存溢出:程序在申请内存时,没有足够的内存空间供其使用。(内存泄漏容易导致内存溢出,但内存溢出不一定是内存泄漏导致)
- 泛型,即参数化类型,泛型擦除:Java 编译器生成的字节码文件不包含有泛型信息,泛型信息将在编译时被擦除,这个过程称为泛型擦除。其主要过程为 1)将所有泛型参数用其最左边界(最顶级的父类型)类型替换2)移除 所有的类型参数。
- 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。
- String.equals(char[])类型不为false,数组没重写该方法(基本数据类型不能使用object方法)
- 接口的修饰符只能是abstract、public和缺省
- Integer和int比较时自动拆箱,无论数值大小
- Queue中的方法,抛出异常:add/remove/element,返回null值的:offer/poll/peek
- 发布对象:使对象能在当前作用域外的代码中使用,某个不该发布的对象被发布称为逸出
- 一个线程new出来一个对象,将引用传递给另外一个线程,另外一个线程可以使用,因为new出来的对象在堆里,线程共享
待后续更新…
转载:https://blog.csdn.net/qq_44352476/article/details/101616242
查看评论