该å¤å¿åæ¯é对 Java åå¦è çéæè¯¾ç¨ï¼æå©äºå¤ä¹ Java è¯è¨çåºæ¬è¯æ³ã
public class Hello {
// ä¸»è¦æ¹æ³
public static void main(String[] args)
{
// è¾åº: 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 = "jaywcjlove.github.io";
| æ°æ®ç±»å | å¤§å° | é»è®¤ | èå´ |
|---|---|---|---|
byte | 1 byte | 0 | -128 ^to^ 127 |
short | 2 byte | 0 | -2^15^ ^to^ 2^15^-1 |
int | 4 byte | 0 | -2^31^ ^to^ 2^31^-1 |
long | 8 byte | 0 | -2^63^ ^to^ 2^63^-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 = "QuickRef";
for (char c: word.toCharArray()) {
System.out.print(c + "-");
}
// è¾åº: Q-u-i-c-k-R-e-f-
æ¥ç: Loops
char[] chars = new char[10];
chars[0] = 'a';
chars[1] = 'b';
String[] letters = {"A", "B", "C"};
int[] mylist = {100, 200};
boolean[] answers = {true, false};
æ¥ç: Arrays
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");
}
æ¥ç: [Conditionals](#æ¡ä»¶è¯å¥ Conditionals)
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(str);
int num = in.nextInt();
System.out.println(num);
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("Reference");
âââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ
| R | e | f | e | r | e | n | c | e |
âââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ
0 1 2 3 4 5 6 7 8 9
sb.delete(3, 9);
âââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ
| R | e | f | | | | | | |
âââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ
0 1 2 3 4 5 6 7 8 9
sb.insert(0, "My ");
âââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ
| M | y | | R | e | f | | | |
âââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ
0 1 2 3 4 5 6 7 8 9
sb.append("!");
âââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ¬ââââ
| M | y | | R | e | f | ! | | |
âââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ´ââââ
0 1 2 3 4 5 6 7 8 9
String s1 = "QuickRef";
String s2 = new String("QuickRef");
s1 == s2 // false
s1.equals(s2) // true
// intern æ¹æ³è·å¾åç¬¦ä¸²å¸¸éæ± ä¸çæä¸å¼ç¨
s1 == s2.intern() // 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");
// è¾åº: hello
System.out.println(str);
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; // æ£å¸¸èµå¼
a4[3] = 4; // ä¼åºç°ç´¢å¼è¶çå¼å¸¸ ArrayIndexOutOfBoundsException
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}, {6}};
int x = matrix[1][0]; // 4
System.out.println(Arrays.deepToString(matrix));
// è¾åº: [[1, 2, 3], [4, 5], [6]]
for (int i = 0; i < matrix.length; ++i) {
for(int j = 0; j < matrix[i].length; ++j) {
System.out.println(matrix[i][j]);
}
}
// è¾åº: 1 2 3 4 5 6
char[] chars = {'b', 'a', 'c'};
Arrays.sort(chars);
// [a, b, c]
Arrays.toString(chars);
+ (å æ³è¿ç®ç¬¦(ä¹ç¨äºåç¬¦ä¸²è¿æ¥))- (åæ³è¿ç®ç¬¦)* (乿³è¿ç®ç¬¦)/ (ååºè¿ç®ç¬¦)% (使°è¿ç®ç¬¦)= (ç®åèµå¼è¿ç®ç¬¦)++ (å¢éè¿ç®ç¬¦ï¼å°å¼å¢å 1)-- (éåè¿ç®ç¬¦ï¼å°å¼å 1)! (é»è¾è¡¥ç è¿ç®ç¬¦ï¼å转å¸å°å¼)== (çäº)!= (ä¸çäº)> (æ¯...æ´æ£)>= (å¤§äºæçäº)< (å°äº)<= (å°äºæçäº)&& æ¡ä»¶ä¸|| æ¡ä»¶æinstanceof (å°å¯¹è±¡ä¸æå®ç±»åè¿è¡æ¯è¾)~ (ä¸å
æä½è¡¥ç )<< (ç¾å左移)>> (æç¬¦å·å³ç§»)>>> (æ 符å·å³ç§»)& (æä½ä¸)^ (æä½å¼æ)| (æä½å
å« OR)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);
// ä¸è¿ç®
if (condition1 && condition2) {
// 妿 condition1 å condition2 齿ç«
// åæ§è¡æ¤å¤ç代ç
}
// æè¿ç®
if (condition1 || condition2) {
// 妿condition1æcondition2ä»»æä¸ä¸ªæç«
// åæ§è¡æ¤å¤ç代ç
}
// éè¿ç®
if (!condition) {
// 妿æ¡ä»¶ä¸æç«ï¼åæ§è¡æ¤å¤ç代ç
}
// çäº
if (a == b) {
// 妿açäºbï¼åæ§è¡æ¤å¤ç代ç
}
// ä¸çäº
if (a != b) {
// 妿aä¸çäºbï¼åæ§è¡æ¤å¤ç代ç
}
// 大äºã大äºçäºãå°äºãå°äºçäº
if (a > b) {}
if (a >= b) {}
if (a < b) {}
if (a <= b) {}
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
ç¨äºå¾ªç¯æ°ç»æå表
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
public class Dog {
private String name;
// æé æ¹æ³æ æ è¿åå¼ï¼æ¹æ³åä¸ç±»åç¸å
// ä¸ä¸ªç±»å¯ä»¥æå¤ä¸ªæé æ¹æ³
// Java é»è®¤æä¾ä¸ä¸ªæ åæé æ¹æ³ï¼åªæå¨æ²¡ææ¾å¼å®ä¹ä»»ä½æé æ¹æ³æ¶ï¼
public Dog() {
}
public Dog(String name) {
this.name = name;
}
}
public class Dog {
// æååé
private String name;
// ç±»åé
// å¤å¯¹è±¡å°ä¼å
±äº«åä¸ä¸ªç±»åé
static int val = 10;
public void Say() {
// å±é¨åé
String sentence = "hello";
System.out.println(sentence);
}
}
Dog myDog = new Dog(); // è°ç¨æ åæé 彿°
Dog myDog2 = new Dog("aaa"); // è°ç¨å¯¹åºåæ°å表çæé 彿°
// è°ç¨æ¹æ³
myDog.Say();
public Animal {
public String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println("eat something");
}
}
// Dog类继æ¿Animalç±»
public Dog extends Animal {
// è°ç¨ç¶ç±»çæé 彿°
public Dog(String name){
super(name);
}
}
请注æJava䏿¯æå¤ç»§æ¿ï¼åªè½å¤åç»§æ¿ï¼ä½æ¯æå¤éç»§æ¿ å³ï¼ä¸ä¸ªç±»æå¤åªæä¸ä¸ªç¶ç±»ï¼ä½å¯ä»¥æç·ç·ç±»å太ç·ç·ç±»
superå¼ç¨å½åç±»çç¶ç±» thiså¼ç¨èªèº«
class Animal {
void eat() {
System.out.println("animal : eat");
}
}
class Dog extends Animal {
void eat() {
System.out.println("dog : eat");
}
void eatTest() {
this.eat(); // this è°ç¨èªå·±çæ¹æ³
super.eat(); // super è°ç¨ç¶ç±»æ¹æ³
}
}
被final å ³é®å修饰çç±»ä¸è½å¤è¢«ç»§æ¿ 被final å ³é®åä¿®é¥°çæ¹æ³ä¸è½è¢«åç±»éå
éåè ä½äºè¢«éåè çåç±»ä¸ éåè çç¾åå¿ é¡»ä¸è¢«éåè çç¾åç¸å
class Animal {
// 被éåè
void say(String sentence) {
System.out.println("Animal say: " + sentence);
}
}
class Dog extends Animal {
// éåè
// éåè
ä½äºè¢«éåè
çåç±» éåä¸è¬éè¦æ·»å @Override 注解
@Override
void say(String sentence) { // ç¾åä¸è¢«éåè
ç¸å
System.out.println("Dog say: " + sentence);
}
}
éè½½ä½äºåä¸ç±»å é¨ ç¾åå¿ é¡»ä¸å
public class Overloading {
public int test(){
System.out.println("test1");
return 1;
}
public void test(int a) {
System.out.println("test2");
}
//以ä¸ä¸¤ä¸ªåæ°ç±»å顺åºä¸å
public String test(int a,String s){
System.out.println("test3");
return "returntest3";
}
public String test(String s,int a){
System.out.println("test4");
return "returntest4";
}
}
æ½è±¡ç±»ä¸è½è¢«å®ä¾å为对象ï¼å æ¤ï¼æ½è±¡ç±»å¿ é¡»è¢«ç»§æ¿æè½å¤ä½¿ç¨ æ½è±¡ç±»ä½¿ç¨abstract å ³é®åè¿è¡ä¿®é¥°
public abstract class Animal {
String name;
public Animal(String name) {
this.name = name;
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
}
使ç¨abstract å ³é®åä¿®é¥°çæ¹æ³æ¯æ½è±¡æ¹æ³ æ½è±¡æ¹æ³å¿ é¡»å å«å¨æ½è±¡ç±»ä¸ åç±»å¿ é¡»éåç¶ç±»ä¸çæææ½è±¡æ¹æ³ï¼é¤éåç±»ä¹æ¯æ½è±¡ç±»
public abstract class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public abstract void say();
}
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
public void say(){
System.out.println("Dog");
}
}
ä¸ç±»çç»§æ¿ä¸åï¼æ¥å£å¯ä»¥ç»§æ¿å¤ä¸ªæ¥å£
[å¯è§æ§ä¿®é¥°ç¬¦] interface æ¥å£åç§° [extends å
¶ä»æ¥å£åå表] {
// 声æåé
// æ½è±¡æ¹æ³
}
ä¸ä¸ªç±»å¯ä»¥å®ç°å¤ä¸ªæ¥å£ ç±»å¿ é¡»å®ç°æ¥å£çæææ¹æ³ï¼é¤éè¯¥ç±»æ¯æ½è±¡ç±»
public interface Animal {
public void eat();
public void say();
}
public class Dog implements Animal {
public void eat() {
System.out.println("Dog eat something");
}
public void say() {
System.out.println("Dog say something");
}
}
// å®ç°Runnableæ¥å£
public class RunnableThread implements Runnable {
@Override
public void run() {
// todo something
}
}
å®ç°Callableæ¥å£,T æ¿æ¢æå®é ç±»å
public class CallableTask implements Callable<T> {
@Override
public T call() throws Exception {
// todo something
return null;
}
}
ç»§æ¿Thradç±»
public class ExtendsThread extends Thread {
@Override
public void run() {
// todo something
}
}
è¿è¡çº¿ç¨
public static void main(String[] args) throws ExecutionException, InterruptedException {
new Thread(new RunnableThread()).start();
new ExtendsThread().start();
FutureTask<Integer> integerFutureTask = new FutureTask<>(new CallableTask());
integerFutureTask.run();
}
ThreadPoolExecutor threadPoolExecutor
= new ThreadPoolExecutor(
2, 5,
5, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(10),
new DefaultThreadFactory("pollName"),
new ThreadPoolExecutor.CallerRunsPolicy()
);
// å
ç½®ççº¿ç¨æ± , 䏿¨èç产使ç¨
Executors.newCachedThreadPool();
Executors.newFixedThreadPool(10);
Executors.newScheduledThreadPool(10);
Executors.newSingleThreadExecutor();
// 代ç å
synchronized(obj) {
...
}
// å®ä¾æ¹æ³åæ¥
public synchronized void methodName() {
...
}
// éææ¹æ³åæ¥
public static synchronized void methodName() {
...
}
// CountDownLatch
CountDownLatch countDownLatch = new CountDownLatch(2);
new Thread(() -> {
try {
...
}finally {
countDownLatch.countDown();
}
}).start();
countDownLatch.await();
CompletableFuture
CompletableFuture<Void> task1 = CompletableFuture.runAsync(() -> {});
CompletableFuture<Void> task2 = CompletableFuture.runAsync(() -> {});
CompletableFuture<Void> task3 = CompletableFuture.runAsync(() -> {});
CompletableFuture.allOf(task1, task2, task3).get();
Semaphore
Semaphore semaphore = new Semaphore(5);
try {
semaphore.acquire();
} finally {
semaphore.release();
}
ThreadLocal<Integer> threadLocal
= new ThreadLocal<>();
使ç¨å®ä¹åä¸å®è¦è®°å¾ remove, å¦åä¼å
åæ³é²
threadLocal.set(1);
threadLocal.get();
threadLocal.remove();
// éè¦synchronized修饰ç代ç åæè½ä½¿ç¨
wait();
notify();
notifyAll();
// 使ç¨lockçæ¡ä»¶å¤é
ReentrantLock lock = new ReentrantLock();
Condition condition= lock.newCondition();
lock.lock();
try{
// å½å线ç¨å¤éæçå¾
condition.await();
condition.signal();
condition.signalAll();
} finally {
lock.unlock();
}
// LockSupport,å¯ä»¥å
unpark,åç»parkä¸ä¼é»å¡çº¿ç¨
LockSupport.park(obj);
LockSupport.unpark(thread);
| éå | Interface | æåº | å·²æåº | 线ç¨å®å ¨ | å¤å¶ | Nullable |
|---|---|---|---|---|---|---|
| ArrayList | List | Y | N | N | Y | Y |
| Vector | List | Y | N | Y | Y | Y |
| LinkedList | List, Deque | Y | N | N | Y | Y |
| CopyOnWriteArrayList | List | Y | N | Y | Y | Y |
| HashSet | Set | N | N | N | N | One null |
| LinkedHashSet | Set | Y | N | N | N | One null |
| TreeSet | Set | Y | Y | N | N | N |
| CopyOnWriteArraySet | Set | Y | N | Y | N | One null |
| ConcurrentSkipListSet | Set | Y | Y | Y | N | N |
| HashMap | Map | N | N | N | N (key) | One null (key) |
| Hashtable | Map | N | N | Y | N (key) | N (key) |
| LinkedHashMap | Map | Y | N | N | N (key) | One null (key) |
| TreeMap | Map | Y | Y | N | N (key) | N (key) |
| ConcurrentHashMap | Map | N | N | Y | N (key) | N |
| ConcurrentSkipListMap | Map | Y | Y | Y | N (key) | N |
| ArrayDeque | Deque | Y | N | N | Y | N |
| PriorityQueue | Queue | Y | N | N | Y | N |
| ConcurrentLinkedQueue | Queue | Y | N | Y | Y | N |
| ConcurrentLinkedDeque | Deque | Y | N | Y | Y | N |
| ArrayBlockingQueue | Queue | Y | N | Y | Y | N |
| LinkedBlockingDeque | Deque | Y | N | Y | Y | N |
| PriorityBlockingQueue | Queue | Y | N | Y | Y | N |
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);
}
// lambda æå°å
ç´
nums.forEach(
e -> System.out.println(e.toString())
);
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");
// æ£ç´¢
System.out.println(m.get(6));
// Lambda forEach
m.forEach((key, value) -> {
String msg = key + ": " + value;
System.out.println(msg);
});
ConcurrentHashMap<Integer, String> m
= new ConcurrentHashMap<>();
m.put(100, "Hello");
m.put(101, "Geeks");
m.put(102, "Geeks");
// ç§»é¤
m.remove(101, "Geeks");
// 妿ä¸åå¨ï¼å°±æ·»å ï¼åå¨å°±ä¸åæ´
m.putIfAbsent(103, "Hello");
// æ¿æ¢
m.replace(101, "Hello", "For");
System.out.println(m);
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);
}
set.forEach(
e -> System.out.println(e.toString())
);
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());
åèæµ
InputStream åèè¾å
¥æµçæ½è±¡åºç±»FileInputStream 仿件ä¸è¯»ååèçè¾å
¥æµByteArrayInputStream ä»åèæ°ç»ä¸è¯»ååèçè¾å
¥æµOutputStream åèè¾åºæµçæ½è±¡åºç±»FileOutputStream åæä»¶ä¸åå
¥åèçè¾åºæµByteArrayOutputStream å°åèåå
¥å°åèæ°ç»çè¾åºæµå符æµ
Reader å符è¾å
¥æµçæ½è±¡åºç±»FileReader 仿件ä¸è¯»åå符çè¾å
¥æµBufferedReader 带ç¼å²åºçå符è¾å
¥æµInputStreamReader åèæµå°å符æµçæ¡¥æ¥å¨Writer å符è¾åºæµçæ½è±¡åºç±»FileWriter åæä»¶ä¸åå
¥å符çè¾åºæµBufferedWriter 带ç¼å²åºçå符è¾åºæµOutputStreamWriter å符æµå°åèæµçæ¡¥æ¥å¨å¯¹è±¡æµ
ObjectInputStream ä»è¾å
¥æµä¸è¯»åJavaå¯¹è±¡çæµObjectOutputStream å°Java对象åå
¥è¾åºæµçæµç¼å²æµ
BufferedInputStream 带ç¼å²åºçåèè¾å
¥æµBufferedOutputStream 带ç¼å²åºçåèè¾åºæµBufferedReader 带ç¼å²åºçå符è¾å
¥æµBufferedWriter 带ç¼å²åºçå符è¾åºæµæ°æ®æµ
DataInputStream ä»è¾å
¥æµä¸è¯»ååºæ¬æ°æ®ç±»åçæ°æ®DataOutputStream å°åºæ¬æ°æ®ç±»åæ°æ®åå
¥è¾åºæµæä»¶ç±»
File æä»¶åç®å½è·¯å¾åçæ½è±¡è¡¨ç¤ºFileReader 仿件ä¸è¯»åå符çè¾å
¥æµFileWriter åæä»¶ä¸åå
¥å符çè¾åºæµè¾å ¥è¾åºå¼å¸¸å¤ç
IOException Java I/Oæä½ä¸çéç¨å¼å¸¸FileNotFoundException å½è¯å¾æå¼æå®æä»¶å¤±è´¥æ¶æåºEOFException å¨å°è¯è¯»åæµçæ«å°¾æ¶æåºå ¶ä»æµ
PrintStream æå°æ ¼å¼å表示ç对象çè¾åºæµPrintWriter æ ¼å¼åçææ¬è¾åºæµRandomAccessFile éæºè®¿é®æä»¶çç±»ï¼æ¯æè¯»åååå
¥æä½// æä»¶è¾å
¥æµ ï¼æ³¨æï¼éè¦æå¨å
³éæä½¿ç¨ try-with-resourcesï¼
InputStream inputStream
= new FileInputStream("input.txt");
// æä»¶è¾åºæµ ï¼æ³¨æï¼éè¦æå¨å
³éæä½¿ç¨ try-with-resourcesï¼
OutputStream outputStream
= new FileOutputStream("output.txt");
// ç¼å²åèè¾å
¥æµ
InputStream bufferedInputStream
= new BufferedInputStream(inputStream);
// ç¼å²åèè¾åºæµ
OutputStream bufferedOutputStream
= new BufferedOutputStream(outputStream);
// æä»¶å符è¾å
¥æµ
Reader fileReader
= new FileReader("input.txt");
// æä»¶å符è¾åºæµ
Writer fileWriter
= new FileWriter("output.txt");
// ç¼å²å符è¾å
¥æµ
Reader bufferedFileReader
= new BufferedReader(
new FileReader("input.txt")
);
// ç¼å²å符è¾åºæµ
Writer bufferedFileWriter
= new BufferedWriter(
new FileWriter("output.txt")
);
// æ°æ®è¾å
¥æµ
DataInputStream dataInputStream
= new DataInputStream(inputStream);
// æ°æ®è¾åºæµ
DataOutputStream dataOutputStream
= new DataOutputStream(outputStream);
// 对象è¾å
¥æµ
ObjectInputStream objectInputStream
= new ObjectInputStream(inputStream);
// 对象è¾åºæµ
ObjectOutputStream objectOutputStream
= new ObjectOutputStream(outputStream);
åºååå¯¹è±¡å°æä»¶
try (
ObjectOutputStream objectOutputStream
= new ObjectOutputStream(new FileOutputStream("object.dat"))
) {
objectOutputStream.writeObject(object);
}
仿件ååºåå对象
try (
ObjectInputStream objectInputStream
= new ObjectInputStream(new FileInputStream("object.dat"))
) {
Object object = objectInputStream.readObject();
}
æ åè¾å ¥æµ
InputStream standardInputStream
= System.in;
æ åè¾åºæµ
PrintStream standardOutputStream
= System.out;
// 读ååèæ°æ®
int byteData = inputStream.read();
// åå
¥åèæ°æ®
outputStream.write(byteData);
// 读ååç¬¦æ°æ®
int charData = reader.read();
// åå
¥åç¬¦æ°æ®
writer.write(charData);
// å
³éè¾å
¥æµ
inputStream.close();
// å
³éè¾åºæµ
outputStream.close();
ä»éåå建æµ
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> streamFromList = list.stream();
仿°ç»å建æµ
String[] array = {"d", "e", "f"};
Stream<String> streamFromArray = Arrays.stream(array);
å建空æµ
Stream<String> emptyStream = Stream.empty();
å建æ éæµ
Stream<Integer> infiniteStream = Stream.iterate(0, n -> n + 2);
// è¿æ»¤
Stream<String> filteredStream = list.stream().filter(
s -> s.startsWith("a")
);
// æ å°
Stream<Integer> mappedStream = list.stream().map(String::length);
// æåº
Stream<String> sortedStream = list.stream().sorted();
// å»é
Stream<String> distinctStream = list.stream().distinct();
// æªæ
Stream<String> limitedStream = list.stream().limit(2);
// è·³è¿
Stream<String> skippedStream = list.stream().skip(1);
// èåæä½
Optional<String> anyElement = list.stream().findAny();
Optional<String> firstElement = list.stream().findFirst();
long count = list.stream().count();
Optional<String> maxElement = list.stream()
.max(Comparator.naturalOrder());
Optional<String> minElement = list.stream()
.min(Comparator.naturalOrder());
// æ£æ¥å¹é
boolean anyMatch = list.stream().anyMatch(s -> s.contains("a"));
boolean allMatch = list.stream().allMatch(s -> s.length() == 1);
boolean noneMatch = list.stream().noneMatch(s -> s.contains("z"));
// å½çº¦
Optional<String> reducedString = list.stream()
.reduce((s1, s2) -> s1 + s2);
String reducedStringWithIdentity = list.stream()
.reduce("Start:", (s1, s2) -> s1 + s2);
// æ¶é
List<String> collectedList = list.stream()
.collect(Collectors.toList());
Set<String> collectedSet = list.stream()
.collect(Collectors.toSet());
Map<Integer, String> collectedMap = list.stream()
.collect(
Collectors.toMap(String::length, Function.identity())
);
List<String> list = Arrays.asList("a", "b", "c", "d", "e");
List<String> upperCaseList = list.parallelStream()
.map(String::toUpperCase)
.collect(Collectors.toList());
è¿äºæ¯ä½¿ç¨ Java åå°æ¶å¸¸è§çæä½ã使ç¨åå°éè¦æ³¨ææ§è½åå®å ¨æ§é®é¢ï¼å°½éé¿å 卿§è½è¦æ±é«çå°æ¹è¿åº¦ä½¿ç¨ã
// éè¿ç±»åè·åClass对象
Class<?> clazz1 = MyClass.class;
// éè¿å¯¹è±¡è·åClass对象
MyClass obj = new MyClass();
Class<?> clazz2 = obj.getClass();
// éè¿å®æ´ç±»åå符串è·åClass对象
Class<?> clazz3 = Class.forName("com.example.MyClass");
è·åç±»çåç§°
String className = clazz.getName();
è·åç±»ç修饰符
int modifiers = clazz.getModifiers();
è·åç±»çå ä¿¡æ¯
Package pkg = clazz.getPackage();
è·åç±»çç¶ç±»
Class<?> superClass = clazz.getSuperclass();
è·åç±»å®ç°çæ¥å£
Class<?>[] interfaces = clazz.getInterfaces();
// 使ç¨é»è®¤æé 彿°åå»ºå¯¹è±¡ï¼æ³¨æï¼newInstance() å·²åºå¼ï¼
MyClass instance = (MyClass) clazz.getDeclaredConstructor().newInstance();
// 使ç¨å¸¦åæ°çæé 彿°å建对象
Constructor<?> constructor = clazz.getConstructor(String.class, int.class);
MyClass instanceWithArgs = (MyClass) constructor.newInstance("example", 123);
// è·ååæ®µå¼
Field field = clazz.getDeclaredField("fieldName");
field.setAccessible(true); // 妿忮µæ¯ç§æçï¼éè¦è®¾ç½®å¯è®¿é®
Object value = field.get(instance);
// è®¾ç½®åæ®µå¼
field.set(instance, newValue);
// è·åæ³åä¿¡æ¯
Type genericType = field.getGenericType();
// è·åæ¹æ³
Method method = clazz.getDeclaredMethod("methodName", parameterTypes);
method.setAccessible(true); // å¦ææ¹æ³æ¯ç§æçï¼éè¦è®¾ç½®å¯è®¿é®
// è°ç¨æ¹æ³
Object result = method.invoke(instance, args);
// 夿æ¯å¦æ¯æ°ç»ãæä¸¾ã注解ç
boolean isArray = clazz.isArray();
boolean isEnum = clazz.isEnum();
boolean isAnnotation = clazz.isAnnotation();
// è·åæé 彿°ãåæ®µãæ¹æ³ç
Constructor<?>[] constructors = clazz.getConstructors();
Field[] fields = clazz.getDeclaredFields();
Method[] methods = clazz.getDeclaredMethods();
// è·å注解信æ¯
Annotation annotation = field.getAnnotation(MyAnnotation.class);
Java ç Consumer æ¥å£éç accept æ¹æ³æ¥ååæ°ä½ä¸è¿åå¼ãè¦è®©å®æå°ä¼ å
¥çåæ°ï¼å¯ä»¥è¿æ ·åï¼
Consumer<String> test = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
test.accept("test");
æ´ç®åçï¼æä»¬å¯ä»¥ç´æ¥ä¼ å ¥Lambda表达å¼
Consumer<String> test = System.out::println;
æ¹æ³å¼ç¨éè¿æ¹æ³çååæåä¸ä¸ªæ¹æ³ï¼ä½¿è¯è¨æé æ´ç®æ´ï¼åå°åä½ä»£ç ã
Comparator<Integer> comparator = Math::max;
int result = comparator.compare(1, 2);
// è¿å -1
BinaryOperator<Integer> maxOperator = Math::max;
int result = maxOperator.apply(1, 2);
// è¿å 2
String str = "HELLO";
Supplier<String> lowerCaseSupplier = str::toLowerCase;
String lowerCase = lowerCaseSupplier.get();
// è¿å "hello"
Supplier<String> supplier = String::new;
String str = supplier.get();
// è¿åä¸ä¸ªç©ºå符串
Function<Integer, String[]> function = String[]::new;
String[] array = function.apply(5);
// è¿åé¿åº¦ä¸º 5 ç空å符串æ°ç»
String someStr = "HELLO";
Supplier<String> lowerCaseSupplier = someStr::toLowerCase;
String lowerCase = lowerCaseSupplier.get();
// è¿å "hello"
SomeClass someObject = new SomeClass();
Supplier<Integer> methodSupplier = someObject::staticMethod;
int result = methodSupplier.get();
// è°ç¨éææ¹æ³
| 修饰符 | Class | Package | Subclass | World |
|---|---|---|---|---|
| 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";
// å 餿æç©ºæ ¼
text.replaceAll("\\s+", "");
// æåå符串
text.split("\\|");
text.split(Pattern.quote("|"));
æ¥ç: Regex in java
// ææ¯åè¡æ³¨éï¼
/*
èææ¯ä¸ä¸ª
å¤è¡æ³¨éï¼
*/
/**
* è¿ä¸ª
* æ¯
* ææ¡£
* 注é
*/
| æ¹æ³ | 说æ |
|---|---|
Math.max(a,b) | a å b çæå¤§å¼ |
Math.min(a,b) | a å b çæå°å¼ |
Math.abs(a) | a çç»å¯¹å¼ |
Math.sqrt(a) | a çå¹³æ¹æ ¹ |
Math.pow(a,b) | 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) | 弧度转è§åº¦ |
Math.toRadians(deg) | è§åº¦è½¬å¼§åº¦ |
try {
// something
} catch (Exception e) {
// å»ºè®®ä½¿ç¨æ¥å¿æ¡æ¶è®°å½å¼å¸¸
logger.error("åçå¼å¸¸", e);
// æè
è³å°ä½¿ç¨æ åé误æµ
// e.printStackTrace();
} finally {
System.out.println("æ»æ¯æ§è¡");
}
ArrayDeque: å¯è°æ´å¤§å°çæ°ç»å端éåï¼å®ç°äºDequeæ¥å£Arrays: æä¾æä½æ°ç»çéææ¹æ³ï¼å¦æåºãæç´¢ãæ¯è¾çCollections: å
嫿ä½éåæè¿åéåçéææ¹æ³Date: 表示ç¹å®æ¶é´ç¬é´ï¼ç²¾åº¦ä¸ºæ¯«ç§Dictionary: æ½è±¡ç¶ç±»ï¼å¯ç¨äºé®å¼å¯¹æ å°ï¼ä¾å¦HashtableEnumMap: ä¸é¨ç¨äºæä¸¾é®çMapå®ç°EnumSet: ä¸é¨ç¨äºæä¸¾é®çSetå®ç°Formatter: æä¾å¯¹å¸å±ã对é½ãæ°åãåç¬¦ä¸²åæ¥æ/æ¶é´æ°æ®çæ ¼å¼åæ¯æï¼ä»¥åç¹å®äºè¯è¨ç¯å¢çè¾åºSecureRandom: çæå®å
¨çä¼ªéæºæ°æµçå®ä¾UUID: 表示ä¸å¯åçéç¨å¯ä¸æ è¯ç¬¦Vector: å®ç°äºå¯å¢é¿ç对象æ°ç»LocalDate: è¡¨ç¤ºæ æ¶åºçæ¥æï¼ä»
å
å«å¹´ææ¥ï¼ä¸å¯åä¸çº¿ç¨å®å
¨ï¼éç¨äºJava 8åæ´é«çæ¬LocalTime: è¡¨ç¤ºæ æ¶åºçæ¶é´ï¼ä»
å
嫿¶åç§ï¼ä¸å¯åä¸çº¿ç¨å®å
¨ï¼éç¨äºJava 8åæ´é«çæ¬LocalDateTime: è¡¨ç¤ºæ æ¶åºçæ¥ææ¶é´ï¼å
å«å¹´ææ¥æ¶åç§ï¼ä¸å¯åä¸çº¿ç¨å®å
¨ï¼éç¨äºJava 8åæ´é«çæ¬// 计ç®åºç°é¢ç
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(2);
list.add(3);
list.add(3);
list.add(3);
int frequency = Collections
.frequency(list, 2); // frequency = 2
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "123456";
String sql = "SELECT 1 as a, '2' as b";
String preparedSql = "SELECT * FROM t_user WHERE id = ?";
Connection conn = null;
Statement sm = null;
ResultSet rs = null;
try {
// 1.注å驱å¨
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
// 驱卿¾ä¸å°
throw new RuntimeException(e);
}
// 2.建ç«è¿æ¥
try (Connection connection = DriverManager.getConnection(url, user, password)) {
conn = connection;
// 3.å建Statement对象
try (Statement statement = connection.createStatement()) {
sm = statement;
// 4.æ§è¡SQLè¯å¥
try (ResultSet resultSet = statement.executeQuery(sql)) {
rs = resultSet;
// 5.å¤çç»æé
while (resultSet.next()) {
// æç
§åååå¼
System.out.println(resultSet.getLong("a"));
// æç
§ç´¢å¼åå¼
System.out.println(resultSet.getString(2));
}
}
}
// 3.å建PreparedStatement对象
try (PreparedStatement preparedStatement = connection.prepareStatement(preparedSql)) {
sm = preparedStatement;
preparedStatement.setLong(1, 1_000L);
// 4.æ§è¡SQLè¯å¥
try (ResultSet resultSet = preparedStatement.executeQuery()) {
rs = resultSet;
// 5.å¤çç»æé
while (resultSet.next()) {
System.out.println(resultSet.getLong("id"));
System.out.println(resultSet.getString(2));
}
}
}
} catch (SQLException e) {
// æ°æ®åºå¼å¸¸
throw new RuntimeException(e);
} finally {
// 6.å
³éèµæº
// ä¸é¢çtryåéå·²ç»èªå¨å
³éï¼å¦åï¼JDK 7以åï¼æç
§ä»¥ä¸é¡ºåºå
³é
// å
æå¼çåå
³éï¼åæå¼çå
å
³é
if (null != rs) {
try {
rs.close();
} catch (SQLException ignored) {
}
}
if (null != sm) {
try {
sm.close();
} catch (SQLException ignored) {
}
}
if (null != conn) {
try {
conn.close();
} catch (SQLException ignored) {
}
}
// ä¹å¯ä»¥ç´æ¥å·¥å
·ç±»ï¼ 注æé¡ºåº
IOUtils.close(rs);
IOUtils.close(sm);
IOUtils.close(conn);
}
Class.forName("com.mysql.cj.jdbc.Driver");
DriverManager.registerDriver(new org.postgresql.Driver());
// æ¯æå¤ä¸ªåæ¶æ³¨å
System.setProperty("jdbc.drivers", "com.mysql.cj.jdbc.Driver:org.postgresql.Driver");