初识Java
前言
在过去一年,我学习了C/C++、Python两门专业性语言,又在课余时间自学了HTML、CSS、JavaScript等Web开发语言,以此总结了如下经验和方法。
- 学习编程语言必须有亲身实践的过程。无论是听老师讲授还是自己找学习视频,都需要边听边练。实现一个方法或是出现一个报错,都不是在几分钟内听了就可以完全掌握的,需要自己实打实将代码敲一遍甚至多遍才可以做到熟能生巧,也会把错误原因铭记在心而不会下次再犯。
- 学习编程语言必须会自己查阅资料。编程语言是很复杂的语言,有自己独有的实现运行机制,老师在课堂上不可能面面俱到,所以在面对不懂的问题时,要善于运用网上的资料,可以尝试自己看源码,或是借助CSDN、掘金等平台通过大佬的分析解决问题。也可以尝试阅读这一语言的书籍,比如我在学习JS时就辅助阅读了《深入浅出JavaScript(第四版)》这本书。
- 学习编程语言必须会融会贯通。编程语言是一个整体,我们在学习时是将知识点拆分,但当全部学完后应该形成自己的一套体系,知道在什么时候用什么样的方法,这时可以自己尝试写一个小项目,如学习C/C++时我们实现了贪吃蛇、各类管理系统的简易效果,学习Web语言时也尝试自己渲染页面、开发网站。
当然,在学习过程中也领悟了一些教训。
- 不能有畏难心理。语言学习到后期会越来越复杂深入也就导致困难无比,这时候不能因为难就草草了事。像我在学习Python后期的多线程、爬虫技术等部分就不够专注认真,没有完全掌握。
- 不能偷懒拖延。不能因为自己听懂了就不上手实践,也不能因为自己掌握了就不再练习或是一拖再拖,这样只会加快遗忘速度,产生陌生感。
初识Java
一、编译型语言 VS 解释型语言
编译型
如:C/C++
- 使用专门的编译器,一次性编译,执行效率高
- 源代码 -> 编译 -> 目标代码 -> 连接 -> 可执行代码 -> 运行
- 跨平台性能差
解释型
如:Python、JavaScript等
- 使用专门的解释器,每次运行都需要先解释后执行,效率较低
- 源代码 -> 翻译 -> 中间代码 -> 解释 -> 机器语言 -> 运行
- 跨平台性能高
二、Java语言的特点
- 简单性
- Java是纯面向对象语言,语法简单明了,易于掌握。
- 取消了指针和多重继承等
- 自动地收集内存垃圾
- 提供了丰富的类库、API文档以及第三方开发包,还有大量开源项目。
- 面向对象
- 接口
- 分布式
- 支持 Internet 应用的开发
- 有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议
- Java应用程序能够通过URL打开和访问网络上的对象
- 健壮性
- Java编译器能够检测编码和运行的错误,并消除。
- 安全性
- 避免用户对内存的非法操作
- 未经授权不能读写文件
- Java可以编写出防病毒和防修改系统。
- 体系结构中立
- 目标文件代码经编译后可以在许多处理器上运行
- 字节码
- 可移植性
- int 永远是32位,方便移植代码
- 解释型
- 高性能
- 动态翻译成机器语言
- 多线程
- 在同一时间并行执行多项任务
- 相应的同步机制可以保证不同线程能够正确地共享数据
- 动态性
- 动态调整库中方法和增加变量,并且客户端不需要任何更改
三、Java与C/C++、 Python的区别
与Python的区别
- Java是纯面向对象语言,而Python结合了函数式编程和面向对象两块
- Python不用声明变量类型,Java需要
- 一些语法基础的区别,如代码块等
与C/C++的区别
- Java可以实现跨平台
- C/C++是编译型语言,与Java有本质不同
- Java有自己的垃圾回收机制,而C/C++需手动管理
- Java是C/C++的“简单纯净”版,没有了多重继承、指针、头文件等
四、Java跨平台原理
源代码 -> 编译 -> 中间代码 -> 解释 -> 机器语言 -> 运行
-
在编译过程中,会将Java源代码变为中间代码,即与平台无关的字节码。
-
然后将字节码交给解释器解释成为机器码。在Java中解释器即为虚拟机,而虚拟机与平台密切相关,针对不同的平台有不同的解释器,如Mac平台虚拟机、Linux平台虚拟机、Windows平台虚拟机
-
经过解释后的机器码就可以在平台上执行,而虚拟机的存在是Java实现跨平台的本质原因
五、JDK、JRE、JVM的区别和联系
区别
JDK
- Java Development Kit,Java开发工具包
- 集成了JRE
- Java开发的核心
JRE
- Java Runtime Environment,Java运行时环境
- 包括:JVM的标准实现 、JVM工作所需类库
- Java程序运行的核心
JVM
- Java Virtual Machine,Java虚拟机
- 只认识 xxx.class 这种类型的文件
- Java跨平台功能的根本
联系
- 一层一层的包含关系:JDK > JRE > JVM
总结
对Java有了一定的初步认识,并且通过它与Python和C/C++的对比,直观清晰的感受到了Java语言的魅力,也更易上手学习。
在整理博客的过程中参考了一些资料以及许多他人优秀的文章,就不一一列举,在此表示感谢。