一、编码
Java采用Unicode字符编码,每个字符占用两个字节,即UTF-16编码。但编译后的class文件采用UTF-8编码,以节省空间。
二、面对对象
面向对象是相对面向过程而言,两种方式都是一种思想 。
什么是继承?
①继承是面向对象程序设计能够提高软件开发效率的重要原因之一。
②继承是具有传递性的,就像现实中孙子不仅长得像爸爸而且还像他爷爷。
③继承来的属性和方法是隐式的,也就是在本类里面是看不见的。
④一个类只能有一个父类,也就是类只能是单继承。
⑤一个接口可以有多个父类,也就是接口可以是多继承。
实际项目开发中,一个类继承于另一个类,那么前者就是后者的子类,反则反之。
什么是封装?对象数据和操作该对象的指令都是对象自身的一部分,能够实现尽可能对外部隐藏数据。
实际项目开发中,使用封装最多的就是实体类,常常和JavaBean(类必须是具体的和公共的,并且具有无参数的构造器)一起使用。
那么,实体类有那些东西呢?
答:私有的成员变量、无参数的构造器、有参数的构造器、setter和getters方法、重写tostring方法、重写hashCode和equals方法。
什么是多态?
①多态就是对象拥有多种形态:引用多态和方法多态。
②引用多态:父类的引用可以指向本类对象、父类的引用可以指向子类的对象。
③方法多态:创建本类对象时,调用的方法为本类的方法;创建子类对象时,调用的方法为子类重写的方法或者继承的方法。
④存在多态的必要条件:继承、重写。
⑤多态的作用是消除类型之间的耦合关系。
在实际项目开发中,A类继承B类,如果在A类中不重写B类的方法的时候,输出的仍旧是B类方法里面的信息(B b=new A());如果在A类中重写B类的方法的时候,输出的是A类方法里面的信息(B b=new A())。
三、标识符
1、&和&&
&和&&的区别:都可以用作逻辑与的运算符,当运算符两边同时为true时结果为true。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。&还可以用作位运算符,进行按位与操作。
2、switch
switch作用域:在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。3、"=="和equals
"=="和equals区别:"==”操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。equals方法是用于比较两个独立对象的内容是否相同,一般用于比较两个字符串内容是否相同。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。4、Overload和Override
Overload和Override的区别:重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。
5、final和static
final和static的区别:final表示变量值或者引用变量不可改变,可以理解为常量,static修饰的成员变量和成员方法独立于该类的任何对象,被类的所有实例共享,可理解为全局变量。
final内部类的使用详解:对于成员内部类来说,他会持有一份外部类当前对象的引用,这样就可以调用外部类可见的方法跟成员变量。对于方法内部类(匿名内部类)来说,无法访问局部变量,会去复制一份。为了保证两个变量的一致性,才去使用final关键字修饰局部变量。而不是因为栈生命周期与堆生命周期不一致的问题。
6、abstractclass和interface
abstractclass和interface(抽象类与接口的区别)区别:
抽象类不仅有抽象方法,还能有已实现方法以及普通成员变量。接口所有方法都是抽象的,且成员变量必须用static和final修饰。
7、作用域
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
四、基本数据类型
基本数据类型:boolean(1位),byte(1字节),short(2字节),char(2字节),int(4字节),float(4字节),long(8字节),double(8字节).
转化关系:
byte—>short—>int—>long
char—>int
int—>double
float—>double
Integer与int的区别:int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。另外,Integer提供了多个与整数相关的操作方法,