【笔记】Java语法

Java语法

兜兜转转,又绕回到Java了。
最近在学习Java,其实以前也学过,但是技术发展太快了,Java都出到14了。。是时候该更新一下知识体系了。
然后看的是网上好评如潮的《Java核心技术 卷Ⅰ》和《Java编程思想》。
不过,我感觉这两本书都有点长篇大论,比较适合初学者看,不适合复习。。
这两本书看过几页后,如果不做笔记,基本等于看了个寂寞。
然后也因为现在的Java,知识点还挺多的,所以把一些知识点记录下来。
总共分两篇,这篇记录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 = '';

char[] a = {'A', '"', 's', '
', '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;

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注