前言
计算机语言千千万,每一种语言都有其自己的特点、擅长的领域。在学习了Java之后才对Java有了进一步的理解。
面试问一:
你是如何理解Java这门语言的?
这里我们应该从下面几个点去总结
1、Java语言具有的属性
2、他的特点在哪
Java语言具有的属性
Java语言是一种简单的、面向对象的、安全、可跨平台、可移植性高、健壮、可以进行分布式开发、支持多线程的具有高性能的一门语言。
简单性:它剔除了C语言麻烦的指针操作,头文件的引用以及联合等。
面向对象:它注重问题的双方而不是解决问题的过程。把重心放在了面向数据、对象的创建以及接口上。
安全性:
1、Java封装特性:将数据隐藏起来,只留下可以调用的接口。
2、无指针:这样黑客不可以到处请求不该请求的数据
3、边界检查:防止出现数组越界的问题
4、强制类型转换:不同类型的对象不能转换,否则抛出ClassCastException
5、对线程安全的支持:java语言支持多西acne很难过,从语法以及语言本身对线程做了很好的控制和支持
6、java的安全还通过编译器、检查器、类加载器等方式保证了程序的安全性
Java最基本的安全性有三个:
1、GC回收机制:垃圾自动回收防止程序出现内存泄漏的问题,防止程序的崩溃
2、Exception:他包含很多类型的错误,最常见的null,空指向错误,在访问一个没有分配数据的地址时防止获取到空值或者不该访问的数据。
3、没有指针:这样的话就防止人们请求不该请求的地方或者错误的地方。在C语言中,黑客可以通过stack over的数据覆盖来获取到不该访问地方的数据。
可跨平台:
这一功劳要靠我们的JVM。java的运行不是在CPU上,而是通过java -c 编译成字节码(.class)文件,再通过java指令运行在JVM上的。
所以只要平台安装了JVM以及基本的jre(JVM包含在jre中)就可以到处运行了。
可移植
java对基本数据类型的大小和有关算法都做了明确的说明,比如java中的int 永远都是32位,C则是根据不用编译器不同去调整数据的带线啊哦。这种固定的大小消除了字节顺序以及获取的困扰、字符串采用Unicode。
多线程
Java的多线程处理相比其他语言更加便捷
健壮:
Java健壮性体现在GC上,相对于C语言的手动内存释放遗忘问题。java启动一个单独的线程垃圾回收线程来检测是否有内存空间应该被释放,这样合理的安排内存空间。
也花费了大量精力进行早期和后期问题见擦汗,防止内存分配错误,防范了内存泄漏。
在这以上把概括说出,不要把每个点都详细讲出,你的每一次回答都可能成为面试官的下一个问题,也没有那么多时间说出这么多概念。
特点:
面向对象:面向对象的三个特性:封装、继承、多态。
封装:隐藏内部实现细节,只留下对外访问的接口供给使用。
继承:子类可以拥有父类的除去私有方法,以及属性的其他属性。可以提高代码的可读性减少代码冗余。
多态:多种状态,比如英雄联盟中盲僧的Q是发出能量波,盖伦的Q是天降正义这种。通过重写/重载的方法去改变类中方法的作用来提高代码的可阅读性以及冗余。
重载与重写的应用场景
现在有个造三轮车的厂:
重载:我现在要造一个四轮车,要多一个轮子,通过重载加一个轮子来完成这个要求。
重写:我要造一个三轮油车,把电系统改成油系统。
可跨平台。