IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 初识 Java -> 正文阅读

[Java知识库]初识 Java

前言

从目前这篇博客开始,我们正式开始进入Java的学习。

文章目录

Java语言概述

Java是什么

. Java是一个优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。下面我们通过java官方提供的数据来一起感受一下,Java到底有多"火"。
在这里插入图片描述

说到Java大家需要认识一位聪明绝顶的大佬,就是 Java之父 詹姆斯.高斯林

在这里插入图片描述


?

我为什么选择Java

通过上面的数据,同学们应该对Java目前到底有多流行有一个直观的认识了吧。这里有的人可能会问了,上面的
数据主要是Java在应用市场的流行,那么对于我们开发者,Java是否是我们开发应用程序的第一选择呢?来看下图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面三张图来自于最近三年的数据,各位可不要看Java最近几年热度下降就以为它不火。诶,说最近几年Python很火,但是Python专门用于对数据的处理,在其他领域方面,它并不行,c 和Java才是主力军。((就是所谓的 雷声大,却是下着毛毛雨))


?

题外话

很多可能会问 JavaScript 和 Java 有什么关系吗?
答案是没有,就像老婆饼里,没有老婆。腾讯游戏的抽奖概率会提升一样假。
就是为了博取Java的热度。

JavaScript 原名为 livescript,用于前端控制网页的功能,或者说是控制网页的行为,该软件和 HTML(基础网页的制作) + CSS(美化网页) 一起被称为 前端三剑客

总结

 我的意思并不是说 Java就是世界上最好的语言,只是说我更加偏爱Java,不然也不会学,对吧。
 每个语言都是它的特性,Python 处理数据,C 处理底层代码,Java 后台运行。

?

废话我们不多说,直接干!

初识 Java 的 main 方法

程序示例:

 Java的编程规范意义,左括号 是紧跟着 当前 行的
public class HelloWorld{
  public static void main(String[] arg){
     System.out.println("helloword");
  }
}

如上图展示,这就是Java当中最简单的一道程序了,可能有人一眼看得过去,一脸懵逼??
可以这样说,Java的main方法 应该是目前主流编程语言中最“长”的。


?

Java程序的结构

通过上述 Java 程序,我们可以看到一个完整的 Java程序的结构由三个部分组成。

Java程序的结构三部分

1. 源文件(扩展名为 .java,就像C语言的源程序文件的后缀是 ,c 是一样的意思);源文件带有类的定义。类用来表示程序的一个组件,小程序或许只有一个类。但类的内容必须包括在花括号里面。

public class/*类*/ HelloWorld/*类名*/{
// 下面的就是 类的内容,别称 类体;类体又可分为 2 个内容: 字段 和 方法组成。
  public static void main(String[] arg){
     System.out.println("helloword");
  }
}
注意!
1.一个 Java 文件中,只能有一个public的类(public class)。
2. 类名 和 文件名(不可以带数字和中文) 是相同的(见下方附图)

附图在这里插入图片描述


?

2.类:类中带有一个或多个方法。方法必须在类的内部声明

在这里插入图片描述


?

3.方法:在方法的花括号中编写方法应该执行的语句。

在这里插入图片描述


?

总图概括

在这里插入图片描述


?

如何运行一个java程序?

我们已经大致理解 Java的一个简单的结构。现在我们来开始尝试写一个这样代码,让它运行起来。
这里我们用笔记本去实现这个Java代码(建议下一个 subline test 笔记本,看得舒服一些)
先选好你存放代码的位置,反键新建一个文本文件,把文件后缀txt改成java

在这里插入图片描述


?

现在我们 Java文件 是存储在我们的磁盘上(是一个普通的文本文件,我用的 subline test 的笔记本软件)
那么 这个 文本文件 Helloworld.java 里的程序,我们该如何如何让它跑起来?
在这里插入图片描述


?

第一步:编译

这里我们需要借助电脑自带的 一个 “编译软件” cmd,(前提是你们要装好 jdk1.8的版本(现在大部分企业用的都是1.8 ,只有是这个大版本就可以,小版本随意)的Java插件,教程可以去b站去找)
在这里插入图片描述


?
弹出界面后(输入 java -version,就会显示出当前jdk的版本号),由于我的程序并不是 写在 jdk 的安装路径下,所以我们需要跳到对应磁盘,输入 (文件所在磁盘): + 回车
在这里插入图片描述


?
然后输入 cd + 你所写的程序的所在路径,回车
在这里插入图片描述


