访问权限修饰符

决定了紧跟其后被定义的东西可以被谁访问。
Java里有4种情况:

  1. public 公共的:关键字应用于类、方法、变量的访问控制修饰。
  2. public修饰的类,方法,变量在整个项目的所有类都可以被访问使用。
  3. protected 受保护的:关键字应用于类、方法、变量的访问控制修饰。只有本类和同一包里的其他类还有不同包里的子类可以使用。
  4. default 默认的:关键字应用于类、方法、变量的访问控制修饰。只有本类和同一包里的其他类可以使用,不写的话就是默认的。
  5. private 私有的:关键字应用于类、方法、变量的访问控制修饰。只有本类可以使用,但是需要生成set get 方法才能够被其他的类去调用(赋值和取值)。

注意:如果不使用访问权限修饰符关键字,那就意味着是包访问权限

类、方法、变量修饰符

class 类:用来声明新的Java类库。
类是面向对象的程序设计方法的基本构造单位。
类是对象的模板。每个对象都是类的一个实例。
要使用类,通常使用 new 操作符将类的对象实例化,然后调用类的方法来访问类的功能。

// 声明一个类
public class A{ ... }

new 新的:实例化一个类,创建一个新的对象

String s = new String();

abstract 抽象的:可以修饰类,可以修饰方法

// abstract 修饰类,这个类就是抽象类
public abstract class A {
    // abstract 修饰方法,这个方法就是抽象方法
    public abstract int getAbs();
}

extends 继承:一个类继承另外一个类

public class A{ ... }
// B类 extends A类。A类就是父类,B类就是子类
public class B extends A{ ... }

final 最后的、最终的不可更改的: 可以修饰类、方法、变量

// 被修饰的类不能被继承
public final class A{ ... }
// 被修饰的方法不能被重写,但可以被重载
public final void getFinals(){ ... }
// 被修饰的变量不能被修改,也被成为常量
private final Integer SIX = 10;

interface 接口: 接口是一个特殊的抽象类,接口不能被new,可以被继承

// 接口里的方法只能是抽象方法,属性必须是常量
public interface Test{ ... }
// 接口可以继承,继承多个逗号分隔
public interface A{ ... }
public interface B{ ... }
public interface C extends A,B{ ... }

implements 实现:实现接口

public interface A{ ... }
public interface B{ ... }
// 实现接口要实现接口里的所有方法,可以实现多个接口用逗号分隔
public class C implements A{ ... }
public class C implements A,B{ ... }

static 静态:可以修饰类,方法,变量,代码块
当声明一个事物是static的时候,就意味着这个事物不会与包含它的类的任何对象关联在一起。
也就是说,即使没有创建对象,也能够使用它。
被static修饰的也属于静态数据。
无论创建多少个对象,静态数据都只占用一份存储区域。

// 错误写法。一个普通类是不能被static修饰的
public static class A{ ... }
// 只能修饰一个普通类中的内部类
public class A{
    public static class B{ ... }
}
// 修饰方法,这个方法就是静态方法。
public static void getA(){ ... }
// 修饰变量,静态变量,初始值可有可无
public static int i = 1;
public static int i;
// 修饰代码块,静态代码块,JVM装载类的时候,会执行该静态代码块的方法
static{
    i = 100;
}

Override 重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
即外壳不变,核心重写。
重写的好处在于子类可以根据需要,定义特定于自己的行为。
也就是说子类能够根据自身需要实现父类的方法。
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。
1)子类重写父类的方法(在一个类里面是没有重写的,只能子类重写父类的方法)
2)与访问修饰符无关(访问修饰符最好和父类的一样)
重写三要素
1)返回值必须和父类一样
2)方法名必须和父类一样
3)参数列表(个数,顺序,类型)必须和父类一样

Overload 重载
重载在同一个类,方法名字相同,参数不同,返回类型可以相同也可以不同。
每个重载的方法(或者构造方法)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造方法的重载。
重载规则:
1)被重载的方法必须改变参数列表(参数个数或类型不一样)
2)被重载的方法可以改变返回类型
3)被重载的方法可以改变访问修饰符
4)被重载的方法可以声明新的或更广的检查异常
5)方法能够在同一个类中或者在一个子类中被重载
6)无法以返回值类型作为重载函数的区分标准。
就是说重载发生在同一个类中,与访问修饰符无关,与返回值类型无关,方法名必须一样,参数列表(个数,顺序,类型)必须至少有一个不一样
注意:当参数个数>=两个的时候,类型不能完全一样

transient 瞬变的:修饰变量
用transient声明一个实例变量,当对象存储时,它的值不需要维持。
换句话来说就是,用transient关键字标记的成员变量不参与序列化过程。
【作用】
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。

synchronized 同步的:修饰方法,代码块
解决多线程之间访问资源的同步性。
保证被它修饰的方法或者代码块在任意时刻只能有一个线程访问。

volatile 易变的:修饰变量
多线程中确保每个线程对变量的可见性,所看到的指定变量的值都是相同的。

对于这两个关键字,在并发里会着重讲解。。。

流程控制语句

if…else… 如果,否则

if(){
    ...
}
if(){
    ...
}else{
    ...
}

switch…case… 开关观察,返回结果

switch (1) {
    case 1: 
        ....
        break;
    default: 
        ....
        break;
}

fori 循环语法

for(int i = 0; i < 10; i++){...}

foreach 循环语法

for(DataType i : collection ){
    ...
}

while 循环语法

while(true){....}

do…while 循环语法

do{...}while(false);

break 跳出,中断
用于提前结束 for、while 或 do while循环。
在 switch 语句中用来结束 case 块。
总是退出最深层的 while、for、do 或 switch 语句。

continue 继续
用来跳转到 for、while 或 do while 循环的下一个循环里。
总是跳到最深层 while、for 或 do 语句的下一个循环里。

return 返回
会导致方法返回到调用它的方法,从而传递与返回方法的返回类型匹配的值。
如果方法具有非 void 的返回类型,return 必须具有相同或兼容类型的参数。

default 默认的
用来标记 switch 语句中的默认分支。
break 通常在每个 case 或 default 块的末尾使用,以便在完成块时退出 switch 语句。
如果没有 default ,其参数与任何 case 块都不匹配的 switch 语句将不执行任何操作。
如有用到switch切记写上default,来保证都不满足case之外的情况。

异常关键字

try 捕获异常
catch 处理异常
finally 必定执行的

try{
    ...
}catch{
    ...
}finally{
    ...
}

throw 抛出异常 用于引发异常。
throws 声明异常 应用于方法上。

包关键字
import 导入 用来引入需要的包下资源
package 包 定义包的关键字

基本数据类型
byte 字节型
char 字符型
boolean 布尔型
short 短整型
int 整型
float 浮点型
long 长整型
double 双精度

变量引用
super 父类,超类
用于引用使用该关键字的类的超类。 作为独立语句出现的 super 表示调用超类的构造方法。
super.methodName();表示调用超类的方法。
只有在如下情况中才需要采用这种用法:
要调用在该类中被重写的方法,以便指定应当调用在超类中的该方法。

this 本类
用于引用当前实例。当引用可能不明确时,可以使用 this 关键字来引用当前的实例。

void 无返回值
void 关键字表示 null 类型。
void 可以用作方法的返回类型,以指示该方法不返回值。

都是很常用的关键字,后面会经常用的到这些。
遇到新的关键字,遗漏的也会补充进来…