Java理论-Java基础
Java基础包括基本类型,⾯向对象,数组,重载,重写,访问修饰符,关键字
JAVA8⼤基本类型
byte
short
int
long
float
double
char
boolean
Java⾯向对象的特征
⾯向对象的四个基本特征是:封装,继承,多态和抽象。
封装:封装给对象提供了隐藏内部特性和⾏为的能⼒。对象提供⼀些能被其他对象访问的⽅法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每⼀种修饰符给其他的位于同⼀个包或者不同包下⾯对象赋予了不同的访问权限。
封装的好处:
1. 通过隐藏对象的属性来保护对象内部的状态。
2. 提⾼了代码的可⽤性和可维护性,因为对象的⾏为可以被单独的改变或者是扩展。
3. 禁⽌对象之间的不良交互提⾼模块化。
继承:继承给对象提供了从基类获取字段和⽅法的能⼒。继承提供了代码的可重⽤性,也可以在不修改类的情况下给现存的类添加新特性。
多态:多态是编程语⾔给不同的底层数据类型做相同的接⼝展⽰的⼀种能⼒。⼀个多态类型上的操作可以应⽤到其他类型的值上⾯。
equals()方法
抽象:抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能⽽不是实现细节来创建类。Java⽀持创建只暴漏接⼝⽽不包含⽅法实现的抽象类。这种抽象技术的主要⽬的是把类的⾏为和实现细节分离开。
Java中的访问修饰符
访问权限控制
访问权限控制的对象
类的访问控制
类成员的访问控制
访问权限修饰符(四种):
Public
Protected
默认
Private
类的访问修饰符
Public修饰符:公有访问级别,java项⽬下的包都可以使⽤(任何地⽅),公有访问级别;
默认修饰符:包级私有访问级别。只有同⼀个包⾥的可以访问,其他包的就访问不了。
四种访问权限的区别
作⽤域修饰符同⼀个类中同⼀个包中⼦类中任何地⽅
Private可以不可以不可以不可以
默认修饰符可以可以不可以不可以
Protected可以可以可以不可以
Public可以可以可以可以
作⽤域修饰符同⼀个类中同⼀个包中⼦类中任何地⽅
⽅法重载和⽅法重写
重载:
1. 必须具有不同的参数列表,和返回值⽆关。
2. 存在于⽗类和⼦类、同类中。
3. 可以有不同的返回类型,只要参数列表不同就可以。
4. 可以有不同的访问修饰符,可以抛出不同的异常。
重写:
1. 参数列表必须完全与被重写的⽅法相同,否则不能称其为重写⽽是重载。
2. 返回类型必须与被重写的⽅法返回类型相同,否则不能称其为重写⽽是重载。
3. 不能缩⼩重写⽅法的访问修饰符。
4. 重写⽅法⼀定不能抛出新的检查异常或者⽐被重写⽅法申明更加宽泛的检查型异常。
5. 存在于⽗类和⼦类之间。
⽅法被定义为final不能被重写。
抽象类和接⼝有什么区别
接⼝是公开的,⾥⾯不能有私有的⽅法或变量,是⽤于让别⼈使⽤的;⽽抽象类是可以有私有⽅法或私有变量的,另外,实现接⼝就⼀定要实现接⼝⾥定义的所有⽅法,⽽实现抽象类可以有选择地重写需要⽤到的⽅法,⼀般的应⽤⾥,最顶级的是接⼝,然后是抽象类实现接⼝,最后才到具体类实现。
还有,接⼝可以实现多重继承,⽽⼀个类只能继承⼀个超类,但可以通过继承多个接⼝实现多重继承。
final,finally,finalize的区别
final:修饰符(关键字)如果⼀个类被声明为final,意味着它不能再派⽣出新的⼦类,不能作为⽗类被继承。因此⼀个类不能既被声明为abstract的,⼜被声明为final的。将变量或⽅法声明为final,可以保证它们在使⽤中不被改变。被声明为final的变量必须在声明时给定初值,⽽在以后的引⽤中只能读取,不可修改。被声明为final的⽅法也同样只能使⽤,不能重载。
finally:在异常处理时提供 finally块来执⾏任何清除操作。如果抛出⼀个异常,那么相匹配的 catch ⼦句就会执⾏,然后控制就会进⼊finally块。
finalize是⽅法名:Java中允许使⽤finalize()⽅法在垃圾收集器将对象从内存中清除出去之前做必要的清理⼯作。这个⽅法是由垃圾收集器在确定这个对象没有被引⽤时对这个对象调⽤的。它是在Object类中定义的,因此所有的类都继承了它。⼦类覆盖finalize()⽅法以整理系统资源或者被执⾏其他清理⼯作。finalize()⽅法是在垃圾收集器删除对象之前对这个对象调⽤的。
异常
异常指不期⽽⾄的各种状况,如:⽂件不到、⽹络连接失败、⾮法参数等。异常是⼀个事件,它发⽣在程序运⾏期间,⼲扰了正常的指令流程。
Java通过API中Throwable类的众多⼦类描述各种不同的异常。因⽽,Java异常都是对象,是Throwable⼦类的实例,描述了出现在⼀段编码中的错误条件。
异常是程序中的⼀些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
异常和错误的区别:异常能被程序本⾝可以处理,错误是⽆法处理。
多态
1. 理解多态性:可以理解为⼀个事物的多种形态。
2. 何为多态性:
对象的多态性;⽗类的引⽤指向⼦类的对象(或⼦类的对象赋给⽗类的引⽤)
3. 多态的使⽤:虚拟⽅法调⽤
有了对象的多态性以后,我们在编译期,只能调⽤⽗类中声明的⽅法,但在运⾏期,我们实际执⾏的是⼦类重写⽗类的⽅法。
总结:编译,看左边;运⾏,看右边;
4. 多态性的使⽤前提:
1. 类的继承关系
2. ⽅法的重写
5. 对象的多态性,只适⽤于⽅法,不适⽤与属性(编译和运⾏都看左边)
多态是编译⾏为还是运⾏时⾏为
运⾏时⾏为
==和equals的区别
1. ==既可以⽐较基本类型也可以⽐较引⽤类型。对于基本类型就是⽐较值,对于引⽤类型就是⽐较内存地址。
2. equals的话,它是属于java.lang.Object类⾥⾯的⽅法,如果该⽅法没有被重写过默认也是==;我们可以看到String等类的equals⽅法
是被重写过的,⽽且String类在⽇常开发中⽤的⽐较多,久⽽久之,形成了equals是⽐较值的错误观点。
3. 具体要看⾃定义类⾥有没有重写Object的equals⽅法来判断。
4. 通常情况下,重写equals⽅法,会⽐较类中的相应属性是否都相等。
实例⽅法和静态⽅法的区别
1. 加载周期不同
静态⽅法⽐实例⽅法早加载到内存中,jvm⽅法区(静态区)
2. 调⽤⽅式不同
静态⽅法可以使⽤类名.静态⽅法名的⽅式直接调⽤
实例⽅法必须通过实例对象.⽅法名调⽤
3. 实例⽅法可以直接访问静态成员,静态⽅法⽆法直接访问实例成员
4. 实例⽅法中可以使⽤对象专属this、super关键字指向调⽤对象本⾝、⽗类
synchronized关键字的作⽤是什么
Java 中关键字 synchronized 表⽰只有⼀个线程可以获取作⽤对象的锁,执⾏代码,阻塞其他线程。
作⽤:
确保线程互斥地访问同步代码
保证共享变量的修改能够及时可见
有效解决重排序问题
⽤法:
修饰普通⽅法
修饰静态⽅法
指定对象,修饰代码块
特点:
阻塞未获取到锁、竞争同⼀个对象锁的线程
获取锁⽆法设置超时
⽆法实现公平锁
控制等待和唤醒需要结合加锁对象的 wait() 和 notify()、notifyAll()
锁的功能是 JVM 层⾯实现的
在加锁代码块执⾏完或者出现异常,⾃动释放锁
原理:
同步代码块是通过 monitorenter 和 monitorexit 指令获取线程的执⾏权
同步⽅法通过加 ACC_SYNCHRONIZED 标识实现线程的执⾏权的控制
基础题
下列说法正确的有( BCD )
A.环境变量可在编译source code时指定
B.在编译程序时,所能指定的环境变量不包括class path C. javac⼀次可同时编译数个Java源⽂件
D. 能指定编译结果要置于哪个⽬录(directory)JAVA中,下列语句哪⼀个正确( C )
class中的constructor不可省略
constructor必须与class同名,但⽅法不能与class同名constructor在⼀个对象被new时执⾏
⼀个class只能定义⼀个constructor

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。