?
再 输入 javac 文件名 + 文件后缀,回车
在这里插入图片描述


.原因如下:
在这里插入图片描述
因为我们在 subline test 笔记本中,写代码加入大量中文注释,对其进行编译,会报错。
因为 编译标准 不匹配 导致的, 在 笔记本 当中 ,我们的 java文件 默认时文本文档,以ASCII码值形式的文件。按照 utf -8标准存储的。

?
就是说 在笔记本当中的代码是文本文件的标准 utf-8,而javac编译中,使用的是 GBK 标准。

  utf-8 :   8位Unicode转换格式(UTF-8)
是一种用于编码各种字符的相对较新的代码约定。
它是字符标识的标准,也是各种编程语言和设备的参考,有助于标准化字母,数字和其他字符的显示。


GBK:Chinese Internal Code Extension Specification。(汉字内码扩展规范)
GBK编码,是在GB2312-80标准基础上的内码扩展规范,
使用了双字节编码方案,其编码范围从8140至FEFE,共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,
支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。

所以两者不匹配,产生冲突,才会出现报错。


?

解决的办法

在 编译指令 javac HelloWorld.java 后面加上 -encoding utf-8,进行编译
意思就是说 编译 以 utf-8 的标准进行编译的,因为文本文件 的 组织格式 一般都是 utf-8,这样就避免 GBK 和 utf-8 的冲突

在这里插入图片描述

总的来说:
Windows 创建一个文本文件的时候,默认是 utf-8
javac 编译器,默认是 GBK 去编译的
所以两者不匹配,产生冲突,才会出现报错。
故我们指定 javac (编译器) 用 utf-8 的标准 去编译


另外再注意2点

  1. 如果你 用 utf-8 无法编译,就改成 GBK 。
    是因为 你电脑上的文本文件默认的可能就是 BGK,也就是说有的电脑对其进行编译时,不用特意的,让javac编译器按照某种标准去编译。
    直接编译就行(输入 java HelloWorld 就OK了)。【具体是怎么样编译,要看电脑,自己尝试一下吧。】

2.每一个类,在编译完后,都会生成一个对应的字节码文件(后缀为 .class文件)

在这里插入图片描述


?

第二步就是运行了,输入指令 java + 文件名

在这里插入图片描述
这样我们用笔记本写的一个 Java代码就成功运行了。


小拓展(必须需要了解的)

关于 public static void main(String[] args) 括号中 args 的应用

       args是 数组名

相信大家只要是看过我的C语言文章,或者本身具有 C基础的人,能看得懂,我接下来写的程序

一个简单的循环打印
注意,在程序中,我是没有给数组赋值的,
public class HelloWorld2{
	public static void main(String[] args){
		for(int i = 0;i < args.length;i++){
	// 在 Java 想要获取数组长度很简单,数组名.length( args.length )。
	// 这样写就可以代表数组的长度,或者取得数组的长度
	// 它的长度,跟你输入的数据决定的,就不用担心 你要不要重新赋值的问题,它自己会解决。
			System.out.println(args[0]);
			System.out.println(args[1]);
			System.out.println(args[2]);
			System.out.println(args[3]);
		}
		System.out.println("hello");
	}
}

运行情况一:

在这里插入图片描述


?

运行情况二:

在这里插入图片描述


?

Java 打印的三种方式

     System.out.print("打印不换行")System.out.prinln("打印换行,用的最多")System.out.printf("跟C语言一样的打印格式,同时也是用的最少的")

java的注释

Java 当中的注释,有三种

1. 行注释 
 //
  快捷键 ctr + /
快捷键 既可以用来注释,也可以取消注释



2.块注释  
/* 

*/
     快捷键 ctr + shift + /
  快捷键 既可以用来注释,也可以取消注释



3. 文档注释 类的开始 或者 方法的开始
/**
* 文档注释: 
* 作者:
* 日期:
* 描述:
* 如果一个类是public的,那么这个类的类名(A / HelloWorld),一定要和文件名相同
* 并且一个java文件中只能有一个 共有 public 的 类(class)
*/
文档注释,注释的内容就好像一个文档一样
 文档注释 是 没有 快捷键的

?

了解 JDK

javac 和 java 这两条指令,都是 JDK的指令

