:Java是什么Java特性Java环境安装和编写一个简单的Java程序以了解Java程序运行原理
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:Java是什么Java特性Java环境安装和编写一个简单的Java程序以了解Java程序运行原理相关的知识,希望对你有一定的参考价值。
文章目录
特别注意:学习Java应该先学习C语言(至少基础语法),但是Java和C是两类东西(就像C和C++一样),所以学习时不要把C语言的一些东西生搬硬套在Java上,它们的思想是完全不一样的,否则你会学习的很痛苦
一:Java语言概述
(1)Java是什么
Java:Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系, 这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,扩泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合
(2)Java应用领域
主要有:
-
企业级系统:比如大型复杂的企业级软件系统,Java的安全机制以及跨平台性的优势,其在分布式系统领域开发中有广泛应用,涉及到金融、电信、交通、电子商务、ERP系统等
-
Web开发领域:Java语言在设计初期,赶上了互联网发展的风口,当时就瞄准了互联网开发,凭借稳定的性能表现和较好的扩展性, Java语言一直是大型互联网平台的重要解决方案
-
android开发应用:Android上的应用程序就是大多是用Java编写的,Android的SDK大部分就是直接将Java SDK翻译过来的,所以具有Java基础,也可以快速上手Android开发
-
大数据平台开发:大数据相关的各类框架,比如: Hadoop、spark、 storm、 flink等, 以吸各种中间件flume、kafka、sqoop等,这些框架以及工具等大多数是用Java语言开发的,随着大数据技术的落地应用,Java在大数据领域的应用前景也是比较广阔的
(3)Java语言特性
①:简单性
Java语法是C++语法的一个 “纯净版本”,相当于对C++做了一个减法。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境
②:面向对象
面向对象这个概念不是简单的几句话就能明白了,只有经过大量的编码实践你才会明白这种思想的伟大之处
- 有关面向对象内容可参照专栏:【专栏必读】软件工程导论第六版(张海藩)专栏学习笔记目录导航和Anki分享
③:分布式(微服务)
Java有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样
④:健壮性
Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性(对于曾经花费几个小时来检查由于指针bug而弓|起内存冲突的人来说,一定很喜欢Java的这一特性) 。不仅如此,Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题
⑤:安全性
Java适用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防篡改的系统。从一开始,Java就设计成能够防范常见的各种攻击:
- 运行时堆栈溢出。蠕虫和病毒常用的攻击手段
- 破坏自己进程空间之外的内存
- 未经授权读写文件
- …
⑥:体系结构中立
编译器生成一个体系结构中立的目标文件格式,按照该中规范生成的文件,只要有Java运行时系统,这些编译后的代码就可以在许多处理器上运行。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。这就是为什么可以: “Wrice once, Run anywhere”
而且其他语言编写的程序,在编译后如果能够严格按照字节码文件的规范生成.class
文件,也可以在JVM上运行
⑦:可移植性
与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。例如,Java中的int
永远是32位的整数,而C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题
⑧:解释性
Java为了实现与平台无关,自己维护了一套基于栈架构的指令集,Java源代码经过编译之后,字节码文件中的 指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为Java程序在执行 时,Java解释器会逐条的将字节码文件中的指令翻译成CPU的指令集
⑨:动态性
Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客户端没有任何影响。在Java中找出运行时类型信息十分简单(反射的特性,后续会学到)
⑩:多线程
Java是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作
二:Java程序运行原理
(1)JDK、JRE、JVM关系
它们的关系如下图所示,简单来说只要你装好JDK,配置好相关环境变量就具备了开发Java程序的条件
- JDK(Java Development Kit):表示Java开发工具包,提供给Java程序员使用;包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstck等
- JRE(Java Runtime Environment):表示Java运行时环境;包含了JVM、Java基础类库,是使用Java语言编写程序运行的所需环境
- JVM(Java Virtual Meachine):表示Java虚拟机,是用软件模拟的硬件,底层由C/C++实现
如下图
(2)Java程序运行过程
如下,建立一个文本文档,用Java输出“Hello World”,然后将后缀名改为.java
- 先不要在意语句细节
public class HelloWorld
public static void main(String[] args)
System.out.println("Hello World");
其运行过程如下
- 首先使用记事本或IDE编写Java源程序(已完成)
- 接着使用
javac.exe
编译器编译该源程序,生成xxx.class
的字节码文件(javac xxx.java
) - 然后使用
java
运行xxx.class
字节码文件(java xxx
),该程序最终是运行在JVM上的
三:Java环境安装
(1)JDK安装
这篇博文所展示的安装过程十分清晰(Windows):点击跳转
(2)IntelliJ IDEA安装与使用
- 注意:JDK必须提前安装好
视频1:IntelliJ IDEA社区版安装教程
13分钟带你搞定社区版IDEA的安装
视频2:IntelliJ IDEA基础开发设置
IDEA常用的一些基础开发设置
视频3:IntelliJ IDEA快捷键设置
IDEA一些基础的开发快捷键
视频4:IntelliJ IDEA调试方法
IDEA的一些基础的调试方法
四:编写一个Java程序
- 这里先不用IntelliJ IDEA,使用sublime这种软件(或者纯记事本)编写
(1)运行Hello World
如下编写一个HelloWorld.java程序
public class HelloWorld
public static void main(Sting[] args)
System.out.println("Hello World");
打开DOS,进入源程序所在路径
根据前面所述,在DOS中
- 输入
javac HelloWorld.java
,使其编译为字节码文件javac HelloWorld.class
- 输入
java HelloWorld
,运行程序,javac HelloWorld.class
会被加载进JVM中运行
(2)代码细节
对于任何语言,都可以从HelloWorld这样简单的程序中发现一些语言细节,正所谓“管中窥豹,略见一斑”
①:关于public class HelloWorld
public
是访问修饰符,可以类比C++。不过需要注意,1个Java文件只能拥有一个1个被public
修饰的类(但1个Java可以有多个类)class
表示定义一个类,由于Java是一门纯面向对象语言,这意味着在Java中一切皆对象。因此即便是如打印“HelloWorld”这样一个简单的操作,也要把它当做对象,而这个对象的功能就是打印“HelloWorld”- “HelloWorld”为类名。需要注意:如果此类被
public
修饰那么文件名必须和类名一致,否则将会出现编译错误
②:关于public static void main(String[] args)
-
这是Java中的
main
函数,和C语言中的main
函数的地位相似,其中public static
也是修饰符 -
在Java中,我们一般把函数称作方法
-
String[] args
所处位置为形参列表 -
其中
String
为字符串类型,String[]
为字符串数组(这和C语言中数组的设置方法有些区别,后面会说)。有Linux开发经验的同学会明白,在main
函数中的形参是用来接受命令行中输入的内容的,也即命令行参数。因此在下面的例子中在java Helloworld
后面追加一段文字“this is Java program”,这些内容将会被String[] args
所接受(关于数组打印细节后面文章会学习)
public class HelloWorld
public static void main(String[] args)
for(int i = 0 ; i < args.length; i++)
System.out.println(args[i]);
③:关于System.out.println(“Hello World”)
Systme.out.prinln
是Java中的打印语句(表示打印并换行);除此之外常用的还有print
(直接打印)和printf
(格式化输出)
public class HelloWorld
public static void main(String[] args)
System.out.println("print and changeline");
System.out.print("directly print");
System.out.printf("%2d\\n", 10);
(3)经常出现的错误
第一次使用Java程序,难免会出现一些错误,大概率可能是这些原因
- 源文件名后缀不是
.java
(注意显示文件后缀名) - 类名与文件名不一致
main
方法名字写错: mian- 类没有使用
public
修饰 - 方法中语句没有以分号结尾
- 中文格式的分号
- JDK环境没有配置好,操作系统不能识别javac或者java命令
文章目录
五:Java注释
(1)注释规则
Java中注释主要分为以下三种
- 单行注释:
//注释内容
;用的最多 - 多行注释:
/*注释内容*/
;不推荐使用 - 文档注释:
/**注释内容*/
;一般用在函数或者类上边
需要注意
- 多行注释不能嵌套使用
- 无论是单行还是多行注释,都不参与编译,也即
.class
文件中是不包含注释信息的
/**
文档注释
@version v1.0.1
@deprecated 2022/06/16
@author 快乐江湖
第一个HelloWorld,以供练习
*/
public class HelloWorld
/*
1.main方法是Java程序的入口方法
2. main函数的格式是固定的,必须为public static void main(String[] args)
*/
public static void main(String[] args)
System.out.println是Java中标准输出,会将内容输出到控制台
System.out.println(10);
(2)注释规范
- 内容准确:注释内容要和代码一致, 匹配,并在代码修改时及时更新
- 篇幅合理:注释既不应该太精简,也不应该长篇大论
- 使用中文:般中国公司都要求使用中文写注释,外企另当别论
- 积极向上:注释中不要包含负能量
六:Java标识符
标识符:在程序中由用户给类、方法或者变量所取的名字,标识符必须满足
- 可以包含字母、数字、下划线和
$
符号 - 不能以数字开头
- 不能是关键字
- 严格区分大小写
在命名时,我们建议
- 类名:大驼峰式结构(每个单词的首字母大写);例如
HelloWorld
、DisplayMessage
等 - 方法名、变量名:小驼峰式结构(首字母小写,后面的每个单词的首字母大写);例如
addTwoNumber
、computeAverage
等
七:Java关键字
关键字:由Java提前定义好的,有特殊含义的标识符、保留字
- 如下是Java中的关键字(部分)
以上是关于:Java是什么Java特性Java环境安装和编写一个简单的Java程序以了解Java程序运行原理的主要内容,如果未能解决你的问题,请参考以下文章
Java特点优势安装以及编写第一个文件Hello World!