今天上午自己按照网上的教程做了一个个人博客,还是很开心的,终于有自己的博客了,所以复习java基础的就只有今天下午了。下午主要是看了很多概念性的东西,结合牛客网上的知识点,自己又整理了一下,把一些问题的答案摘抄下来(自我感觉回答好的一些答案)。以方便后来整理,学习。
java虚拟机(jvm)是可以执行java字节码的虚拟进程。 准确的来说,java的跨平台指的是java源文件经过javac编译器编译成的二进制.class字节码的跨平台性。各个平台装有不同的jvm,而jvm能将相同的字节码翻译成平台相关的机器码,进而执行。
JRE: Java Runtime Environment
JDK:Java Development Kit
JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,
JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了Javac,java等命令。运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。
java中也不可以覆盖private的方法,因为private修饰的变量和方法只能在当前类中使用,如果是其他的类继承当前类是不能访问到private变量或方法的,当然也不能覆盖。
方法重载是发生在类的内部,要又相同的方法名,参数不同
方法的覆盖是发生在又继承关系的类中,子类去重写父类的方法。拥有相同的方法名,参数,返回值。
区别:链接:https://www.nowcoder.com/questionTerminal/7b2152a85b9a4ebab6dfda7e995a8491
来源:牛客网1.方法重写要求参数列表必须一致,而方法重载要求参数列表必须不一致。
2.方法重写要求返回类型必须一致(或为其子类型),方法重载对此没有要求。
3.方法重写只能用于子类重写父类的方法,方法重载用于同一个类中的所有方法。
4.方法重写对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。
5.父类的一个方法只能被子类重写一次,而一个方法可以在所有的类中可以被重载多次。
6.重载是编译时多态,重写是运行时多态。
1.接口中所有方法都是抽象的 ,而抽象类中可以有抽象方法和普通方法
2.一个类可以实现多个接口,但只能继承一个抽象类
3.如果一个类继承了一个抽象类或者实现一个接口, 却没有实现其中所有的方法,那这个类还是抽象类.
4.接口的变量都是final的 ,抽象类的变量可以不是final
5.接口中函数是public 抽象类的函数是public ,protected,private
1 进程是执行着的程序,线程是进程内的一个执行序列。一个进程可以拥有多个线程。
2 进程是资源分配的最小单元,线程是执行调度的最小单元。进程拥有独立的资源,多个线程间共享这些资源
1,继承Thread类,重写run方法;
2,实现Runnable接口,重写run方法,但是比继承Thread类好用,实现接口还可以继承类,避免了单继承带来的局限性;
3,实现callable接口,重写call方法,有返回值。
4,使用实现了Executor接口的ThreadPoolExecutor来创建线程池。
这是我见过描述最全的最详细的java线程的六种状态
(1) public boolean equals(java.lang.Object)
比较对象的地址值是否相等,如果子类重写,则比较对象的内容是否相等;
(2)public native int hashCode() 获取哈希码
(3)public java.lang.String toString() 把数据转变成字符串
(4)public final native java.lang.Class getClass() 获取类结构信息
(5)protected void finalize() throws java.lang.Throwable
垃圾回收前执行的方法
(6)protected native Object clone() throws
java.lang.CloneNotSupportedException 克隆
(7)public final void wait() throws java.lang.InterruptedException
多线程中等待功能
(8)public final native void notify() 多线程中唤醒功能
(9)public final native void notifyAll() 多线程中唤醒所有等待线程的功能
final 修饰符(关键字)如果一个类被声明为 final,意味着它不能再派
生出新的子类,不能作为父类被继承例如:String 类、Math 类等。将变量
或方法声明为 final,可以保证它们在使用中不被改变。被声明为 final 的变
量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明
为 final 的方法也同样只能使用,不能重写,但是能够重载。 使用 final 修
饰的对象,对象的引用地址不能变,但是对象的值可以变!
finally 在异常处理时提供 finally 块来执行任何清除操作。如果有finally 的话,则不管是否发生异常,finally 语句都会被执行。
finalize 方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将
对象从内存中清除出去之前做必要清理工作。一般情况下,此方法由 JVM 调用,程序员不要去调用!
多态的前提:
1.有继承关系,
2.子类重写父类的方法
3.夫类型的引用指向子类型的的对象。
多态就是指程序中定义的引用变量和变量调用方法时在编译时不确定要指向的哪里,而是在程序运行期间才确定。