java关键字与其相关含义

访问控制 

public (公共的:对所有用户都开放),
protected(受保护的):对继承类接口之类的开放

private(私有的):对当前类开放

类、方法和变量修饰符

abstract:声名抽象
    抽象的作用就是将可重复使用的类或方法不明确的类提取出来方便后面重复使用,抽象类的目的就是为了在子类中重写方法。
   被abstract修饰的类叫抽象类,方法叫抽象方法,抽象方法不能有主体即{},抽象类中只能有属性和抽象方法
  抽象类不能被实例化,因为抽象类中的方法未具体化,所以抽象类本身就是一种不完整的类
  抽象方法用extend来继承,继承只能单继承
class:声明这是个类
extends :继承
     被继承的子类叫派生类,父类叫超类
     继承只能单个继承,即一个子类只能有一个父类
     子类继承父类,即使子类为空,也同样可以通过子类去调用父类的方法
      被继承的可以不用必须重写父类方法
     子类实际上是将父类定义的更加的具体化的一种手段。父类表示的范围大,而子类表示的范围小
     在一个子类继承的时候,实际上会继承父类之中的所有操作(属性、方    法),但是需要注意的是,对于所有的非私有(no private)操作属于显式继承(可以直接利用对象操作),而所有的私有操作属于隐式继承(间接完成)。可   通过get和set方法对私有属性进行设置
implements :(实现)接口
    一个类可以实现多个接口,实现接口后必须要重写接口中的方法
interface :创建接口
   创建的接口类中的方法必须是抽象方法,方法的修饰符只能是public
    interface的应用场合  
A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。 
B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。 
C. 需要将一组类视为单一的
native :本地,原生方法(非Java实现)
         有这个方法的原因:java本身运行速度不比c语言无法访问到系统底层,所以就需要使用native关键字去调用.cpp文件
         作用:以java去调用其他编程语言
new:创建(new是个运算符和+-*/一样有优先级)
     通常用来实例化对象(创建对象),通常来说当你创建一个类时,这个类在内存中是不存在的,当使用new这个方法时才能才内存中储存这个类
static:静态
         static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途
     (构造器不是静态方法?)
static的用途
    static变量
  (static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
  static成员变量的初始化顺序按照定义的顺序进行初始化。    )
     static代码块
  (static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
  为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。下面看个例子:

         isBornBoomer是用来这个人是否是1946-1964年出生的,而每次isBornBoomer被调用的时候,都会生成startDate和birthDate两个对象,造成了空间浪费,如果改成这样效率会更好:
  因此,很多时候会将一些只需要进行一次的初始化操作都放在static代码块中进行。
static的误区
      1.java中的static和c语言中的static不同不会改变方法或属性的作用域
      2.static所修饰的方法或属性不能被this所调用
      3.但是在Java中切记: static是不允许用来修饰局部变量。不要问为什么,这是Java语法的规定。
有关static的面试题
strictfp:严格,精准(的意思是FP-strict,也就是说精确浮点的意思)被此方法注明的将严格计算
        你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:
1. 合法的使用关键字strictfp
strictfp interface A {}
public strictfp class FpDemo1 {
    strictfp void f() {}
}
2. 错误的使用方法
interface A {
    strictfp void f();
}
public class FpDemo2 {
    strictfp FpDemo2() {}
}
         一旦使用了关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。
       主要的作用的是确保当程序移植到其他 不同的Java实现或硬件平台, 而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。
     结论
1.strictfp 翻译为“精确的浮点”不够贴切,容易引起误解。
2.strictfp关键字的使用 IEEE754 没有直接因果关系。 IEEE 754 ,是 IEEE 制定的,而不是 J2EE 标准 :)
3.使用 strictfp 关键字的目的,是保证平台移植之后,浮点运算结果是一致的。
synchronized:线程,同步
transient:短暂
  1. 序列化:就是当数据以流的形式进行传输的时候生产的字节码
  2. 反序列化:就是将产生的字节码反向读取
    这个关键字的作用就是当你要对某数据以流的形式进行传输时屏蔽掉被修饰的关键字,只要是非序列化操作则不影响数据的交互
volatile:易失
       大概意思是保持了并发编程中三个特性(原子性,可见性,有序性)中的可见性的保持。
       一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:
  1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
  2)禁止进行指令重排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值