1、Java为纯面向对象的语言。它能够直接反应现实生活中的对象;
2、Java具有平台无关性。Java利用Java虚拟机运行字节码,无论是在Windows、Linux还是MacOS等其他平台对Java程序进行编译,编译后的程序可以在其他平台运行;
3、Java为解释性语言,编码器把Java代码编译成平台无关的中间代码,然后在JVM上解释运行,具有很好的可移植性;
4、Java提供了很多内置类库。如对多线程支持,对网络通信支持,最重要的一点是提供了垃圾回收器;
5、Java具有较好的安全性和健壮性。Java提供了异常处理和垃圾回收机制,去除了C++中难以理解的指针特性;
5、Java语言提供了对Web应用开发的支持
1、继承:一个新类可以从现有的类中派生,派生类可以从它的基类那里继承方法和实例变量,且派生类可以修改或新增新的方法使之更适合特殊的需求。
2、封装:将客观事务抽象成类,每个类可以把自身的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏;
3、多态:指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。且上转型后子类方法覆盖父类方法呈现多态。
字节序是指多字节数据在计算机内存存储或网络传输时各字节的存储顺序。通常有小端和大端两种方式。
1、小端:低位字节存放在内存的低地址端,高位字节存放在内存的高地址端
2、大端:高位字节存放在内存的低地址端,低位字节存放在内存的高地址端
Java语言的字节序是大端
JDK:Java开发工具包,提供了Java的开发环境和运行环境
JRE:Java运行环境,提供了Java运行时所需的环境
JDK包含JRE。如果只运行Java程序,安装JRE即可。要编写Java程序需要安装JDK
default:默认访问修饰符,在同一包内可见
private:在同一类内可见,不能修饰类
protected:对同一包内的类和所有子类可见,不能修饰类
public:对所有类可见
先后顺序:静态成员变量、成员变量、构造方法
详细的先后顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数
相同点:
1、都不能被实例化
2、接口的实现类或抽象类的子类须实现接口或抽象类中相应的方法才能被实例化
不同点:
1、接口只能有方法定义,不能有方法的实现,而抽象类可以有方法的定义和实现;
2、实现接口的关键字是implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但是只能继承一个类;
3、当子类和父类之间存在逻辑上的层次结构,推荐使用抽象类,有利于功能的累积。当功能不需要,希望支持差别较大的两个或更多对象间的特定交互行为,推荐使用接口。使用接口能降低软件系统的耦合度,便于日后维护或者添加删除方法。
1、为了程序的结构能够更加清晰从而便于维护。(避免二义性)
2、多重继承会使类型转换、构造方法的调用顺序变得复杂,会影响到性能。
Java提供了两种用于多态的机制,分别是重载与覆盖。
重载:指一个类中有多个同名的方法,但是有着不同的参数,是一种编译时多态,看作一个类中的方法多态性。
覆盖:子类可以覆盖父类的方法,因此同样的方法在父类与子类中有着不同的表现形式。
1、覆盖是父类与子类之间的关系,是垂直关系;重载是同一类中方法之间的关系,是水平关系;
2、覆盖只能由一个方法或一对方法产生关系;重载是多个方法之间的关系;
3、覆盖要求参数列表相同;重载要求参数列表必须不同;
4、重载方法可以改变返回值的类型;覆盖方法不能改变返回值的类型;
5、覆盖中,调用方法体是根据对象的类型来决定的;而重载是根据调用时实参表与形参表来对应选择方法体。