public class Hello {
// main method
public static void main(String[] args)
{
// Output: Hello, world!
System.out.println("Hello, world!");
}
}
编译并运行
$ javac Hello.java
$ java Hello
Hello, world!
int num = 5;
float floatNum = 5.99f;
char letter = 'D';
boolean bool = true;
String site = "qr.warpnav.com";
| Data Type | Size | Default | Range |
|---|---|---|---|
byte |
1 byte | 0 | -128 to 127 |
short |
2 byte | 0 | -215 to 215-1 |
int |
4 byte | 0 | -231 to 231-1 |
long |
8 byte | 0 | -263 to 263-1 |
float |
4 byte | 0.0f | N/A |
double |
8 byte | 0.0d | N/A |
char |
2 byte | \u0000 | 0 to 65535 |
boolean |
N/A | false | true / false |
String first = "John";
String last = "Doe";
String name = first + " " + last;
System.out.println(name);
参阅: Strings
String word = "CheatSheets";
for (char c: word.toCharArray()) {
System.out.print(c + "-");
}
// Outputs: C-h-e-a-t-S-h-e-e-t-s-
参阅: Loops
String str = "hello";
String concat = str.concat("world");
// 输出: helloworld (修改操作必定返回新的字符串)
System.out.println(concat);
字符串对象一旦在内存中创建就无法被修改,任何修改都会产生新的 String 实例。
int[] a1;
int[] a2 = {1, 2, 3};
int[] a3 = new int[]{1, 2, 3};
int[] a4 = new int[3];
a4[0] = 1;
a4[1] = 2;
a4[2] = 3;
int[] a = {1, 2, 3};
System.out.println(a[0]); // 1
a[0] = 9;
System.out.println(a[0]); // 9
System.out.println(a.length); // 3 (数组长度)
int[] arr = {1, 2, 3};
for (int i=0; i < arr.length; i++) {
arr[i] = arr[i] * 2;
System.out.print(arr[i] + " ");
}
// 输出: 2 4 6
String[] arr = {"a", "b", "c"};
for (String a: arr) {
System.out.print(a + " ");
}
// 输出: a b c
int[][] matrix = { {1, 2, 3}, {4, 5} };
int x = matrix[1][0]; // 4
// [[1, 2, 3], [4, 5]]
Arrays.deepToString(matrix);
int[][] a = matrix;
for (int i = 0; i < a.length; ++i) {
for(int j = 0; j < a[i].length; ++j) {
System.out.println(a[i][j]);
}
}
// 输出: 1 2 3 4 5
char[] chars = {'b', 'a', 'c'};
Arrays.sort(chars);
// [a, b, c]
Arrays.toString(chars);
int k = 15;
if (k > 20) {
System.out.println(1);
} else if (k > 10) {
System.out.println(2);
} else {
System.out.println(3);
}
int month = 3;
String str;
switch (month) {
case 1:
str = "January";
break;
case 2:
str = "February";
break;
case 3:
str = "March";
break;
default:
str = "Some other month";
break;
}
// 输出: Result March
System.out.println("Result " + str);
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
// 输出: 20
System.out.println(max);
for (int i = 0; i < 10; i++) {
System.out.print(i);
}
// 输出: 0123456789
for (int i = 0,j = 0; i < 3; i++,j--) {
System.out.print(j + "|" + i + " ");
}
// 输出: 0|0 -1|1 -2|2
int[] numbers = {1,2,3,4,5};
for (int number: numbers) {
System.out.print(number);
}
// 输出: 12345
常用于遍历数组 Array 或集合列表 List。
int count = 0;
while (count < 5) {
System.out.print(count);
count++;
}
// 输出: 01234
int count = 0;
do {
System.out.print(count);
count++;
} while (count < 5);
// 输出: 01234 (至少执行一次)
for (int i = 0; i < 5; i++) {
if (i == 3) {
continue;
}
System.out.print(i);
}
// 输出: 0124
for (int i = 0; i < 5; i++) {
System.out.print(i);
if (i == 3) {
break;
}
}
// 输出: 0123
| 集合类 | 接口类型 | 保持顺序 | 自动排序 | 线程安全 | 允许重复 | 允许 null |
|---|---|---|---|---|---|---|
| ArrayList | List | 是 | 否 | 否 | 是 | 是 |
| Vector | List | 是 | 否 | 是 | 是 | 是 |
| LinkedList | List, Deque | 是 | 否 | 否 | 是 | 是 |
| CopyOnWriteArrayList | List | 是 | 否 | 是 | 是 | 是 |
| HashSet | Set | 否 | 否 | 否 | 否 | 最多 1 个 null |
| LinkedHashSet | Set | 是 | 否 | 否 | 否 | 最多 1 个 null |
| TreeSet | Set | 是 | 是 | 否 | 否 | 否 |
| CopyOnWriteArraySet | Set | 是 | 否 | 是 | 否 | 最多 1 个 null |
| ConcurrentSkipListSet | Set | 是 | 是 | 是 | 否 | 否 |
| HashMap | Map | 否 | 否 | 否 | 否 (key) | 最多 1 个 null (key) |
| HashTable | Map | 否 | 否 | 是 | 否 (key) | 否 (key) |
| LinkedHashMap | Map | 是 | 否 | 否 | 否 (key) | 最多 1 个 null (key) |
| TreeMap | Map | 是 | 是 | 否 | 否 (key) | 否 (key) |
| ConcurrentHashMap | Map | 否 | 否 | 是 | 否 (key) | 否 |
| ConcurrentSkipListMap | Map | 是 | 是 | 是 | 否 (key) | 否 |
| ArrayDeque | Deque | 是 | 否 | 否 | 是 | 否 |
| PriorityQueue | Queue | 是 | 否 | 否 | 是 | 否 |
| ConcurrentLinkedQueue | Queue | 是 | 否 | 是 | 是 | 否 |
| ConcurrentLinkedDeque | Deque | 是 | 否 | 是 | 是 | 否 |
| ArrayBlockingQueue | Queue | 是 | 否 | 是 | 是 | 否 |
| LinkedBlockingDeque | Deque | 是 | 否 | 是 | 是 | 否 |
| PriorityBlockingQueue | Queue | 是 | 否 | 是 | 是 | 否 |
List<Integer> nums = new ArrayList<>();
// 添加元素
nums.add(2);
nums.add(5);
nums.add(8);
// 索引获取
System.out.println(nums.get(0));
// 普通索引循环遍历
for (int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(i));
}
nums.remove(nums.size() - 1); // 移除最后一个元素
nums.remove(0); // 移除首个元素 (头部移动效率极低)
for (Integer value : nums) {
System.out.println(value);
}
Map<Integer, String> m = new HashMap<>();
m.put(5, "Five");
m.put(8, "Eight");
m.put(6, "Six");
m.put(4, "Four");
m.put(2, "Two");
// 根据 key 获取 value
System.out.println(m.get(6));
// Lambda 表达式遍历 Map
m.forEach((key, value) -> {
String msg = key + ": " + value;
System.out.println(msg);
});
Set<String> set = new HashSet<>();
if (set.isEmpty()) {
System.out.println("集合为空!");
}
set.add("dog");
set.add("cat");
set.add("mouse");
set.add("snake");
set.add("bear");
if (set.contains("cat")) {
System.out.println("包含 cat 元素");
}
set.remove("cat");
for (String element : set) {
System.out.println(element);
}
Deque<String> a = new ArrayDeque<>();
// add() 尾部追加
a.add("Dog");
// addFirst() 头部插入
a.addFirst("Cat");
// addLast() 尾部插入
a.addLast("Horse");
// 输出: [Cat, Dog, Horse]
System.out.println(a);
// 查看队首元素
System.out.println(a.peek());
// 弹出队首元素
System.out.println(a.pop());
| 修饰符 | 本类 (Class) | 同包 (Package) | 子类 (Subclass) | 任意外部 (World) |
|---|---|---|---|---|
public |
是 | 是 | 是 | 是 |
protected |
是 | 是 | 是 | 否 |
| 默认 (no modifier) | 是 | 是 | 否 | 否 |
private |
是 | 否 | 否 | 否 |
String text = "I am learning Java";
// 替换所有空格
text.replaceAll("\\s+", "");
// 拆分字符串
text.split("\\|");
text.split(Pattern.quote("|"));
参阅: Java 正则表达式
// 我是单行注释!
/*
我是
多行注释!
*/
/**
* 这是
* Javadoc
* 文档
* 注释
*/
abstractcontinuefornewswitchassertdefaultgotopackagesynchronizedbooleandoifprivatethisbreakdoubleimplementsprotectedthrowbyteelseimportpublicthrowscaseenuminstanceofreturntransientcatchextendsintshorttrycharfinalinterfacestaticvoidclassfinallylongstrictfpvolatileconstfloatnativesuperwhile| 方法函数 | 功能说明 |
|---|---|
Math.max(a,b) |
计算 a 与 b 的最大值 |
Math.min(a,b) |
计算 a 与 b 的最小值 |
Math.abs(a) |
计算 a 的绝对值 |
Math.sqrt(a) |
计算 a 的平方根 |
Math.pow(a,b) |
计算 a 的 b 次方 |
Math.round(a) |
四舍五入为最接近的整数 |
Math.sin(ang) |
正弦函数 |
Math.cos(ang) |
余弦函数 |
Math.tan(ang) |
正切函数 |
Math.asin(ang) |
反正弦函数 |
Math.log(a) |
自然对数 ln(a) |
Math.toDegrees(rad) |
弧度转角度 |
Math.toRadians(deg) |
角度转弧度 |
try {
// 可能抛出异常的代码段
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("不论是否发生异常都必然执行");
}