镰刀

镰锤帮左护法

欢迎来到我的个人博客!


Java基础二(基础语法等)

基础语法

  • 大小写敏感
  • 类名 大写开头 驼峰
  • 方法名 小写开头 驼峰
  • 文件名 与类名一致 大写开头驼峰
  • 主方法入口 public static void mian(String []args) 由mian方法为入口,开始执行

Java 标识符

所有标识符都应该以字母,$,_开始
关键字不能为标识符
大小写敏感

Java 修饰符

访问类的
    public  公共
    private  私有
    protected 保护的
    default 其他
修饰符 状态 当前类 同一包内 子孙类 其他包
public 公共 当前类可访问 同一包可访问 子类可访问 其他包可访问
private 私有 当前类可访问 同一包不可访问 子类不可访问 其他包不可访问
protected 受保护 当前类可访问 同一包可访问 子类可访问 其他包不可访问
default 其他 当前类可访问 同一包可访问 子类不可访问 其他包不可访问

非访问类的

final  

abstract

static

synchronized
  • final:最后的,锁定,防止修改,

    final类不能被继承,没有子类,final类中的方法默认是final的。

    final方法不能被子类所覆盖,一旦定义,子类中不允许出现同名方法,可以被继承。

    final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

package vip.liandao.javabasis.controller;

public class UseFinal {
    private final String a = "cc";
    public final int E;

    public UseFinal(int x) {
        E = x;
    }

    public static void main(String[] args) {
        UseFinal c = new UseFinal(1);
        System.out.println(c.E);

        UseFinal1 u = new UseFinal1(2);
        u.ia("1");
        u.ia(1);
        u.ia();
        ff(3);


        // Non-static field 'a' cannot be referenced from a static context
        // a = "567";
        // final a = "777";
    }

    public static final void ia() {
        System.out.println("iaia");
    }

    // final 方法可以被重写
    public static void ia(String a) {
        System.out.println("string");
    }

    public static void ff(final int i) {
        System.out.println(i);
        // i= 2;
        // Cannot assign a value to final variable 'i'
    }
}

final class info {

}

//class info2 extends info {
//// Cannot inherit from final 'vip.liandao.javabasis.controller.info'
//}

class UseFinal1 extends UseFinal{
//    public static final void ia() {
//        // 'ia()' cannot override 'ia()' in 'vip.liandao.javabasis.controller.UseFinal'; overridden method is final
//    }
    public UseFinal1(int x) {
        super(x);
    }

    public static void ia(int a) {
        System.out.println("int");
    }
}
  • abstract: 抽象的

抽象类和抽象方法

抽象方法不能有方法主体

抽象类不能被实例化,抽象类中方法未具体化

抽象类中不一定包含abstract,可以没有abstract方法

一旦类中包含abstract方法,类必须是abstract类

package vip.liandao.javabasis.controller;

public class UseAbstract {
    public static void main(String[] args) {
        a aa = new a();
        aa.y();
        aa.z();
    }
}

abstract class x {
    abstract void y();

    void z() {
        System.out.println("zz");
    }
}

class a extends x{

    @Override
    void y() {
        System.out.println("yy");
    }

//    void z() {
//        System.out.println("2zz");
//    }
}

  • static

静态变量:

static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。

静态方法:

static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。

  • synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。

  • transient 序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。

该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。

public transient int limit = 55;   // 不会持久化
public int b; // 持久化
  • volatile

volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 一个 volatile 对象引用可能是 null。