Java入门知识大全

技术文章第一时间送达!

说起来,在大学里面我学过的编程语言只有c++和java。这其中c++是作为必修课学的,而java是作为选修课学的。至于后面的c、汇编、python、js这些语言,那都是工作了之后才学的。

至于这些语言有什么用,在什么场景下使用效率最高,其实说实话,当时心里不是很清楚,等到真正明白过来,基本上已经是工作几年后的事情了。

asm和c一般用作底层开发,虽然大多数学习都把c语言作为必修课,但是坦率来讲,真正高水平的c语言开发工程师其实不多,汇编就更少了,看过nginx和lua代码的同学应该深有体会。

通讯厂商、芯片厂商,还有一些单片机设备、白色家电、黑色家电,这些设备上运行的代码大多数都是asm和c编写的。

c++和java是上层应用使用较多的编程语言,c++在游戏和大型软件开发中使用较多,当然这也和具体公司有关。按我的了解,c++在腾讯就用的比较多,java在阿里巴巴用的不少。

使用c++多数是为了兼顾效率和面向对象,而java语言则照顾到网络开发、网站开发、分布式、android开发等很多方面。

另外,合格的java工程要比c++工程师多很多。一个5年的工程师,他可以说精通java,但是同样的年限下,他一般不会说自己精通c++。

而python、js、html这些,也是使用较多的脚本语言。python用于机器学习、网站搭建、软件原型、测试脚本开发,十分方便。

而js,既可以勇于前端开发。也可以用于后端开发。自从出现了node.js之后,使用js的场景也越来越多了。甚至于,由于混合编程的流行,使用js和ionic这样的框架开发app也不是多复杂的事情。

如果只是开发上层应用,java无疑是比较好的选择。不管是下载、安装,还是学习资源、学习教程,都非常方便,更不用说五花八门的jsp开发框架了。但是对于我来说,学习java的根本动力就是分布式开发,特别是apache下面的hadoop、hdfs、hbase,这些基本是分布式开发的标配。此外,编写健壮的java程序相对而言是容易的,而同样的逻辑用c或者c++程序来开发要复杂的多,单是关于内存的问题就够让人头痛的了。

1、jdk安装

如果是windows开发,一般使用oracle公司的jdk进行开发。如果是ubuntu开发,既可以选择openjdk,也可以选择oracle公司的jdk。jdk一般包括了编译环境和运行环境两个部分。

2、ide安装

很多同学安装完jdk之后,都喜欢安装ide,比如说eclipse,或者是netbeans。如果是项目开发,这无可厚非,但是如果自己学习,我还是建议大家安装一个代码编辑工具就可以了。比如说sublime就不错了,在windows、linux、mac上面都可以安装这个软件。

3、设置环境变量

设置环境变量比较简单。一般设置三个系统变量,分别是JAVA_HOME、CLASSPATH、Path。其中JAVA_HOME设置为C:\Program Files (x86)\Java\jdk1.8.0_91,CLASSPATH设置为.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;,Path只需要在原来的环境变量下面添加这两个属性就可以了,分别是%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin。

4、常用的java工具

常用的命令工具主要有javac、jar、java、javadoc、javap、jdb。javac是编译工具,它既可以编译单个文件,也可以编译多个文件。jar负责生成jar文件,主要是将多个class文件压缩在一起。java是虚拟机命令,它负责将class文件加载到虚拟机执行。javadoc负责文档的自动生成,内容来自于java文件中的注释。javap是反汇编文件,一般添加一个-c选项即可。jdb类似于gdb,可以用它对生成的class文件进行调试。

5、入门demo

这个无敌的入门demo几乎是各个语言学习的标配。javac hello.java & java hello,这样可以运行起来了。主要执行的时候是java hello,而不是java hello.class。

6、多个java文件编译

