Java入门
这次我们来聊聊Java吧。自诞生以来,在年度最热门语言的排行榜上,Java不是第一就是第二,互联网行业上Java的工作岗位数量也一直不会少。所以Java程序员都以为自己永远不会失业,永远可以拿到高工资,然而层出不穷的新框架,什么mina、Zookeeper、Hadoop、Hbase、redis…… Java程序员们像孔乙己一样口中碎碎念着什么大数据,什么云计算,什么高并发,什么可用性健壮性……岗位越来越热门,要学的东西也越来越多,人才也越来越饱和,平均年龄越来越年轻,工资没见得增长,年纪大了后拿着公司的解雇通知在天台上感受着稀疏的头发随风飘零……呃,跑题了,本文不是为了吐槽行业现状,只是写一个简单的教程给想学习Java的新人看看。
Java能做什么
手机游戏、中间件、软件、网站,电脑游戏都是可以用Java编写。java是一门面向对象编程语言,吸收了C++语言的各种优点同时还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言功能强大但是入门简单。Java拥有很高的安全性、很强的跨平台性,开源的特性又使得基于Java的各种的框架异常丰富。目前热门的大数据、人工智能、机器学习、云计算、物联网什么的,Java都在其中占有重要的地位。
安装JDK
开始编写Java程序之前要先下载JDK Java Development Kit
。JDK中包含Java程序运行的环境JRE Java Runtime Environment
和编译构建Java程序的相关工具。以下是几个概念解释:
Java虚拟机(JVM)
:Java语言的一个非常重要的特点就是与平台的无关性,这个特点是通过Java虚拟机实现的:Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码。这里需要注意的是, java程序可以是平台无关的(跨平台运行),但是java虚拟机是平台相关的。
编译Java程序
:将java源代码编译成可以在Java虚拟机上的字节码文件。编译过程中会对语法进行检查,编译后生产的字节码文件后缀为.class。
JDK 可以通过Oracle Java(https://www.oracle.com/java/)或者OpendJDK(http://openjdk.java.net/)下载, 需要注意的是如果免费的JDK话,OracleJDK只能下载JDK8,更高版本的JDK是无法免费获取的,那么要使用最新版本的JDK可以选择使用OpenJDK。OpenJdk和OracleJDK只是实现方式不一样,还有部分功能会不一致,我们初学者可以不用去关心这些问题。目前我们可以下载得到最新版本是OpenJDK14 (2020.8.17)。
Linux 安装
我们️以Centos为例。
可以通过yum
进行安装。
- 先更新yum库的列表
1
yum update -y
- 查看yum上面可以安装的jdk版本
1
yum list java-*
- 执行安装命令
1
yum install "java-14-openjdk" -y
直接下载压缩包安装
如果发现yum
不支持最新的版本,也可以从OpenJDK的网站上下载最新版本的Linux平台安装包:《图片》
下载下来后使用tar
命令解压(可以自己指定目录,本文中将JDK解压到了/usr/jdk-14.0.2):解压完成后还需要手动配置环境变量:1
tar xvf openjdk-14.0.2_linux-x64_bin.tar.gz -C /usr/jdk-14.0.2
- 编辑profile 文件
1
vim /etc/profile
- 找到
export PATH
这一行,在它下面添加JAVA_HOME
和新的PATH
1
2
3export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/jdk-140.2
export PATH=$JAVA_HOME/bin:$PATH - 保存修改后退出文本编辑,执行source命令使修改生效。
1
source /etc/profile
Windows 安装
- 下载Windows平台对应的jdk
- 解压到指定目录,比如D:\java\jdk-14.0.2
- 打开系统配置配置系统环境变量
- 添加变量JAVA_HOME和CLASSPATH
- 修复PATH变量,增加JDK、JRE的bin目录
校验安装是否成功
- 安装配置成功后,执行
java -version
可以看到java的版本相关信息。 - 打开文本编辑器写一个简单的
HelloJava
代码并且保存为HelloJava.java
来测试下能否编译。1
2
3
4
5
6public class HelloJava{
//main 方法是java程序执行的入口,格式是固定的哦
public static void main(String...args){
System.out.println("Hello JAVA");
}
}基于Java14新增的自动编译特性,我们也可以这样运行Java代码:1
2
3$ javac HelloJava.java #编译源码
$ java HelloJava #运行
Hello JAVA1
2$ java HelloJava.java
Hello JAVA了解代码基础结构
Java代码语句包括4种基本控制结构:顺序结构、选择结构、循环结构、异常处理逻辑。
顺序结构
语句执行的基本顺序按各语句出现的位置先后顺序执行
1 | public class Order{ |
这段程序的输出是:
1 | $ java Order.java |
分支结构
代码中根据条件来控制代码的执行分支,也被称为成选择结构。Java中有两种控制分支的条件语句:if
和switch
。
1 | public class IfBranch{ |
1 | public class SwitchBranch{ |
以上代码可以根据运行时的参数来选择执行的语句:
1 | $ java IfBranch.java 关注 ##尝试下换成其他词 |
循环结构
循环是条件满足的时候重复执行相关的代码。Java中的循环结构可以通过for
和while
来实现。
1 | public class For{ |
异常处理
异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。大部分错误可以在编写代码的时候通过编译发现,现代的代码编写工具(比如IDEA、Eclipse)也可以辅助发现一些可能导致运行时出问题的错误。但是我们仍然需要留意并且处理一些正在运行起来才会出现的错误,或者偶然出现的错误。Java中异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。可以通过try...catch
代码块进行捕获和处理,处理完成(通常是打印日志信息和释放资源)后可以由开发者决定是终止运行还是忽略异常继续执行剩下的代码。
1 | public class ExceptionHandler{ |
Java中的类型
Java的类型类型可以分成功基本类型和引用类型。基本类型可以自己使用无线显示调用new
关键字。引用类型则是创建对象的时候使用,因为对象可以自己定义,实现更复杂的逻辑。
基本类型
Java基本类(内置直接使用的类型)有字符类型char,布尔类型boolean,整数类型byte、short、int、long和浮点数类型float、double。需要注意的是数值类型(整数和浮点数)是有边界,如果数值超过边界就会导致溢出:正数变成负数、负数变成正数。
1 | public class BaseType{ |
对象(引用类型)
Java有 5种对象类型(引用类型):类 接口 数组 枚举 注解。
1 | public interface InterfaceType{ |
现在你已经了解Java编程的基础,如果你对Java有兴趣想要更进一步,还有更多的东西可以学习,比如引用、封装对象、继承、多态、泛型、线程、同步、垃圾回收等等。入门后要自己编写程序,比如给自己几个简单的需求:用Java计算一堆数字、写一个java聊天程序、用java读取网页等等,相关的技术可以尝试通过网络查找关键字。要更进一步了解和提升Java编程技术,就需要自己去阅读书籍(推荐阅读《Java编程思想》(Thinking in Java)这本书)、多看别人写的代码、多写自己的代码。