开始
// hello.java
public class Hello {
// main methord
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 = "quickref.me";
原始数据类型
数据类型 | 尺寸 | 默认 | 范围 |
---|
byte | 1 字节 | 0 | -128 ~ 127 |
short | 2 字节 | 0 | -2 15 ~ 2 15 -1 |
int | 4 字节 | 0 | -2 31 ~ 2 31 -1 |
long | 8 字节 | 0 | -2 63 ~ 2 63 -1 |
float | 4 字节 | 0.0f | N/A |
double | 8 字节 | 0.0d | N/A |
char | 2 字节 | \u0000 | 0 ~ 65535 |
boolean | N/A | fasle | true/false |
字符串
String first = "John";
String last = "Doe";
String name = first + " " + last;
System.out.println(name);
循环
String word = "QuickRef";
for (char c: word.toCharArray()) {
System.out.print(c + "-");
}
// Outputs: Q-u-i-c-k-R-e-f-
数组
char[] chars = new char[10];
chars[0] = 'a'
chars[1] = 'b'
String[] letters = {"A", "B", "C"};
int[] mylist = {100, 200};
boolean[] answers = {true, false};
交换
int a = 1;
int b = 2;
System.out.println(a + " " + b); // 1 2
int temp = a;
a = b;
b = temp;
System.out.println(a + " " + b); // 2 1
类型转换
// Widening
// byte<short<int<long<float<double
int i = 10;
long l = i; // 10
// Narrowing
double d = 10.02;
long l = (long)d; // 10
String.valueOf(10); // "10"
Integer.parseInt("10"); // 10
Double.parseDouble("10"); // 10.0
条件句
int j = 10;
if (j == 10) {
System.out.println("I get printed");
} else if (j > 10) {
System.out.println("I don't");
} else {
System.out.println("I also don't");
}
用户输入
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(str);
int num = in.nextInt();
System.out.println(num);
Java 字符串
// 基本的
String str1 = "value";
String str2 = new String("value");
String str3 = String.valueOf(123);
// 级联
String s = 3 + "str" + 3; // 3str3
String s = 3 + 3 + "str"; // 6str
String s = "3" + 3 + "str"; // 33str
String s = "3" + "3" + "23"; // 3323
String s = "" + 3 + 3 + "23"; // 3323
String s = 3 + 3 + 23; // 29
// 字符串生成器
StringBuilder sb = new StringBuilder(10);
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| | | | | | | | | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
sb.append("QuickRef");
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| Q | u | i | c | k | R | e | f | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
sb.delete(5, 9);
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| Q | u | i | c | k | | | | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
sb.insert(0, "我的");
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y | | Q | u | i | c | k | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
sb.append("!");
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y | | Q | u | i | c | k | ! |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
String s = 3 + "str" + 3; // 3str3
String s = 3 + 3 + "str"; // 6str
String s = "3" + 3 + "str"; // 33str
String s = "3" + "3" + "23"; // 3323
String s = "" + 3 + 3 + "23"; // 3323
String s = 3 + 3 + 23; // 29
比较
String s1 = new String("QuickRef");
String s2 = new String("QuickRef");
s1 == s2 // false
s1.equals(s2) // true
"AB".equalsIgnoreCase("ab") // true
操作
String str = "Abcd";
str.toUpperCase(); // ABCD
str.toLowerCase(); // abcd
str.concat("#"); // Abcd#
str.replace("b", "-"); // A-cd
" abc ".trim(); // abc
"ab".toCharArray(); // {'a', 'b'}
String str = "abcd";
str.charAt(2); // c
str.indexOf("a") // 0
str.indexOf("z") // -1
str.length(); // 4
str.toString(); // abcd
str.substring(2); // cd
str.substring(2,3); // c
str.contains("c"); // true
str.endsWith("d"); // true
str.startsWith("a"); // true
str.isEmpty(); // false
不可变
String str = "hello";
str.concat("world");
// Outputs: hello
System.out.println(str);
String str = "hello";
String concat = str.concat("world");
// Outputs: helloworld
System.out.println(concat);
// 一旦创建不能修改,任何修改都会创建一个新的String
Java 数组
声明
int[] a1;
int[] a2 = {1, 2, 3};
int[] a3 = new int[]{1, 2, 3};
int[] a4 = new int[3];
a4[0] = 1;
a4[2] = 2;
a4[3] = 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] + " ");
}
// Outputs: 2 4 6
循环(读取)
String[] arr = {"a", "b", "c"};
for (int a: arr) {
System.out.print(a + " ");
}
// Outputs: a b c
多维数组
int[][] matrix = { {1, 2, 3}, {4, 5} };
int x = matrix[1][0]; // 4
// [[1, 2, 3], [4, 5]]
Arrays.deepToString(matrix)
for (int i = 0; i < a.length; ++i) {
for(int j = 0; j < a[i].length; ++j) {
System.out.println(a[i][j]);
}
}
// Outputs: 1 2 3 4 5 6 7
类型
char[] chars = {'b', 'a', 'c'};
Arrays.sort(chars);
// [a, b, c]
Arrays.toString(chars);
Java 条件
运算符
1. 算术运算符
+
:加法-
:减法*
:乘法/
:除法%
:取模(求余数)++
:自增(增加 1)--
:自减(减少 1)
2. 关系运算符
==
:等于!=
:不等于>
:大于<
:小于>=
:大于等于<=
:小于等于
3. 逻辑运算符
&&
:逻辑与(AND)||
:逻辑或(OR)!
:逻辑非(NOT)
4. 位运算符
&
:按位与|
:按位或^
:按位异或~
:按位取反<<
:左移位>>
:右移位(带符号)>>>
:右移位(无符号)
5. 赋值运算符
=
:赋值+=
:加法赋值-=
:减法赋值*=
:乘法赋值/=
:除法赋值%=
:取模赋值&=
:按位与赋值|=
:按位或赋值^=
:按位异或赋值<<=
:左移位赋值>>=
:右移位赋值(带符号)>>>=
:右移位赋值(无符号)
6. 三元条件运算符
7. 其他运算符
instanceof
:检查一个对象是否是特定类的实例new
:创建对象的实例void
:表示没有返回值this
:引用当前对象super
:引用父类
if-else 语句
int k = 15;
if (k > 20) {
System.out.println(1);
} else if (k > 10) {
System.out.println(2);
} else {
System.out.println(3);
}
switch 语句
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;
}
// Outputs: Result March
System.out.println("Result " + str);
三元运算符
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
// Outputs: 20
System.out.println(max);
Java 循环
For循环
for (int i = 0; i < 10; i++) {
System.out.print(i);
}
// Outputs: 0123456789
for (int i = 0,j = 0; i < 3; i++,j--) {
System.out.print(j + "|" + i + " ");
}
// Outputs: 0|0 -1|1 -2|2
For-each 循环
int[] numbers = {1,2,3,4,5};
for (int number: numbers) {
System.out.print(number);
}
// Outputs: 12345
// 用于循环数组或列表
While 循环
int count = 0;
while (count < 5) {
System.out.print(count);
count++;
}
// Outputs: 01234
Do While 循环
int count = 0;
do{
System.out.print(count);
count++;
} while (count < 5);
// Outputs: 01234
Continue
for (int i = 0; i < 5; i++) {
if (i == 3) {
continue;
}
System.out.print(i);
}
// Outputs: 01245
Break
for (int i = 0; i < 5; i++) {
System.out.print(i);
if (i == 3) {
break;
}
}
// Outputs: 0123
Java 集合框架
Java 集合
数组列表
List<Integer> nums = new ArrayList<>();
// Adding
nums.add(2);
nums.add(5);
nums.add(8);
// Retrieving
System.out.println(nums.get(0));
// Indexed for loop iteration
for (int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(i));
}
nums.remove(nums.size() - 1);
nums.remove(0); // VERY slow
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");
// Retrieving
System.out.println(m.get(6));
// Lambda forEach
m.forEach((key, value) -> {
String msg = key + ": " + value;
System.out.println(msg);
});
哈希集
Set<String> set = new HashSet<>();
if (set.isEmpty()) {
System.out.println("Empty!");
}
set.add("dog");
set.add("cat");
set.add("mouse");
set.add("snake");
set.add("bear");
if (set.contains("cat")) {
System.out.println("Contains cat");
}
set.remove("cat");
for (String element : set) {
System.out.println(element);
}
数组Deque
Deque<String> a = new ArrayDeque<>();
// Using add()
a.add("Dog");
// Using addFirst()
a.addFirst("Cat");
// Using addLast()
a.addLast("Horse");
// [Cat, Dog, Horse]
System.out.println(a);
// Access element
System.out.println(a.peek());
// Remove element
System.out.println(a.pop());
访问修饰符
修饰符 | 类 | 包 | 子类 | 全局 |
---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
no modifier | Y | Y | N | N |
private | Y | N | N | N |
常用表达
String text = "I am learning Java";
// Removing All Whitespace
text.replaceAll("\\s+", "");
// Splitting a String
text.split("\\|");
text.split(Pattern.quote("|"));
文本注释
// I am a single line comment!
/*
And I am a
multi-line comment!
*/
/**
* This
* is
* documentation
* comment
*/
关键词
abstract
assert
boolean
break
byte
case
catch
char
class
const
(Java中没有使用,保留以便未来使用)continue
default
do
double
else
enum
(从Java 5开始引入)extends
final
finally
float
for
goto
(Java中没有使用,保留以便未来使用)if
implements
import
instanceof
int
interface
long
native
new
package
private
protected
public
return
short
static
strictfp
(Java中的浮点数精度修饰符)super
switch
synchronized
this
throw
throws
transient
try
void
volatile
while
数学方法
方法 | 描述 |
---|
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) | ang的余弦 |
Math.tan(ang) | ang 的切线 |
Math.asin(ang) | ang 的反正弦 |
Math.log(a) | a 的自然对数 |
Math.toDegrees(rad) | 角度 rad |
Math.toRadians(deg) | 以弧度为单位的角度度 |
try/catch/finally
try {
// something
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("always printed");
}