大家好,这是我的第一篇博客。以前觉得写博客太浪费时间、浪费精力,一直没有重视;到了金三银四,发现自己有很多基础知识都不扎实不牢固,想痛改前非5555;而且我感觉写博客有种自豪感,并且也是笔记,就跟大家一起学习吧。如果觉得我的文章写得哪里不对,请不吝赐教,可以私信我,也可以发到我的邮箱p13265303663@126.com 。大部分是从自己关注的公众号里面摘录下来的,所以侵删~
1、面向对象和面向过程的区别
面向过程
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程卡法,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低
2、Java语言的特点
1.面向对象(封装、继承、多态)
2.跨平台性(jvm的作用)
3.可靠性
4.安全性
5.多线程
6.支持网络编程(Java语言诞生本身就是为简化网络编程设计的)
7.编译与解释并存
3、JVM、JRE、JDK
JVM
jvm全名java虚拟机,顾名思义,它是运行java程序的虚拟机,同时对各种操作系统都有不同的实现,目的是使用相同的字节码,都能得出相同的结果。(一次编译,多处运行)
JRE
jre是java运行时的环境,功能是运行已经被编译的java程序,内容包括jvm、java核心类库、java命令及其它基础构件。如果只需要运行程序,那么安装jre就足够了,如果是需要进行编程、开发,那么就需要以下介绍的jdk
JDK
jdk全名java development kit,java开发工具;功能是创建、编译程序,内容包括jre、javac(程序的编译器)、一些工具(javadoc、jdbc)
4、Oracle JDK、Open JDK
1.Oracle JDK版本每三年发布一次;Open JDK每三个月发布一次
2.Open JDK是完全开源的,Oracle JDK是前者的一个实现,并不完全开源
3.Oracle JDK比Open JDK更稳定;企业开发最好使用Oracle JDK,因为其经过彻底测试和稳定
5、Java和C++的区别
相同点
都是面向对象的语言,都支持封装、继承、多态
不同点
- java不提供指针来直接访问内存,程序更加安全
- java的类是单继承的,但接口是可以多继承的;C++的类都支持多继承
- java有自动内存管理机制,不需要程序员手动释放无用内存
6、什么是java程序的主类,应用程序和小程序的主类有什么不同
一个程序中可以有很多类,但有且只有一个类是主类,主类是java程序的入口。在java应用程序中,这个主类是指包含main()方法的类。在java小程序中,这个主类是一个继承自系统类JApplet或Applet的子类。应用程序的主类不一定要求是public,但小程序的主类必须是public类。
7、字符型常量和字符串常量的区别
- 形式上:字符常量是单引号引起的一个字符;字符串常量是双引号引起的若干个字符
- 含义上:字符常量相当于一个整形值(ASCII值),可以参加表达式运算;字符串常量代表一个地址值(该字符串在内存中存放位置)
- 占内存大小:字符常量只占2个子节;字符串常量占若干个字节(至少一个字符结束标志)
8、构造器是否可以被重写
父类的私有属性和构造方法并不能被继承,所以构造器Constructor也就不能被重写,但是可以重载overload,这是一个类中有多个构造函数的其中一个因素
9、重载和重写的区别
- 重载overload:发生在同一个类中,方法名必须相同,参数类型、参数个数、参数顺序、返回值、访问修饰符至少要有一个不同。
- 重写override:发生在父子类中,方法名、参数列表必须相同,另外值得注意的是:返回值范围必须小于等于父类,抛出的异常必须小于等于父类,访问修饰符范围必须大于等于父类(如果父类方法为private,则子类不能重写该方法)。
10、java三大特性:封装、继承、多态
- 封装:封装把一个对象的属性私有化,同时提供一部分可以被外界访问的属性的方法,但不能出现一个类没有提供外界访问的方法,因为这样的类没有意义。
- 继承:继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。继承是实现代码复用其中一条路径。
- 多态:程序中定义的引用变量所指向地具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底时哪个类中实现的方法,必须由程序运行期间才能决定。两种实现多态的形式:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)