Java常用关键字

1、final关键字

final关键字可用于修饰类、方法以及变量。

修饰类:该类不能被继承,该类的所有方法和成员都被隐式地指定为final。

修饰方法:锁定方法,任何继承类都不能修改他,所有的private方法都被隐式地指定为final方法。

修饰变量:若修饰的变量为基本数据类型,该变量值被赋值后不可改变;若修饰的变量为引用类型的变量,该变量被初始化后不可再被定义指向另一个对象,但指向的对象的内容是可变的。

2、static变量

“全局”或者“静态”的意思,给类使用而不是给对象使用。

被static修饰的方法或变量,无须依赖对象实例去访问,只要类被加载了就可以通过类名直接去访问。原因:Java程序创建时,在类首次被加载时会优先执行static变量、方法或代码块,并为其分配固定的内存区域,JVM可以直接访问到他们,而不需要依赖某个特定的实例变量,并被类的所有实例共享。

修饰变量:静态变量被所有的对象所共享,在内存中只有一副本,当且仅当类初次加载时被初始化。

修饰方法:静态方法不依赖于任何对象就可以被访问,直接类名.方法名可以直接访问。因此,静态方法中不能访问非静态方法或非静态变量。工具类?

修饰代码块:同理,仅执行一次,提高代码效率。

注:static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变。

3、public/private/protected关键字

public修饰符:任何类都可以访问

private修饰符:访问权限仅限于类内部

protected修饰符:类及其子类或同一个包下的类可以访问

4、finally关键字

finally总是会被执行,正常在try语句后,抛异常在catch语句后,除非前序语句中有System.exit(0)。

finally中return会修改try或catch中return的变量值吗?

返回基本类型是值,返回引用类型是指向某个对象的地址;基础类型被分配在栈中,对象分配在堆中。如果返回的是基本类型,直接复制一个变量返回,finally块中的代码不会影响到返回结果;若返回值是引用类型,finally语句块可以修改其指向对象的值。

5、throw/throws关键字

throw 函数体,用于语句抛出异常,一般会用于程序出现某种逻辑时程序员主动抛出某种特定类型的异常。

throws 函数头,用于方法可能抛出异常的申明,声明方法时跟上throws,交给上层处理抛出的异常。

6、transient关键字

一个对象实现了Serializable接口,该对象就会序列化。若是某些属性不希望被序列化(如密码),可以在该属性前加transient修饰。如此,该字段的生命周期仅存在于调用者的内存中而不会被写到磁盘中持久化。

静态变量不管是否被transient修饰都不会被序列化。

在Java中,对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化,需要在writeExternal方法中进行手工指定所要序列化的变量,这与是否被transient修饰无关。

7、synchronized关键字

synchronized 同步锁,使用锁的机制实现同步。

修饰一个代码块,同步代码块,作用对象是调用这个代码块的对象,指定对象加锁。

修饰一个方法,同步方法,作用对象是调用这个方法的对象,当前实例加锁。

修饰一个静态方法,作用对象是这个类的所有对象,当前类对象加锁。

修饰一个类,作用对象是这个类的所有对象,当前类对象加锁。

两个并发进程访问同一个对象object中的synchronized(this)同步代码时,一个时间内只有一个线程得到执行,另一个线程必须等到该线程执行完该代码块才可以执行。

当一个线程访问一个对象object中的synchronized(this)同步代码时,另一个线程可以访问该object的非同步代码块。

当一个线程访问一个对象object中的synchronized(this)同步代码时,其他线程对该object对象中的其他同步代码块的访问也被阻塞。 对象锁

注:使用该关键字,需要注意是否是对同一个对象加锁,对于静态方法或者是类,该类的所有对象同一把锁。

8、volatile关键字

修饰变量

保证不同线程对于这个变量进行操作时的可见性,即一个线程修改了该变量的值,该新值对于其他线程是立即可见的。如果是写操作,会导致其他CPU中对应的缓存行无效,需要到主存中读取该变量的值。

禁止进行指令重排序。

加入volatile关键字会多一个lock前缀指令,相当于一个内存屏障,可以保证指令重排序不会穿过屏障。

强制将对缓存的修改操作立即写入主存。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容

  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 11,257评论 4 56
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,373评论 8 265
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,623评论 18 399
  • 我 19岁 男 一个曾经碌碌无为,只会幻想的成年人 我曾以为,18岁之后的我,不管做什么事情都会一帆风顺,海...
    坚丶持阅读 284评论 0 0
  • 《影子,是对自己最长情的告白》 ——看《偷影子的人》有感 所有的东西都需要自己去承担,成长中的温情与伤口,失去与得...
    寒凌_6c6a阅读 695评论 0 1