Java基础

1、简介

  本文用于记录java中易记混淆的基础知识点。

2、语法

  java标志符:Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中,标识符的构成规则如下。

  • 标识符由数字(0~9)和字母(A~Z 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。
  • 标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。(java标识符可以以$开头)

  

  java关键字:Java 语言目前定义了 51 个关键字,这些关键字不能作为变量名、类名和方法名来使用。以下对这些关键字进行了分类。

  1. 数据类型:boolean、int、long、short、byte、float、double、char、class、interface。
  2. 流程控制:if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。
  3. 修饰符:public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。
  4. 动作:package、import、throw、throws、extends、implements、this、supper、instanceof、new。
  5. 保留字:true、false、null、goto、const。

  提示:由于 Java 区分大小写,因此 public 是关键字,而 Public 则不是关键字。但是为了程序的清晰及可读性,要尽量避免使用关键字的其他形式来命名。

  

  java修饰符:

  a) 权限修饰符:

  

作用域 当前类 同一包内 子孙类 其他包
public
protected ×
default × ×
private × × ×

  private:私有的,可以修饰属性、方法、构造方法,内部类,需要注意的是private不能修饰类本身,因为这会导致其它类访问不到该类,那么该类的存在就没有意义了。

public class PrivateTest {
    // 私有化属性,而对外提供公共的方法
    private int field = 0;
    public int getFiled() {
        return field;
    }

    // 私有方法
    private void privateMethod() {
        System.out.println("我是私有方法,只有本类的方法才能调用我");
    }

    //私有化构造方法,只有本类能实例化,以下为实现单例模式方法之一
    private Test() {}
    private static Test newInstance = new Test();
    public static Test getNewInstance() {
        return newInstance;
    }


    // 私有化内部类,只有本类和内部类可以实例化内部类
    private InnerClass innerClass = new InnerClass();
    private class InnerClass{
        InnerClass innerClass = new InnerClass();
    }
}

       protected:如果一个类中的属性、方法等除了本包中能访问外,还想外包的子类访问,那么就可以用protected修饰,需要注意的是protected不能修饰类本身,(只能用在内部  类)因为protected修饰符是想外包中的子类能够访问,如果protected修饰类的话,那么外包就无法访问到该类,也就没办法继承该类了。

  b) 特征修饰符

  static:static可以修饰类的属性、方法、匿名方法(代码块)和内部类,不能修饰构造方法和类本身,被static修饰属性、方法等不需要在对象初始化之后才能使用,调用它们的方式是使用 类名.属性/类名.方法等来使用它们

  final:

  • final修饰符可以修饰属性、方法、类,不能修饰代码块、构造方法
  • final修饰属性:被final修饰的属性,它的的引用不能改变,即该属性只能被赋值一次,不能重新赋值,但是,如果该属性指向的是一个对象/数组,那么对象/数组本身的属性/值是可以改变的。另外,如果一个属性同时被static和final修饰,那么可以将该属性当做常量看待。

  abstract:

  • abstract 可以修饰类和普通方法,不能修饰构造方法,不能和static、final同时修饰方法
  • abstract修饰类:被abstract修饰的类叫做抽象类,抽象类有构造方法用于被子类继承时使用,但是抽象类本身不能被实例化;抽象类可以有但不必须有抽象方法,但是有抽象方法的类必须是抽象类。
  • abstract修饰方法:被abstract修饰的方法叫做抽象方法,抽象方法只有方法访问权限、返回值、方法名和所需参数,没有具体的实现,方法具体的实现由子类重写。之所以不能和static、final同时修饰方法是因为static修饰的方法在类加载的时候被加载,不需要对象的实例化,而final修饰的方法不能被重写。

  volatile:volatile用于修饰属性,它想表达的意思是该属性需要从原始地址取值,而不是寄存器中获取;

      同时告知编译器不要进行优化。

  transient:transient用作修饰属性,被修饰的属性在对象的序列化时忽略序列化,可以用在一些私密的属性上,使其忽略序列化,比如用户的密码等.序列化时不存储其值。

  native:native用作修饰方法,该方法为本地方法,不是java语言实现的,很多java基础包中的类用到此修饰符,项目开发基本用不到,作为了解即可

  sychronized:多线程环境下使用该关键字可以获取锁对象,可以使用在方法、代码块前

  strictfp:使用严格的计算过程,浮点数计算中间过程必须截断,保证所有环境下计算结果相同。可以修饰类及方法。

修饰符顺序:Java语言规范建议按以下顺序列出修饰符:

  1. Annotations

  2. public

  3. protected

  4. private

  5. abstract

  6. static

  7. final

  8. transient

  9. volatile

  10. synchronized

  11. native

  12. strictfp

  +返回值/类/数据类型 +标识符

原文地址:https://www.cnblogs.com/baldprogrammer/p/13493556.html