研一期间了解了一下实验室师兄师姐找工作的方向,发现有很多都是找的Java方向的。
这让酷爱C和C++的我感觉有点失落,毕竟通过本科对这些语言的学习感觉平时使用最多的就是C++了,想面向对象就面向对象,不想面向对象就直接用C语言的语法,二者完美融合。
但是Java就很麻烦,强行让你使用类对象,连main函数都要定义在类里面,在完成平时一些作业的时候写个类就很耗时,明明几个函数就解决的事非得复杂化,但是想想公司开发一些比较大的项目确实也需要这种类对象来进行模块功能划分。
但是Java的好处也是毋庸置疑的。
不知道大家在C++的编程中有没有碰到过访问非法内存或者遇到野指针这种报错(想起当年不熟悉调试被支配一两个礼拜的痛苦Debug时光),使用Java之后就不会出现这种情况,而且Java相比C++,更不像是一种语言,而是一种编程的生态系统,应用范围也更加广。
再加上和师兄师姐聊感觉c++主要还是开发桌面级应用程序或者流媒体(直播或者视频那种),还有开发游戏啥的,而java开发就比较广了,web开发、Android开发、客户端开发等,再加上以后就业想留在武汉,武汉的一些大一点的互联网公司感觉Java还是吃香点,所以就开始了Java自学啦~
Java的整个体系还是非常庞大的,这里我们先从Java的基础开始学习吧,把本科学习的东西都捡起来。
目录
一、Java语言概述
Java是一个典型的面向对象的程序语言,个人感觉就是C++的升级版,继承了C++的优秀,然后移除了指针(在平时学习的时候C++经常碰到野指针问题,就很烦),而且还帮程序员实现了内存的自动回收,不像C++每次使用了动态内存之后不及时delete就可能会有莫名其妙的错误。
二、Java语言平台版本
Java平台是java软件赖以运行的平台,一般可以分为以下三种:
1、J2SE(Java 2 Platform Standard Edition)标准版
是为开发普通桌面和商务应用程序提供的解决方案
该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发
2、J2ME(Java 2 Platform Micro Edition)微型版
是为开发电子消费产品和嵌入式设备提供的解决方案
可以在一些移动平台上完成程序的开发
3、J2EE(Java 2 Platform Enterprise Edition)企业版
是为开发企业环境下的应用程序提供的解决方案
该技术体系中包含的技术如Servlet、Jsp等,主要针对于Web应用程序开发
三、Java语言特点
Java有着非常重要的特点,但是其中最重要的就是以下两点:
1、开源
开源的重要性不言而喻,通过开放源代码来集成大家的智慧对该语言进行不停的增删改。
2、跨平台
说到跨平台不得不提Java的那句“write once,run anywhere”,只需要编译一次,就可以到处运行。
通过Java语言编写的应用程序在不同的系统平台上都可以运行,只需要在该操作系统上安装Java虚拟机即JVM即可,由JVM来负责Java如何在该系统中运行。
四、JRE与JDK
1、JRE(Java Runtime Environment)
JRE即Java运行环境。其中包括JVM(Java虚拟机)和Java程序所需的核心类库。
如果说想要运行一个开发好的Java程序,电脑中就必须要装JRE。
2、JDK(Java Development Kit)
JDK即Java开发工具包。JDK是给Java的开发人员使用的,JDK包括了开发工具(比如编译和打包)和运行环境JRE,所以安装了JDK之后就不需要再安装JRE了。
简单来说,开发者利用JDK进行Java程序的开发,然后通过JRE运行Java程序。
五、JDK安装路径下的目录
1、bin目录
主要存放一些可执行文件(*.exe),比如java编译器(javac.exe)、java运行工具(java.exe)、java打包工具(jar.exe)、文档生成工具(javadoc.exe)等。
2、db目录
db即database,是一个小型的数据库。从Java6.0开始,Java中就引用了一个新的成员JavaDB,这是一个纯Java实现的开源数据库管理系统。JavaDB的存在可以让开发人员不安装额外的数据库。
3、jre目录
jre目录是Java运行时环境的根目录,包括Java虚拟机和运行时需要的类包等。
4、include目录
由于JDK是通过C和C++实现的,所以在启动时需要引用一些C的头文件,该目录就是用来存放这些头文件的。
5、lib目录
lib即library,是存放Java类库和库文件的目录,包括开发工具使用的归档包文件。
6、src.zip文件
src.zip文件为src的压缩文件,src放置的是JDK核心类的源代码。
六、开发工具
比较常见的Java开发工具主要有以下几种:
1、notepad
2、Editplus
3、Eclipse
4、MyEclipse
5、IntelliJ IDEA
根据个人爱好和习惯,比较喜欢JetBrains公司的一些IDE,风格和功能都挺符合个人胃口的。
七、HelloWorld
HelloWorld作为编程语言学习的经典案例,我们在这里使用Java对HelloWorld进行实现。
public class Main {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
下面是输出的结果:
正如之前介绍的一样,在Java中几乎所有的变量或者方法都是依赖于类对象而存在的。
所以我们需要新建类对象Main来存放程序的入口函数main函数,然后在主方法中输出“Hello World”即可。
八、Java程序运行过程
IDEA这个IDE使用起来非常方便,省去了很多繁琐的步骤,帮助程序员专注于程序的开发。
创建Java文件写好程序之后点击运行就直接会有结果,但是为了学习Java,我们还是需要知道Java程序是怎么运行的。(整个流程有点像gcc那一套)
这里我们在JDK安装目录下的bin目录写java程序进行举例说明(win10操作系统):
我们直接新建一个txt文件,然后写入以下代码:
class Hello{
public static void main(String [] args){
System.out.println("Hello!");
}
}
然后保存后将文件后缀名改为.java即可。
然后我们按住shift+右击当前目录的空白处,选择在此处打开Powershell窗口,打开之后输入命令start cmd即可进入命令行窗口
进入命令行操作后首先利用javac.exe文件对*.java程序进行编译生成*.class类文件:
我们可以看到目录下面多了一个Hello.class文件,这就是编译生成的文件,然后我们用java.exe运行生成的*.class文件:
可以看到命令行中输出了Hello字符。
这一整套流程做下来比较麻烦,一般的IDE都会帮我们在后台做好,节省了程序员的时间,不过了解这一套流程能帮助程序员更理解java的运行过程。
九、注释
Java中的注释和C++类似,分为单行注释、多行注释、文档注释:
单行注释://
多行注释:/* blablabla */
文档注释:/** blablabla */
十、关键字
关键字是程序语言赋予特殊含义的名字,其特点是字母均为小写。
需要注意的一点是goto和const也是java的关键字,但是并未使用。
因为Java是从c++改进过来的,c++中是使用goto和const的,但是java没有使用这两个关键字。
我们在取变量或者类名称时需要注意不能取关键字的名字。
十一、标识符常见命名规则
1、包
即文件夹,用于解决相同类名的问题
包名要求全部小写,一般是公司的域名倒着写,比如:
公司域名www.baidu.com
包名:com.baidu.包的作用
2、类或者接口
单词的首字母大写(驼峰命名)
例StudentScore
3、方法和变量
如果为一个单词,则全部小写,例get
如果为多个单词,则第二个单词开始首字母大写,例getName
4、常量
所有字母大写,多个单词间用下划线_分开
例MAX_VALUE