文章目录
- 如何在cmd上编译、运行
- 代码解析
- String[] args中放的是什么
- Java结构
- 编译运行可能遇到的错误
- Java中的注释
- Java的三种注释
- 编码不一致的问题
- IDEA常用基础开发快捷键
- 补齐快捷键
- 注释快捷键
- IDEA的基础调式方法
- 标识符
如何在cmd上编译、运行
在没有集成开发环境下,该如何去运行一个java程序呢?
- 先创建一个文本文档,将这个文件的后缀名改为java

类型就会变为java源文件

- 接着打开记事本开始写java代码(写完要保存)

此时这些代码就是一些普通的字母,我们该怎样把它们变成程序呢?
既然要变成计算机能识别的程序,那么它必须得是二进制。所以必须通过编译生成二进制的内容,计算机才能识别它。 - 该怎么变成电脑可以识别的二进制呢?
- 在放
Test.java文件的路径下输入cmd

变成这样:

输入cmd+回车

此时打开的窗口就已经在刚刚的路径下了:

此时用java的编译器进行编译,Java的编译器是javac。通过javac去编译我们写好的Test.java

回车过后虽然什么也没有输出,但多了一个名为Test.class的CLASS文件。
这个CLASS文件是(二进制的)字节码文件,通过javac将Test.java生成了Test.class的字节码文件(二进制)
- 在放
- 既然已经编译生成好字节码(二进制)文件后,那么该怎么运行这个
Test呢?
通过java这个命令来运行:
注意:javac后面+Test.java(有后缀的文件名);
java后面+Test(文件名/类名,反正无后缀) - 运行后的结果:

当我们使用java命令的时候,会把生成好的二进制文件运行到JVM(java virtual machine)里面,也就是java虚拟机当中,最后会输出结果:hello world

这时候就会有人问,我没有安装java虚拟机(JVM)呀?
其实我们已经安装了,因为我们装了jdk,在jdk里面就包含JVM.

