编译并运行Java程序
首先我们要了解Java程序的运行机制与流程:
运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),JVM才能识别并运行它,JVM针对每个操作系统开发其对应的解释器,所以只要其操作系统有对应版本的JVM,那么这份Java编译后的代码就能够运行起来,这就是Java能一次编译,到处运行的原因。
JVM运行字节码:字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。
利用Java API编写的应用程序(application) 和小程序(Java applet) 可以在任何Java平台上运行而无需考虑底层平台, 就是因为有Java虚拟机(JVM)屏蔽了与具体操作系统平台相关的信息,实现了程序与操作系统的分离,从而实现了Java 的平台无关性,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
我们开始编写第一个Java程序:
class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
然后保存代码为HelloWorld.java
,所有Java源文件必须以.java
作为拓展名。
之后我们来将.java
源文件编译为.class
字节码文件:
javac HelloWorld.java
此命令会检查Java源代码的语法,一旦出现错误将会报错,如果语法没有问题则会在同目录下生成.class
字节码文件,该文件为二进制文件。
下面我们运行编译完成的Java程序:
java HelloWorld
注意:运行Java程序时不包含class拓展名,HelloWorld为程序的类名,同时class字节码文件默认名称为程序主类名,编译生成后不可修改,但对于java源代码文件没有要求
基本类型
基本类型 | 说明 |
---|---|
byte | 字节整型(8位) |
short | 短整型(16位) |
int | 整型(32位) |
long | 长整型(64位) |
float | 单精度浮点型(32位) |
double | 双精度浮点型(64位) |
char | Unciode字符 |
boolean | 布尔值 |
变量
Java是一种强类型语言,因此变量定义时必须有一个声明的类型,同时Java对变量名大小写敏感,这点类似于Python。
下面我们声明并命名一个名为age的整型变量:int age = 14;
我们在声明和赋值变量时遵循的语法为:类型 变量名 = 值;
同时在变量命名时,应遵循小驼峰命名规则,即第一个单词首字母小写,第二个及以后的每个单词首字母都大写,例如myAge、myFirstName
。
在Java10中增加了局部变量类型推断,我们可以使用var
来代替类型,并允许编译器推断变量类型,例如:
var name = "Ye";
常量
Java常量应使用final
声明,遵循语法为final 类型 常量名 = 值
,并且常量名称应全部大写,单词间用_
分隔,例如:
final int AGE = 18;
注释
/*
多行注释语句
*/
//单行注释语句
if语句
1. if语句
if(booleanExpression){
statment(s);
}
2. if-else语句
if(booleanExpression){
statment(s);
}else{
statment(s);
}
3. if-else if语句
if(booleanExpression){
statment(s);
}else if{
statment(s);
}else{
statment(s);
}
while语句
while(booleanExpression){
statment(s);
}
do-while语句
do{
statment(s); //只运行一次
}while(booleanExpression){
statment(s);
}
for语句
for(init; booleanExpression; update){
statment(s);
}
update
与init
是可选的,例如:
for(; k<3; ){
statment(s);
k++;
}
break语句
int i = 1;
while(true){
System.out.println(i);
i++;
if(i > 10){
break;
}
}
break语句后可跟一个标签用于把控制权转移到标签标识的代码开头,例如:
start: //标签
for(int i = 0; i < 10; i++){
for(int k = 1; k < 5; k++){
if(k == 3){
break start; //终止外层循环
}
}
}
continue语句
用法与break语句相同,但是不会终止循环,只会跳过一次循环,其余循环仍会继续。
switch语句
switch(Expression){
case value_1:
语句(1);
break;
case value_2:
语句(2);
break;
case value_3:
语句(3);
break;
default:
语句;
}