基础概念语法

基本语法

注释

单行注释

//

多行注释

/*

*/

文档注释

/**

*/

关键字

类别

关键字

说明

访问控制

private

私有的

protected

受保护的

public

公共的

类、方法和变量修饰符

abstract

声明抽象

class

extends

扩充,继承

final

最终值,不可改变的

implements

实现(接口)

interface

接口

native

本地,原生方法(非   Java 实现)

new

新,创建

static

静态

strictfp

严格,精准

synchronized

线程,同步

transient

短暂

volatile

易失

程序控制语句

break

跳出循环

case

定义一个值以供   switch 选择

continue

继续

default

默认

do

运行

else

否则

for

循环

if

如果

instanceof

实例

return

返回

switch

根据值选择执行

while

循环

错误处理

assert

断言表达式是否为真

catch

捕捉异常

finally

有没有异常都执行

throw

抛出一个异常对象

throws

声明一个异常可能被抛出

try

捕获异常

包相关

import

引入

package

基本类型

boolean

布尔型

byte

字节型

char

字符型

double

双精度浮点

float

单精度浮点

int

整型

long

长整型

short

短整型

变量引用

super

父类,超类

this

本类

void

无返回值

保留关键字

goto

是关键字,但不能使用

const

是关键字,但不能使用

null

标识符

在Java里变量名、类名、成员变量名、方法名都是标识符(Identifier)。标识符由字母,数字,下划线,美元符号组成且不能以数字开头。

转义字符

符号

字符含义

\n

换行 (0x0a)

\r

回车 (0x0d)

\f

换页符(0x0c)

\b

退格 (0x08)

\0

空字符 (0x20)

\s

字符串

\t

制表符

\"

双引号

\'

单引号

\\

反斜杠

\ddd

八进制字符   (ddd)

\uxxxx

16进制Unicode字符   (xxxx)

修饰符

修饰符用来定义类、方法或者变量,通常放在语句的最前端。

  • 访问控制修饰符 : default, public , protected, private

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。

default (即缺省值): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

public : 对所有类可见。使用对象:类、接口、变量、方法

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

访问控制

修饰符

当前类

同一包内

子孙类(同一包)

子孙类(不同包)

其他包

public

Y

Y

Y

Y

Y

protected

Y

Y

Y

Y/N(说明

N

default

Y

Y

Y

N

N

private

Y

N

N

N

N

  • 非访问控制修饰符 : final, abstract, static, synchronized

final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

final 方法

类中的 final 方法可以被子类继承,但是不能被子类修改,声明 final 方法的主要目的是防止该方法的内容被修改。

final 类

final 类不能被继承,没有类能够继承 final 类的任何特性。

abstract 修饰符

抽象类:

抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。

一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。

抽象类可以包含抽象方法和非抽象方法。

abstract class Caravan{

   private double price;

   private String model;

   private String year;

   public abstract void goFast(); //抽象方法

   public abstract void changeColor();

}

抽象方法

抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。

抽象方法不能被声明成 final 和 static。

任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。

抽象方法的声明以分号结尾。

public abstract class SuperClass{

    abstract void m(); //抽象方法

}

class SubClass extends SuperClass{

     //实现抽象方法

      void m(){

          .........

      }

}

static 修饰符

  • 静态变量:

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

  • 静态方法:

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

对类变量和方法的访问可以直接使用 classname.variablenameclassname.methodname的方式访问。

package com.ahabest.demo;

public class InstanceCounter {

       private static int numInstances = 0;

       protected static int getCount() {

          return numInstances;

       }

     

       private static void addInstance() {

          numInstances++;

       }

     

       InstanceCounter() {

          InstanceCounter.addInstance();

       }

       public static void main(String[] arguments) {

          System.out.println("Starting with " +

          InstanceCounter.getCount() + " instances");

          for (int i = 0; i < 500; ++i){

             new InstanceCounter();

              }

          System.out.println("Created " +

          InstanceCounter.getCount() + " instances");

       }

    }

 

synchronized 修饰符

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

public synchronized void showDetails(){

.......

}

 

volatile 修饰符

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

public class MyRunnable implements Runnable

{

    private volatile boolean active;

    public void run()

    {

        active = true;

        while (active) // 第一行

        {    // 代码 }

    }

    public void stop()

    {

        active = false; // 第二行

    }

}

通常情况下,在一个线程调用 run() 方法(在 Runnable 开启的线程),在另一个线程调用 stop() 方法。 如果 第一行 中缓冲区的 active 值被使用,那么在 第二行 的 active 值为 false 时循环不会停止。 但是以上代码中我们使用了 volatile 修饰 active,所以该循环会停止。

 

transient 修饰符

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

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

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

public int b; // 持久化

猜你喜欢

转载自www.cnblogs.com/Aha-Best/p/10873428.html