1.文件命名问题
包名: 全部是小写
类名:每一个单词的首字母都大写
方法名和变量名: 从第二个单词开始首字母大写(驼峰命名)
常量: MAX_VALUE (全大写,用_分隔不同单词)
标识符:0-9 a-z A-Z _ $ 其他符号不允许,更不能是关键字
2.进制形式
二进制表现形式:0b100 ;
八进制表现形式:0100;
十六进制表现形式:0x100
3.源码/反码/补码
计算机运算时是按补码运行的.
正数的反码补码都是本身
负数的反码是对其原码取反(符号位即最高位除外)
负数的补码是其反码末尾数加1
4.++ 号的用法
当++在变量a的后面(a++)时,先将变量的值取出赋值和参与运算,自身再+1;最终输出值是a+1.
当++在变量a的前面(++a)时,先自身+1,然后再将新数据赋值给变量和参与运算.最终输出值是a.
5.&& 和 ||的用法
&&双与 ||双或;具有短路效应,即&&左边为错,右边不参与判断和运算.|| 左边为对,右边不参与判断和运算.
6.左移和右移
<< 左移 一个数的二进制的字节一起往左挪,移动几位结果就是原来数乘以2的几次幂
>> 右移一个数的二进制的字节一起往右挪,移动几位结果就是原来数除以2的几次幂
7.java基本数据类型
整型
byte 、short 、int 、long
浮点型
float 、 double
字符型
char
布尔型
boolean
8.java八种基本数据类型
9.this关键字的作用
This的作用:当成员变量和局部变量重名的时候,用它来调用成员变量.
10.static 关键字的作用
在静态方法中是没有this关键字的,也没有this,super.
静态是随着类的加载而加载,this是随着对象的创建而存在。静态比对象先存在。
静态方法只能访问静态的成员变量
【特点】随着类的加载而加载;优先于对象存在;被类的所有对象共享
特别要注意的是,static声明的变量会加载进堆空间,如果大量存在static对象会对内存造成很大的压力
11.final关键字的作用
可以修饰方法,被修饰的方法不能被重写;
也可以修饰类,被修饰的类不能被继承;
修饰变量,被修饰的变量变成常量,只能被赋值一次;
修饰对象,被修饰的对象地址不会变,但可以通过set get方法进行对对象的属性进行更改.
12.抽象类的成员特点
抽象方法不能有方法体
抽象方法所在的类必须是抽象类
抽象类不可创建对象,其子类要么是抽象类,要么重写抽象类中的所有方法
13.抽象类和接口的区别
抽象类:是继承关系,必须是体现了"is a"的关系
接口:是实现关系,一定是符合了接口的规则才能实现接口。
14.四种权限修饰符
public: 任何地方都可以访问。
protected: 同一个包下,或者是子类
默认: 同一个包下可以访问。
private: 只能在本类内部访问。
public > protected > 默认 > private
15.java面向对象三大特性
封装: 隐藏实现细节,对外提供方法访问
继承:子类可以继承父类的方法,体现了is a 的关系
多态:一种事物的多种形态, 食物,面包,黑面包
16.==和equals区别
== 既可以比较基本数据类型,又可以比较引用数据类型。
基本数据类型比较的是值
引用数据类型比较的是内存地址。
equals:
只能比较引用数据类型。
被重写之前:比较的是地址值
被重写之后:比较的是属性是否相等
17."" 和 null的区别
""是字符串常量,同时也是一个String类的对象,既然是对象当然可以调用String类中的方法
null是空常量,不能调用任何的方法,否则会出现空指针异常,null常量可以给任意的引用数据类型赋值
18.必须掌握的经典算法
19.为什么会有基本类型包装类
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
基本类型和包装类的对应
byte → Byte
short → Short
int → Integer
long → Long
float → Float
double → Double
char → Character
boolean → Boolean
包装类最重要的功能:
负责基本数据类型和String之间的相互转换。
20.ArrayList的三种遍历是否能删除元素
get和size方法,可以删除,因为都是集合的方法,集合遍历集合删除。
迭代器Iterator,可以删除,因为迭代器本身也有删除方法,迭代器遍历迭代器删除。
增强for循环,不能删除元素,
21.Set和Map的关系
Set和Map的关系:
HashSet和HashMap的关系:
HashSet底层依赖的HashMap。HashSet就是HashMap的键。
HaseSet要求重写hashCode()和equals()方法,HashMap的键也要求重写hashCode()和equals()方法
TreeSet和TreeMap的关系:
TreeSet底层依赖的TreeMap。TreeSet就是TreeMap的键。
TreeSet要求实现Comparable接口或者提供一个Comparator比较器,所以TreeMap也要求实现Comparable接口或者提供一个Comparator比较器
Hashmap和HashTable的区别
HashMap是线程不安全的,效率高,JDK1.2版本; Hashtable是线程安全的,效率低,JDK1.0版本的
HashMap可以存储null键和null值;Hashtable不可以存储null键和null值
23.Collection集合的几个重要关注点
list集合:
arraylist 底层是数组实现,线程不安全,查找快,增删慢
linkedlist 底层是链表实现,线程安全,增删块,查找慢
vector:底层是数组实现,线程安全,增删查找都慢
set集合:
hashset 底层是哈希算法实现,可以保证元素唯一,效率高(优先考虑)
linkedHashset
treeset 底层是二叉树实现(面试多),排序方式
Map集合
hashmap集合 底层是哈希算法实现,针对键(优先考虑)
linkedhashmap
treemap集合(面试多)
底层是二叉树算法,针对键
24.JAVA异常的分类
本文同步分享在 博客“爱吃早餐的程序员”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。