文章目录
- 如何在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,将会使程序非常混乱。如果大家在取名时能够遵守一定的约束(即规范),那多人写
除的代码仿佛一个人写的。