如果需要对多个文件进行编译,也可以直接用javac来进行处理。假设有一个目录test,test中有两个文件a.java和b.java。那么在a.java和b.java的开头,都要添加代码package test;。然后进行编译,输入javac test/*.java。最后执行的时候,只要输入java test/hello即可。

7、引用第三方库

如果编译的过程中使用了第三方库,那么只要在javac中添加cp选项即可。比如,像这样javac -cp test/junit-4.12.jar test/*.java。

8、反汇编java

多实用javap工具是学习java的一个重要方法,它可以清楚地告诉你,代码最终是编译成什么样子,比如说最简单的hello程序,最后编译出来是这样的,

9、jdb调试

还是以刚才的hello程序为例,开始的时候输入jdb hello,接着输入stop in hello.main,最后输入run。有了这三步,程序就已经加载好了,后面就可以单步调试了。不管java语言是这样,几乎所有的脚本语言都可以编译、调试、反汇编,这三个工具真的非常重要,希望大家好好掌握和应用。

10、生成jar文件,且被引用

假设有test目录,test下有hello.java文件。首先hello.java的开头必须有package test;这段代码。其次,利用javac test/*.java生成class文件。接着,利用jar -cvf test.jar test/*.class创建test.jar文件。此时如果需要引用test.jar,直接利用javac -cp ./test.jar process.java即可。注意,在process.java中添加import test.hello代码。最后,如果需要执行process,直接输入java process即可。当然这个时候,如果用解压工具可以发现,jar文件中除了class文件之外,还有一个META-INF目录,这个目录下面有一个manifest.mf文件。

11、参考书籍

建议先学习好一本书的情况再去参考其他的数据,比如说《java编程思想》。如果这本书看完了,那么可以去参考其他的书籍,比如说《java核心技术》等等。

12、后面的话

一般教程上面学习java是这么安排的:a、学习基本语法,包括关键字、变量、计算、循环、判断、数组、编译、调试等等;b、学习类、包、继承、封装、多态、嵌套类、抽象类、接口、匿名类等等;c、学习第三方库,包括多线程、网络、数据库、日志、单元测试、gui、jni开发等等;d、到了这一步,一般会学习java的各个框架,比如structs、spring、hibernate、ibatis、mybatis等等,好一点的培训机构还说带一点hadoop、hdfs、hbase这些内容;e、等到上面的知识点都学完了,一般都会开始进行项目实战了,比如网上商城、爬虫、分布式监控、android开发等等。

大家可以根据自己的能力和兴趣,灵活调整内容,不断学习和进步。

13、资源

api文档,https://docs.oracle.com/javase/7/docs/api/

java教学视频,http://www.maiziedu.com/course/348-3765/ 和 http://www.maiziedu.com/course/804/

其他教程,http://www.runoob.com/java/java-filereader.html,

http://www.weixueyuan.net/java/rumen/

作者:feixiaoxing

原文:https://blog.csdn.net/feixiaoxing/article/details/80536746

本文分享自微信公众号 - 程序员的成长之路(cxydczzl)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java 成神之路

Netty 之 ByteBuf 分析

Netty 中的 ByteBuf 和 NIO 中的 ByteBuffer 的区别。

32110
来自专栏Fundebug

Fundebug后端Java异常监控插件更新至0.3.1,修复Maven下载失败的问题

Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自...

14340
来自专栏编程心路

并发编程-synchronized关键字大总结

可重入(可以避免死锁、单个线程可以重复拿到某个锁,锁的粒度是线程而不是调用)、不可中断(其实也就是上面的原子性)

10140
来自专栏fh-admin

springboot mybatis 后台框架平台 集成代码生成器 shiro 权限

来源:http://www.fhadmin.org/webnewsdetail8.html

34040
来自专栏Bmob后端云

驾校答题小程序实战全过程【连载】——4.题目采集与测试

由于没有数据,这次需要拿一些测试数据放到数据库。 这里想到本地采集,大家可以随意用任何后端语言,Python,PHP,Golang,Java,nodejs等等,...

17920
来自专栏wym

Java开发 窗体JFrame

23730
来自专栏远在上海

【转】面试官必读:Before you are going to interview candidates…

Here is some tips before you are going to interview new candidates:

8640
来自专栏远在上海

我一直很喜欢写程序,你呢?

我是1999年上大学的时候才接触计算机,那时候上网还叫“冲浪”。第一次去学校的机房,视觉、身心被震撼到,深信计算机的未来很美好,于是基本来放弃了本专业(电气工程...

12340
来自专栏远在上海

使用Oracle SqlDeveloper遇到的2个常见Java错误及解决办法

用了好长时间的Oracle官方SQL Developer近期在我两位同事的电脑上运行不正常了,起初怀疑是xp系统升级了赛门铁克的杀毒软件造成的,因为我的Win7...

33330
来自专栏量化投资与机器学习

【Python进阶,一学就会】系列1(文末免费送10本书)

列表推导式(list comprehension)为for循环提供了一个简短且更好的选择。它用于我们需要对列表中的每一个元素执行操作的迭代过程中。

11110

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励