javac

   javac其实就是 java的编译器,所以它的功能,就是对java文件进行编译,产生一个 字节码文件(其实也是一个二进制文件,而且有趣的是文件开头是 cafebaby,见附图)
   (文件名和Java文件名相同,只是后缀为 .class ,这里的 字节码文件 涉及到我们 Java语言的一个特性:一次编译,到处运行。这里我会在  了解JDK  当中进行讲解)
   在命令行中 输入 javac + java文件名+后缀
   当然前面的程序,我们是把程序写到笔记本里,所以要注意 java文件其实就是一个文本文件,
   我们需要注意它的标准是什么,要不然编译的时候,容易产生冲突。

在这里插入图片描述


?

java

  java 就是运行命令,运行 经过 javac 编译处理之后,产生的字节码文件(后缀为.class文件)
  指令为 java + java文件名

?

说到这里, 我们再理顺一下:

字节码文件,我们在对程序进行编译(javac)的时候,产生 字节码文件(,class文件),它还是存储在我硬盘上的,那它怎么就运行起来了?

在这里插入图片描述
因为 java HelloWorld 这条命令,执行的是?编译之后的文件(也就是经过 javac 处理过之后产生的文件也就是 字节码文件)


?
那么 javac 可以说是 Java 的编译器,怎么看它在哪里呢,打开我们安装的JDK至以下路径(默认安装路径可以参考,就是一直点,不带改变路径的 ),你会发现 bin 目录下 可以看见 java.exe 和 javac.exe,这就是当前我们所使用的 java 命令在这里插入图片描述


?

java程序的执行过程

在这里插入图片描述
个人理解:
当 Java 程序 跑起来之后,程序的运行肯定是有运行环境的呀,JRE(Java Runtime Environment,java运行环境),最后程序都会跑到一个地方,这个地方叫做 JVM (Java Virtual Machine - Java虚拟机),JVM 会把 HelloWorld.class 这个字节码文件,做一个事情,把它(字节码文件) 加载到 JVM 自己当中,然后运行。


?

目前为止,我们 见过 JDK 和 JVM,还有 JRE

在这里 我给大家讲一下 JDK 、 JVM 和 JRE ,这三者的区别(很基础的面试题)

三者的全称,以及意思

JDK(JavaSE Development Kit ): 是 Java 开发工具

JRE(Java Runtime Environment ):是 Java 的运行环境

JVM(Java Virtual Machine): 是 Java 虚拟机

?

JDK JRE JVM 三者的包含关系图

在这里插入图片描述


?

JDK 包含 JRE 见图

在这里插入图片描述


?

JRE 包含 JVM 见图(找到了三个具体是一个并不清楚)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


?
听别人说 JVM 是 rt.jar 文件,我查了,rt.jar 文件里面有很多常用的类。是java程序的运行环境所用,应该不是(如果没错的话),
在这里插入图片描述


?

我们的重点是 JVM(Java的 一次编译,到处运行,这个特点就跟它有关)

JVM 是我们 Java 当中最重要、最核心的部分
(感兴趣的可以去看一本书 《深入理解JVM虚拟机》,建议后面再看,前期可能会看不懂)


?

Java之所以 能够跨平台也是因为这个(JVM)。

   了解过虚拟机的都知道,虚拟机跟我们的操作系统并不冲突,JVM(Java virtual machine - Java虚拟机 )也是虚拟机,
跟它一样的道理,就像在我们的电脑装了一个虚拟机,里面包含有我们Java的运行环境JRE(Java Runtime Environment -  Java运行环境),
跟我们电脑系统不冲突。
   意味着 不管我们的电脑是那种系统:linux、Windows、Mac,我们当中任意一个人写的 Java 代码,都可以在我们自己的电脑上执行程序

   只要我们是 用 相同版本的 JDK 写的代码(比如说 我用的是 jdk 1.8 的版本【小版本可以忽略,只要是大版本里的就行】,
在别人电脑上(假设:我Windows,他Mac),只要他装的也是 jdk 1.8 版本的,我的代码就可以在他的电脑上跑起来,
因为在 相同的大版本 的 情况下 ,JDK(Java Development Kit - Java开发工具)所包含的(所装的) JVM是相同的

  这里也就体现了 一次编译,到处运行

在这里插入图片描述
在编译的过程中,java 会把对应的 字节码文件(.class),加载到 我们的 JVM 当中
具体怎么将该文件加载到JVM当中呢? 这方面又涉及到面试的一些问题

双亲委派模型 (该部分涉及 类加载器等等…),现在我还不会这个,到了后面会了,我再来讲,现在只是让大家先了解下未来面试可能遇到的问题。

本文结束

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:22:51  更:2021-10-11 17:23:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:51:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码