Java
活动地址:CSDN21天学习挑战赛
Java的语言概述
Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义
不劲如此,Java也是近些年来比较火的编程语言,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。
Java的发展史
- Java 是由由Sun公司的James Gosling(詹姆斯.高斯林)博士(java之父)发明
快来瞻仰一下巨佬
oak得名于James Gosling博士办公室外的一颗橡树。后随着1995年的互联网发展,Sun公司看到了oak在互联网发展的前景,于是1995年5月以java的名称正式发布!并提出了“Write one,Run anywhere”的口号
- java得名于高斯林博士平日爱喝咖啡,而正巧有座名叫爪哇岛盛产咖啡,于是博士就取名为java 爪哇。细看java的图标就是一杯热情腾腾的咖啡
Java的语言特性
以下Java语言特性来自于Java白皮书:
-
简单性
Java语法是C++语法的一个“纯净版本”,相当于对C++ 做了一个减法。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此Java开发环境远远超出大多数其他编程语言的开发环境。 -
面相对象
什么是面向对象?
在Java的世界里,一切皆对象。比如:人、狗、手机、电脑等都是对象。所谓面相对象,就是依靠对象之间的交互来完成事情,比如:人用手机网上购物,狗吃骨头…
Java的面向对象特性与C++旗鼓相当,与C++ 的主要不同点在于多重继承。在Java中,取而代之的是更简单的接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。 -
分布式(微服务)
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代码运行效率偏低,近年来JVM也在不断的优化,比如:JIT(即时编译器),热点代码探测,让Java程序的执行效率大幅提高,在有些场合不亚于C/C++。 -
多线程
Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作。 -
动态性
Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客户端没有任何影响。在Java中找出运行时类型信息十分简单。
因此:Java不仅仅是一门编程语言,也是一个由一系列计算机软件和规范组成的技术体系。
Java的第一个程序
写一个简单的在屏幕上打印 HelloeWorld 的程序
是直接在记事本上写
下面是动手环节:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello");
}
}
下面是我在记事本写好的打印 HelloeWorld 的源程序
-
但是怎么运行呢
要想让代码能在记事本上把代码运行起来,要提前安装好JDK工具包,并配置好环境
准备好后就可以用 win命令行窗口去运行记事本中的Java代码 -
第一步,在记事本中编译好Java代码(.java文件)保存。
下面进行示范:
打开DOS命令行窗口:Win+R
可以看到下面的界面,输入cmd
,打开命令行窗口
打开成功后,可以看到下面的页面
- 下面是成功运行后,并且执行代码后的样子
下面进行解析:
1.A :
是跳转到存放代码所在的盘,我的是把代码放在 A 盘,所以需要跳转,如果本来放在 C 盘就不用跳转
2.cd A:\practice\Java
cd
是完成目录的切换,A:\practice\Java
这是我存放代码所在的目录,这可以输入你存放代码所在的目录
3.javac HelloWorld.java
javac 是java的命令是运行的意思,后面的HelloWorld.java
是运行的文件名
成功后,在文件目录所在会生成一个文件名.class
,这是
4.java HelloWorld
运行 HelloeWorld.class 的文件,并且把内容输出到屏幕上
对上面的代码解析
了解Java的运行机制
Java程序的运行
Java程序的运行由如下三个部分组成:
- 编写源文件
源文件就是创建一个以.java
为后缀的文件,并且在文件中编写符号Java语法的代码,这就是Java 的源文件 - 进行编译
对一个 Java 源文件使用Javac
命令进行编译,如果符合语法,就会生成一个或多个.class
为后缀的文件,如果不符合语法,就会报错
.class
为后缀的文件被称之为字节码文件
,字节码文件用编译器是无法打开的 - 运行
最后就是使用java + 文件名
的命令对 之前生成的.class文件
进行运行
例如:生成的是 Hello.class
输入的就是java Hello
,之后就是用JVM(虚拟机)
对文件进行编译把内容输出到屏幕上
java 程序的运行过程
Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件
.class文件
是由字节码组成的与平台无关、面向JVM的文件(JVM 意思是java 的虚拟机)
最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行 。
- java的源代码必须进行
编译
生成.class(字节码文件)
,才能被JVM(虚拟机)
运行
JDK、JRE、JVM之间的关系
- JDK :JDK是Java开发工具包,里面就包含了
JRE
和JVM
,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。 - JRE:JRE全称叫(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境。
- JVM:Java虚拟机,运行Java代码
JDEA的快捷键
- main 是快速的生成一个
public static void main
- sout 是快速的生成一个输出语句
总结
- 在一个Java 源文件中
public class
的类只能有一个(我的理解是相当于main主函数),public
的类也可以没有 - 一个 java 源文件中可以定义多个
class
,并且有多少个.class
,就会生成对应个.class 文件