如何运行Java程序
Java源码本质上是一个文本文件,我们需要先用javac把Hello.java编译成字节码文件Hello.class,然后,用java命令执行这个字节码文件:
因此,可执行文件javac是编译器,而可执行文件java就是虚拟机。
第一步,在保存Hello.java的目录下执行命令javac Hello.java:
$ javac Hello.java
如果源代码无误,上述命令不会有任何输出,而当前目录下会产生一个Hello.class文件:
$ ls
Hello.class Hello.java
第二步,执行Hello.class,使用命令java Hello:
$ java Hello
Hello, world!
注意:给虚拟机传递的参数Hello是我们定义的类名,虚拟机自动查找对应的class文件并执行。
直接运行java Hello.java也是可以的:
$ java Hello.java
Hello, world!
这是Java 11新增的一个功能,它可以直接运行一个单文件源码!
需要注意的是,在实际项目中,单个不依赖第三方库的Java源码是非常罕见的,所以,绝大多数情况下,我们无法直接运行一个Java源码文件,原因是它需要依赖其他的库。
小结
一个Java源码只能定义一个public类型的class,并且class名称和文件名要完全一致;
使用javac可以将.java源码编译成.class字节码;
使用java可以运行一个已编译的Java程序,参数是类名。
Java程序基本结构
Java是面向对象的语言,一个程序的基本单位就是class
不写public,也能正确编译,但是这个类将无法从命令行执行。
byte恰好就是一个字节,而long和double需要8个字节。
运算优先级
在Java的计算表达式中,运算优先级从高到低依次是:
()
! ~ ++ --
* / %
+ -
<< >> >>>
&
|
+= -= *= /=
关系运算符的优先级从高到低依次是:
!
>,>=,<,<=
==,!=
&&
||
常见的转义字符包括:
\" 表示字符"
\' 表示字符'
\\ 表示字符\
\n 表示换行符
\r 表示回车符
\t 表示Tab
\u#### 表示一个Unicode编码的字符
从Java 13开始,字符串可以用"“”…“”“表示多行字符串(Text Blocks)了。举个例子:
public class Main {
public static void main(String[] args) {
String s = “””
SELECT * FROM
users
WHERE id > 100
ORDER BY name DESC
“”";
System.out.println(s);
}
}
Java的字符串除了是一个引用类型外,还有个重要特点,就是字符串不可变。
空值null和空字符串"",空字符串是一个有效的字符串对象,它不等于null。
基本类型的变量是“持有”某个数值,引用类型的变量是“指向”某个对象;
引用类型的变量可以是空值null;
使用switch时,注意case语句并没有花括号{},而且,case语句具有“穿透性”,漏写break将导致意想不到的结果
switch语句还可以匹配字符串。字符串匹配时,是比较“内容相等”。
break语句可以跳出当前循环;
break语句通常配合if,在满足条件时提前结束整个循环;
break语句总是跳出最近的一层循环;
continue语句可以提前结束本次循环;
continue语句通常配合if,在满足条件时提前结束本次循环。
在for (int n : ns)循环中,变量n直接拿到ns数组的元素,而不是索引。
遍历数组可以使用for循环,for循环可以访问数组索引,for each循环直接迭代每个数组元素,但无法获取索引;
使用Arrays.toString()可以快速获取数组内容。