Java চিট শিট
একটি অনুসন্ধানযোগ্য, প্রিন্টযোগ্য Java রেফারেন্স: টাইপ, স্ট্রিং, কালেকশন, স্ট্রিম, রেকর্ড, প্যাটার্ন ম্যাচিং, concurrency ও ফাইল I/O। বিনামূল্যে।
Basics & types
10var list = new ArrayList<String>();
int x = 42; double d = 3.14;
long big = 9_000_000_000L;
char c = 'A'; boolean ok = true;
final int MAX = 100;
int i = (int) 3.99;
double d = x;
int n = Integer.parseInt("42");
String s = String.valueOf(42);
Integer boxed = 42; int y = boxed;
Strings & text blocks
12s.length(); s.charAt(0);
s.substring(1, 3)
s.contains("x"); s.startsWith("a");
s.replace("a", "b")
s.strip()
s.split(",")
String.join(", ", parts)
"ab".repeat(3)
s.isBlank(); s.isEmpty();
"%s: %d".formatted(key, count)
String html = """\n <p>Hi</p>\n """;
new StringBuilder().append(a).append(b)
Collections
12List<String> l = List.of("a", "b");
Map<String, Integer> m = Map.of("a", 1);
Set<Integer> s = Set.of(1, 2, 3);
new ArrayList<>(List.of("a", "b"))
List.copyOf(list)
map.getOrDefault(key, 0)
map.computeIfAbsent(k, x -> new ArrayList<>())
map.merge(key, 1, Integer::sum)
list.removeIf(s -> s.isBlank())
list.sort(Comparator.naturalOrder())
for (var e : map.entrySet())
list.forEach(System.out::println)
Streams & lambdas
12list.stream().map(String::toUpperCase).toList()
.filter(n -> n > 0)
.sorted(Comparator.comparing(User::name))
.distinct().limit(10).skip(5)
.collect(Collectors.groupingBy(User::city))
.collect(Collectors.joining(", "))
.collect(Collectors.toMap(User::id, u -> u))
.flatMap(List::stream)
.mapToInt(Order::total).sum()
.reduce(0, Integer::sum)
.anyMatch(s -> s.isBlank())
IntStream.range(0, 10)
Records & sealed classes
9record Point(int x, int y) {}
var p = new Point(1, 2); p.x();
equals(), hashCode(), toString()
record Range(int lo, int hi) { Range { if (lo > hi) throw new IllegalArgumentException(); } }
record Point(...) implements Shape {}
static Point origin() { return new Point(0, 0); }
sealed interface Shape permits Circle, Square {}
final class Circle implements Shape {}
non-sealed class Square implements Shape {}
Pattern matching & switch
8if (obj instanceof String s) use(s);
int n = switch (day) { case MON -> 1; default -> 0; };
case MON, TUE -> "early week";
case X -> { ...; yield value; }
case String s when s.length() > 2 ->
case Point(int x, int y) -> x + y;
case null, default -> "none";
switch (shape) { case Circle c -> ... }
OOP essentials
11interface Greeter { default String hi() { return "hi"; } }
class Impl implements A, B {}
class Admin extends User {}
@Override public String toString()
super.method(); super(args);
class Box<T> { T value; }
<T extends Comparable<T>> T max(...)
List<? extends Number> nums
enum Status { ACTIVE, DONE }
abstract class Base { abstract void run(); }
public static User of(String n) { ... }
Optional
10Optional.of(v); Optional.empty();
Optional.ofNullable(maybeNull)
opt.isPresent(); opt.isEmpty();
opt.orElse(defaultValue)
opt.orElseGet(() -> compute())
opt.orElseThrow()
opt.map(User::name).filter(n -> !n.isBlank())
opt.ifPresent(v -> use(v))
opt.ifPresentOrElse(use, this::warn)
opt.get()
Exceptions & try-with-resources
9try { ... } catch (IOException e) { ... }
catch (IOException | SQLException e)
finally { cleanup(); }
try (var in = Files.newBufferedReader(p)) { ... }
throw new IllegalArgumentException("bad id");
class AppException extends RuntimeException {}
RuntimeException vs Exception
e.getMessage(); e.getCause();
Objects.requireNonNull(x, "x is required")
Concurrency
12Thread.startVirtualThread(() -> work());
Executors.newVirtualThreadPerTaskExecutor()
var pool = Executors.newFixedThreadPool(4);
Future<T> f = pool.submit(task); f.get();
CompletableFuture.supplyAsync(() -> fetch())
.thenApply(r -> parse(r))
.thenCombine(other, (a, b) -> a + b)
.exceptionally(e -> fallback)
CompletableFuture.allOf(f1, f2).join();
new AtomicInteger().incrementAndGet()
new ConcurrentHashMap<K, V>()
synchronized (lock) { ... }
I/O & files (java.nio)
12Path p = Path.of("data", "file.txt");
String s = Files.readString(p);
Files.writeString(p, text);
List<String> lines = Files.readAllLines(p);
try (var st = Files.lines(p)) { ... }
Files.exists(p); Files.size(p);
Files.createDirectories(dir);
Files.copy(src, dst); Files.move(src, dst);
Files.deleteIfExists(p);
try (var files = Files.list(dir)) { ... }
Files.walk(dir)
Files.createTempFile("up-", ".tmp")
Build & CLI
12javac Main.java && java Main
java Main.java
java -jar app.jar
java -Xmx512m -jar app.jar
jshell
mvn clean package
mvn test
mvn dependency:tree
./gradlew build
./gradlew test --tests "UserTest"
jar tf app.jar
java --version
“:q”-এর সাথে কোনো এন্ট্রি মেলে না।
Java চিট শিট সম্পর্কে
এই Java চিট শিট আধুনিক Java-কে একটি অনুসন্ধানযোগ্য পৃষ্ঠায় সংকুচিত করে: বেসিক ও টাইপ, স্ট্রিং ও টেক্সট ব্লক, কালেকশন, স্ট্রিম ও ল্যাম্বডা, রেকর্ড ও সিলড ক্লাস, প্যাটার্ন ম্যাচিং ও সুইচ, OOP essentials, Optional, exception ও try-with-resources, concurrency, java.nio দিয়ে ফাইল I/O, এবং বিল্ড ও CLI কমান্ড।
এটি আপনি প্রতিদিন যা লেখেন (একটি List, একটি HashMap, একটি for-each লুপ, একটি try-with-resources ব্লক) উভয়ই এবং Java কীভাবে পড়া হয় তা পরিবর্তন করা নতুন ভাষা ফিচারগুলো, যার মধ্যে রয়েছে রেকর্ড, সিলড টাইপ, প্যাটার্ন ম্যাচিং সহ সুইচ এক্সপ্রেশন এবং টেক্সট ব্লক, উভয়ই কভার করে।
শিটটি বিনামূল্যে এবং ক্লায়েন্ট-সাইড: সার্চ বক্স দিয়ে লাইভ সারি ফিল্টার করুন, স্টিকি সূচিপত্র দিয়ে বিভাগগুলোর মধ্যে লাফ দিন, এক ক্লিকে যেকোনো স্নিপেট কপি করুন এবং আপনার কীবোর্ডের পাশে রেফারেন্সের জন্য পৃষ্ঠাটি প্রিন্ট করুন।
Java চিট শিট কীভাবে ব্যবহার করবেন
- বিভাগগুলো দেখুন, Basics & types এবং Collections থেকে Concurrency হয়ে Build & CLI পর্যন্ত।
- প্রতিটি সারি লাইভ ফিল্টার করতে stream, record বা Optional-এর মতো একটি কীওয়ার্ড অনুসন্ধান করুন।
- আধুনিক সিনট্যাক্স প্রয়োজন হলে Pattern matching & switch বা Streams & lambdas-এ যান।
- Java কোড আপনার ক্লিপবোর্ডে কপি করতে একটি স্নিপেট বা এর কপি আইকনে ক্লিক করুন।
- অফলাইন Java রেফারেন্সের জন্য শিটটি প্রিন্ট করুন।