zoukankan      html  css  js  c++  java
  • 【笔记】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;
    

  • 相关阅读:
    mui-手动触发下拉刷新
    Viewer.js 是一款强大的 jQuery 图像浏览插件。
    svn报错Can‘t install ‘*‘ from pristine store, because no checksum is recorded for this file
    KendoUI系列:ComboBox
    KendoUI系列:DropDownList
    简单使用AutoMapper实现DTO转换
    C# List.ForEach 方法
    C# LINQ需求实现演化
    C# yeild使用
    C#委托(delegate)
  • 原文地址:https://www.cnblogs.com/wangzb96/p/java_lang.html
Copyright © 2011-2022 走看看