Java语法
最近在学习Java,以下记录一些知识点作为笔记。
注释
点击查看详情
// 行注释
// 这是一行注释
// 块注释
/*
这是一块注释
这是一块注释
这是一块注释
*/
// 文档注释
/**
* 这是一个文档注释
* 这是一个文档注释
* 这是一个文档注释
*/
修饰符
点击查看详情
- 访问控制
public
protected
(子类或包内)private
- default (包内)
static
- 静态初始化代码块
- 静态字段
- 静态方法
- 嵌套类
final
- 常量
- 常字段
- 最终方法
- 最终类
abstract
- 抽象方法
- 抽象类
default
- 默认方法
synchronized
- 同步代码块
- 同步方法
volatile
- 共享字段
transient
- 非序列化字段
strictfp
- 严格浮点方法
- 严格浮点类
native
- 原生方法
基本数据类型
点击查看详情
// 布尔
boolean x = false;
boolean[] a = {true};
// 整数
byte x = 0;
short x = 0;
int x = 0;
long x = 0L;
int[] a = {1_2345_6789, 0B0_1111_1111, 0X0_FFFF_FFFF};
// 浮点数
float x = 0.0F;
double x = 0.0;
double[] a = {3.14, 1.0E5, 0X1.0P-5};
// 字符
char x = '\0';
char[] a = {'A', '"', '\s', '\n', '\uFFFF'};
// 字符串
String x = null;
String[] a = {"", "Hello!", """
<html>
<header></header>
<body>
<div>"lalala"</div>
</body>
</html>
"""};
// 引用
Object x = null;
数组
点击查看详情
var a = new int[5];
var a = new int[]{1, 3, 5, 7, 9};
int[] a = {1, 3, 5, 7, 9};
枚举
点击查看详情
enum A{
A0,
A1,
A2,
}
类型转换
点击查看详情
char -> int
byte -> short -> int -> long
float -> double
int ~> float
int -> double
long ~> float
long ~> double
any -> Object
运算符
点击查看详情
// 类型转换
(type)x
// 符号
+x
-x
// 自加、自减
++x
--x
x++
x--
// 算术
x+y
x-y
x*y
x/y
x%y
// 移位
x<<y
x>>y
x>>>y
// 按位
~x
x|y
x&y
x^y
// 比较
x==y
x!=y
x<y
x>y
x<=y
x>=y
// 逻辑
!x
x||y
x&&y
// 条件
c?vt:vf
// 赋值
x = y
// 算术赋值
x += y
x -= y
x *= y
x /= y
x %= y
// 移位赋值
x <<= y
x >>= y
x >>>= y
// 按位赋值
x |= y
x &= y
x ^= y
// 实例
obj instanceof type x
// switch
var r = switch(x){
case k00, k01 -> v0;
case k1 -> v1;
case k2 -> {
s2;
yield v2;
}
default -> v;
};
控制流程
点击查看详情
// if-else
if(c0){
s0;
}else if(c1){
s1;
}else{
s2;
}
// switch
switch(x){
case k00, k01 -> s0;
case k1 -> s1;
case k2 -> {
s2;
};
default -> s;
}
// while
while(c){
s;
}
// do-while
do{
s;
}while(c);
// for
for(sb; c; sa){
s;
}
// foreach
for(x: it){
s;
}
// other
continue;
break;
break label;
return;
return obj;
面向对象
点击查看详情
- 依赖 (uses-a)
- 关联、聚合、组合 (has-a)
- 继承 (is-a)
// 类
class A extends B implements C, D{
}
// 抽象类
abstract class A{
public abstract void m();
}
// 接口
interface A{
void m0();
default void m1(){
s;
}
}
// 嵌套类
class A{
public static class B{
}
}
// 内部类
class A{
public class B{
}
}
// 局部类
class A{
public void m(){
class B{
}
}
}
// 匿名类
interface A{
}
class B{
public void m(){
var x = new A(){
};
}
}
泛型
点击查看详情
// 泛型方法
class A{
public <T> void m(){
s;
}
}
// 泛型类
class A<T>{
}
// 泛型上界
<T extends A>
// 泛型下界
<T super A>
// 泛型通配符
<?>
<? extends A>
<? super A>
函数式
点击查看详情
// 函数式接口
interface A{
void m();
}
// lambda表达式
() -> {
s;
};
// 方法引用
A::m
// 构造器引用
A::new
注解
点击查看详情
- 内置元注解
@Retention
@Target
@Inherited
@Repeatable
@Documented
@Native
- 内置注解
@Override
@Deprecated
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
@interface A{
public int id() default 0;
public String desc() default "";
}
异常处理
点击查看详情
Throwable
Error
(非检查型)Exception
RuntimeException
(非检查型)IOException
(检查型)- ... (检查型)
// 抛出异常
class A{
public void m() throws Exception{
throw new Exception();
}
}
// 捕获异常
// try-catch-finally
try{
s0;
}catch(x){
s1;
}finally{
s2;
}
// try-with-resources
try(rsc){
s0;
}catch(x){
s1;
}finally{
s2;
}
断言
点击查看详情
assert c;
assert c: x;