JDK里有个叫JRE的东西,JRE里面又有JVM。所以,当我们把JDK安装好之后,实际上JVM也就装好了。
JDK(Java Development Kit)——Java开发工具包,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。
JRE(Java Runtime Environment——Java运行时环境,包含了JVM,Java基础类库。
JVM(java virtual machine)——Java虚拟机,运行Java代码。
代码解析

- 代码中
public class是固定写法(也可以不写public,区别后面再说) - 我们把第一行的
Test叫做类名,类名有以下几个要求:- 1.必须要为大驼峰(eg:MaxNum):如果有一个单词,这个单词的首字母大写;如果有两个及以上的单词,每个单词的首字母大写。
- 2.被
public修饰的类名必须和文件名相同
什么是类呢?
class修饰Test那么Test就是一个类。这个类就要与文件名Test相同,所以这里是Test。
- 代码中
public static void main{}叫做main方法,是程序的入口。
main方法的写法是固定的,写成public static void main{},与C语言学的main{}是一样的。 - 代码中用括号包起来的
String[] args是main的参数,args是数组。
在我们之前学的C语言中,数组不应该是int arr[]这样写的吗?为什么这里写成int[] arr?
我们通常是通过类型来定义变量的:类型+变量名,如int a;而C语言中数组的写法是类型中间夹个变量名,是不合适的。所以Java中String[] args这样写才是比较合理的,此时这个数组叫做字符串数组。 - 代码中
System.out.println类似于C语言中的打印,也就是printf,只不过这里的ln代表着换行。 - 最后双引号引起来的
“hello world”叫做字符串 - 注意:左花括号一定是在当前行的!!!换行也不会报错,但建议括号对齐

String[] args中放的是什么
String[] args里面放的到底是什么呢?
因为我们有C语言的基础,我们对代码进行一点改造:
-
先给代码加个循环

Java中可以通过数组名args调用length,这样可以自动计算出数组的大小。
所以args.length代表着当前数组的长度 -
再通过
System.out.println在循环中进行输出,输出的是args[i]:

-
修改完代码后按
ctrl+s保存,接着在放Test.java这个文件的路径下输出cmd打开命令界面

-
输入
javac Test.java进行编译,输入java Test进行运行

我们发现这里什么也没有输出,可是我们在代码中写了输出了呀?
这里就要告诉我们args数组里面存的到底是什么了。 -
我们再敲一条命令:
java Test gxb is a pretty girl。(此时在运行这个java程序的时候后面加了gxb is a pretty girl)

发现:对运行时输入的内容进行了打印(输出的是运行时输入的内容)
所以数组args存了运行java程序时所输入的参数

我们把args所存储的内容叫做运行时的命令行参数。
也就是说,当我们在运行java程序的时候,是可以给它输入一些值的,这些值会存储到args中,这就是String args这个参数的意义。
Java结构
通过上述代码,我们可以看到一个完整的Java程序结构,由如下三个部分组成:
- 源文件(拓展名为
.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类,类的内容必须包含在花括号里面。 - 类:类中带有一个或多个方法,方法必须在类的内部声明。
- 方法:在方法的花括号中编写方法应该执行的语句(方法就是C语言中的函数)。
注意:
-
在一个源文件中只能有一个
public修饰的类。
我们不能像这样再在这个源文件中写个类Test2

而且源文件名字必须与public修饰的类的名字相同。 -
我们在写代码的时候一定要注意结构,Java代码的结构是这样的:
最外层一定是类,在类当中才会有各种各样的方法,所以不能让方法游离于类外

如我们再写一个叫func的方法

这个func方法是游离于类Test之外的,我们保存后试试编译(所有修改后的代码都需要重新编译)这段代码:

所以方法一定不能游离于类外的
编译运行可能遇到的错误
- 源文件名后缀不是
.java - 类名与文件名不一致
main方法名字写成mian- 类没有使用
public修饰 - 方法中语句没有以分号结尾
- 中文格式的分号
- JDK环境没有配置好,操作系统不能识别
javac或者java命令
Java中的注释
Java的三种注释
Java中的注释主要分为以下三种:
-
单行注释:
//注释内容(用的最多) -
多行注释:
/*注释内容*/(不推荐) -
文档注释:
/**文档注释*/(常用于方法和类之上描述方法和类的作用)可以被javadoc工具解析,生成一套以网页文件形式体现的程序说明文档
Java文档注释如何生成的命令:javadoc -d myHello -author -version -encoding UTF-8 -charset UTF-8 Test.java- 在
cmd中,使用javadoc工具从Java源码中抽离出注释 -d创建目录,myHello为目录名-author显示作者-version显示版本号-encoding UTF-8 -charset UTF-8字符集修改为UTF-8

可以看到敲完命令后路径中多了一个叫myHello的目录

点开myHello目录,在这么多文件中找到index.html打开

打开之后就可以看到我们在代码中写的版本、作者,还有构造器、main方法等等

这就是生成的一套以网页文件形式体现的程序说明文档 - 在
注意:
- 多行注释不能嵌套使用
- 不论是单行还是多行注释,都不参与编译。即编译之后生成的
.class文件中不包含注释信息
编码不一致的问题
我们写段代码,作用是在屏幕上打印haha

编译、运行程序

接着我们将三种注释分别插入在代码的不同位置中,再保存代码

我们试着编译这段代码

问题:我们只是加了一些注释,为什么就报错了呢?
我们再将代码改改:

此时我们将注释中的中文部分删掉,再编译代码看看

这时编译却没有报错,所以以上报错是中文问题。
那么为什么加了中文就报错呢?
我们看看报错信息

这是因为有编码的过程。在记事本上中文是按照UTF8的编码方式编码的。而javac在进行编译的时候,cmd是默认按照GBK的编码方式编码的。
报错的原因就是编码不一致。
那么我们就规定编码方式,让编码方式一致:
- 还原有中文的代码

- 编译这段代码

- 报错就需要用
-encoding utf-8这条命令指定编码方式(指定javac编译的时候是以utf-8编码,那么就一致了)完整的命令为javac -encoding utf-8 Test.java

这样以来就可以运行成功
以上都是在cmd中运行Java程序,我们以后写代码是用一个集成开发环境,公司普遍用IntelliJ IDEA
IDEA常用基础开发快捷键
补齐快捷键
- main方法的快捷键
psvm+回车

补齐:

- 打印快捷键
sout+回车

补齐:

如果要打印a的话,输入sout+回车,再写上a

也可以a.sout+回车


- 循环快捷键
fori+回车

补齐:

注释快捷键
- 块注释快捷键:先选中,再按
ctr+shift+/


取消块注释也是:先选中,再按ctr+shift+/

- 行注释原本就是
//,也可以利用行注释的快捷键:先选中,再ctr+/。
取消行注释也是先选中,再ctr+/。 - 文档注释:写
/**+回车

写个/*+回车


IDEA的基础调式方法
我们先写上一段小代码

接下来演示基础调试:
-
打断点。若我们想调试第18行,就在18行的前面点一下就好


取消断点直接点那个小红点就好了 -
找绿色甲壳虫。

点击进行调试,出现以下这个界面

蓝色阴影部分表示代码执行到了这里,但是这行代码还没执行完,所以我们只能看到args这一个参数,并没有a

-
如果想让它往下走该怎么办呢?
我们先看这几个按钮:

第一个按钮:一步一步往下走,遇到函数一步执行完,不进入函数内部
第二个按钮:一步一步往下走,遇到函数可以进入函数内部
第三个按钮:以我们目前要学习的知识来说,与第二个按钮作用是一样的
第四个按钮:跳出。若在一个函数内部用这个按钮,则函数后面的代码不再执行,直接跳出函数。 -
暂停调试就点这个红色的小方块
再将断点取消就好了。
标识符
在上述程序中,Test称为类名、main称为方法名、a称为变量名,也可以将它们称为标识符。
标识符就是在程序中由用户给类名,方法名或者变量所取的名字。
硬性规则:
标识符由字母、数字、下划线和$(美元符号)组成,但标识符不能以数字开头,也不能是关键字,且严格区分大小写。
通过观察上述程序可以发现,
public,class,static等颜色会发生变化,我们将这些具有特殊含义的标识符称为关键字。
关键字是由Java语言提前定义好的,有特殊含义的标识符,或保留字。
注意:main可以用来定义变量名等,但是不建议
软性建议:
- 类名:每个单词的首字母大写(大驼峰)
- 方法名:首字母小写,后面每个单词的首字符大写(小驼峰)
- 变量名:与方法名规则相同
int maxNum=10;//小驼峰
一个大型的工程,是由多名工程师协同开发的,如果每个人都按照自己的方式随意取名,比如:person、
PERSON、Person、_person,将会使程序非常混乱。如果大家在取名时能够遵守一定的约束(即规范),那多人写
除的代码仿佛一个人写的。












![[Linux]从零开始的ARM Linux交叉编译与.so文件链接教程](https://i-blog.csdnimg.cn/direct/5f7c0f542c2e46b291ebf807169540ba.png)





