城市直播房产教育博客汽车
快传网
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

ThinkingInJava读书笔记

5月1日 斩情道投稿
  ThinkingInJava读书笔记
  第1章对象导论
  动态绑定是默认行为,不需要像C那样需要把函数声明为Virtual才可以实现;
  所有的类都继承自单一的基类(Object),因此所有的对象都具有一个通用的接口,从而所有对象都保证具有类型信息,这种机制使垃圾回收器的实现变得容易;
  泛型又称参数化类型,如ArrayListshape,尤其在容器使用中有积极作用;
  总结:一切皆对象,单根继承,全动态内存分配
  第2章一切皆对象
  标识符实际是对象的一个引用,new操作符实现一个对象与引用的关联
  寄存器是最快的存储区,但是Java程序不能直接控制它,不能在程序中感觉到寄存器存在的任何迹象。(CC允许向编译器建议寄存器分配的方式?)
  Java的引用存放在栈上,对象存放在堆上,堆和栈都位于RAM(随机访问存储器)。
  程序中的常量直接放在代码的内部(代码段?),在嵌入式系统常量也可以放在ROM(只读存储器)
  对于是基本类型的简单变量,用new创建对象并不是最有效,所以采用在栈上创建一个非引用的自动变量,直接存储值,其他对象都放在堆上
  所有的数字类型都有正负号,没有无符号数值类型
  BigInteger,BigDecimal没有对应的基本类型
  Javadoc有嵌入式html和标签两种形式
  编码采用驼峰风格,类名首字母大写,标识符第一个字母小写
  第3章操作符
  Java函数参数传递缺省是引用传递而不是c的值传递
  12E13代表12x10负13次方,E并不是数学中的自然对数基数2。718,这是历史语言惯例而已。
  左移低位补0,右移按数的符号,整数高位补0负数则高位补1。新增一种无符号右移,无论正负都在高位插入0
  第4章控制执行流程
  Foreach语法for(floati:f)f是一个浮点数组
  第5章初始化与清理
  重载方法必须有独一无二的参数类型列表。返回值不同是不能用来区分重载,因为调用者可能不关心返回值,那么编译器就无法判断该调用哪个函数
  在构造函数中可以通过this调用另一个构造函数,但是必须放在开头并且只能调一个,第2个调用会编译错误
  Static主要用于表达全局函数,有点不那么面向对象
  Finalize函数用于释放不是用new分配的内存,例如通过C的native方法分配的内存,它不总能保证被调用,只有在垃圾收集决定回收还对象时才会调用。可以用它调用的时机来发现一些很难定位的程序问题。
  垃圾回收一方面回收内存,一方面使堆中的对象紧凑排列。实现原理通常有引用计数法,但是比较慢,对循环引用的对象难以处理。
  另一种是追溯引用法,最终能找到一个活的对象。停止复制就是将所有活的对象复制到另一个堆没有被复制的就是垃圾。如果垃圾少会使用自适应模式(根据效率在停止复制和标记清扫模式之间切换),标记清扫
  这种方式不会整个复制只是把非垃圾标记出来,标记完成后才开始清理。并整理剩下的对象以保持空间连续。早期虚拟机就使用这种机制。垃圾回收时程序会暂停。复制也可以把需要复制的对象拷贝到废弃的块中,块用来帮助做回收。每个块用代数记录块是否存活。大型对象通常会增加代数并不会复制。
  JIT(Justintime)技术用于提升速度,它会把全部或部分程序翻译成本地机器码。这种编译后的代码加载可能会很零散,所以有种惰性评估的方式,在程序执行到的时候才用JIT编译成机器码,这样程序执行的次数越多就越快
  static只能修饰成员变量,不能修饰局部变量,静态初始化只有在必要时才进行。
  显示静态初始化和初始化代码是先与对象构造函数执行,不过静态初始化只执行一次
  第6章访问权限控制
  Importstatic是导入包中的静态函数
  Public修饰class一个文件只能有一个且文件名必须和类名一致,如果不带public则该类只能在包内访问,名字也可以与文件不一样
  第7章复用类
  Override关键字要求修饰的函数的基类一定有相同参数和返回值的函数,否则会编译错误
  是否选择要继承一个类,看你是否有将它向上转型的需求
  Final有点类似const意味着类不可继承,函数不可重载,变量不可改变
  第8章多态
  多态分离做什么和怎么做
  在基类的构造函数中调用多态函数,由于派生类对象并未构造完成,可能导致该多态函数引用的类变量未完全初始化,但是调用final函数是安全的,因为他不能被继承
  向下转型会自动检查类型并抛出异常
  第9章接口
  抽象类是普通类和接口之间的中庸之道,abstract抽象函数等同于纯虚函数,可以只有部分函数是抽象函数
  接口和抽象类都可以有成员变量,但接口的成员变量缺省是static和final的(抽象类反之),接口中的函数和变量默认是public的
  接口只能派生自接口,可以多继承
  class中的私有接口可以被公有嵌套类实现,则该嵌套类只能被自身使用。另外私有接口可以强制接口中的方法不要添加类型信息,也就是不允许向上转型
  设计应该优先选择类而不是接口,只有当接口的需求变得明确时再进行重构
  第10章内部类
  内部类和组合是完全不同的概念,它了解外部类并能与之通信
  内部类能访问外部类的所有成员并拥有所有的访问权(c只能隐藏代码,与外部类没有联系)
  在创建外部类对象前不可能创建内部对象,但静态内部类没有这个限制,需要用外部对象。new内部类来创建内部对象
  匿名内部类是通过创建一个继承自某一个具体类的匿名对象来生成。如returnnewContent(){。};
  如果不想内部类与外界产生关系,可以将类声明为static,又名嵌套类,内部类不能有static数据和字段,但嵌套类可以有所有类型的数据
  Java通过接口和内部类来完成多重继承
  第11章持有对象
  TreeMap按照键的升序保存,LinkedHashMap按照插入的顺序保存
  Iteratorremove会删除next返回的元素,因此需要先调用next再调用remove
  第12章异常
  可以将一个异常的cause放入另一个异常以形成异常链
  Runtimeexception不需要异常说明,由虚拟机自动抛出。但代码可以抛出运行时异常
  finally用于将资源恢复到初始状态
  抛出异常的finally中再抛出一个新的异常会导致老的异常被覆盖。前一个异常没处理就抛出新的异常是不好的习惯。
  在finally返回会安静的丢掉该异常
  第13章字符串
  System。out。formatprintf等价并与C的使用方式相同
  String的正则表达式
  第14章类型信息
  使用RTTI可以从多态的基类引用中查询到该引用指向的对象具体类型,Java使用Class对象来执行RTTI。可以通过forName,getInterfaces,getSuperClass来获取
  运行时的类型信息由Class对象来表示
  可以通过类字面变量来获取对象,如:FancyToy。class
  第16章泛型
  Java的泛型是后支持的,采用了类型擦出的方式,不如C支持得彻底
  第17章容器深入研究
  只有在需要容器元素是有序的时候才使用treesettreemap
  Collection有大量工具函数帮助操作容器
  第二十一章并发
  Thread。yield让系统切换线程
  Excutor用来管理线程的生命周期,用线程池赋值
  Runnable是独立执行的工作任务,不返回值。如果要返回值需要用Callable
  后台线程必须在线程启动之前将其设为Daemon
  对于同一个对象,所有的synchronized方法共享同一把锁,针对每个类也有一个锁,所以synchronizedstatic方法可以防止对static数据的并发访问
  原子操作是不能被线程上下文切换所打断,java中long和double不是原子的,因为会发生字撕裂,如果用volatile就可以是其成为原子的。
  可视性问题是指在多处理器系统中一个线程修改了数据只会保存在本地处理器的缓存中,因此不同的任务会有不同的视图。volatile解决了可视性问题,当对其变量操作时,其结果一定会写入主存,及时他被缓存在本地处理器缓存,读操作都会从主存中读取。
  易变性(可视性)和原子性是两个不同的概念,如果一个域由synchronized保护,那么他不用声明为volatile。synchronized是在某一对象上同步,通常是类的this,如果在不同的对象上同步则不会互相互斥。
  临界区也称同步控制块
  中断线程Cancel不能中断IO操作或者Synchronize锁
  调用sleep和yield时并没有释放锁,但是调用wait时对象锁是释放了的。
  CopyOnWrite是指写入时将数据赋值一份修改,原值还可以被其他线程读取,然后通过一个原子操作将复制的数据整个修改保证一致性
  CountDownLatch和CycleBarrier都是栅栏的语义,一个线程在这个对象上阻塞,其他线程如果完成某项任务就减小1,当这个一个数值减到0阻塞的线程才能继续运行。CycleBarrier可以重置这个值,而CountDownLatch却是一次性的。
投诉 评论 转载

ThinkingInJava读书笔记ThinkingInJava读书笔记第1章对象导论动态绑定是默认行为,不需要像C那样需要把函数声明为Virtual才可以实现;所有的类都继承自单一的基类(Ob……二手相机主要用来日常拍照和游玩拍照。预算2000左右。最好全买二手尼康D700机身,配个老头2885带微距或24852。8,拍照和出作品没问题。二千元,想玩相机,还全幅的,别做梦了。玩手机都拿不下来,美元差不多。5D2绝对能……千元机的评测太少导致不知如何选?这四款机型完全可以盲选如果你仔细翻一翻关于智能手机的新闻报道和分析文章,就会发现大部分作者和读者的关注点都集中在高端旗舰机型上。毕竟旗舰手机有最新的技术、最强的配置和最高的颜值,成为外界关注的焦点也……关于南京,你印象最深的是什么?去南京出差去过两次,整体感觉城市文化底蕴很厚,城市整体的生活节奏比较慢。城市文化底蕴很厚南京作为古都,有很多古城墙;作为当时国民党的临时中央政府,有很多的国民时期建筑,还……iPhone132022年03月20日新消息iPhone13iPhone132022年03月20日新消息绿色系iPhone13:操作流畅配色时尚且辨识度高美版黑解iPhone13开箱价格便宜……2022年1月安卓手机性能排行出炉前三均破百万!小米12仅排随着除夕的过去,2022年的第一个月也正式结束,而安兔兔也抢先发布了2022年1月份最新的安卓手机性能排行榜。和2021年12月份也就是去年最后一个月的排行榜不同,搭载骁龙88……鸿蒙OS系统捷报频传,华为公司接连改口,行业巨头开始有了新动距离华为公司遭遇限制已经过去了接近一年的时间,在一年前传出华为公司即将被限制的消息之后,不少人甚至都感觉华为手机可能要退出市场了,因为当时华为公司遭遇了两重限制,不仅仅没有5G……印度税务部门突然搜查小米OPPO一加富士康等多家企业IT之家12月24日消息,据环球时报援引印度《商业标准报》报道,印度财政部税收局近期在对全印手机制造商和分销商的一次重大打击行动中,对来自大中华区的手机制造商小米、OPPO、一……走进全球唯一刀片电池生产基地今年3月,电动汽车制造商比亚迪公司推出的刀片电池引发全球新能源车的动力电池路线之争。这种革命性电池能否改变未来新能源车的发展方向?记者近日走进了它的生产基地。位于重庆璧山……互联网打工人的副业与B面生活作者:乔雪不要把鸡蛋放在同一个筐子里,这是最简单的投资建议。但很少有人觉得,人生也是一门投资学,当把生活的全部都寄希望某一份工作时,才发觉不幸的根源就在于此。互联网……买的冰箱被当广告牌,官方回应把网友气炸了可能你对手机广告已经习惯了,毕竟在现如今的互联网时代,手机系统中内置商业广告已经成为行业惯例。今年初,魅族18系列推出了三零手机这一概念,并且号召其他手机厂商跟进。……苹果的王炸芯片来了?苹果芯片横空出世,英特尔要颤抖了吗?苹果芯片根据中国财富网的报道,北京时间10月19日凌晨,苹果秋季第二场新品发布会如约而至。果粉们没有失望。搭载M1Pro或M1Max芯片的新一代MacBookPro、全新的无线……
如何使用filter过滤器对入参进行处理(完整版)两三分钟一集,收费一元起!刷抖音快手也要付费了?这份Redis使用规范,拿走不谢明珠货运与极兔签署物流合作协议工业智能网关是做什么的及典型应用场景?今日区块链资讯曝硬件可圈可点小米12Ultra,小米11彻底失宠,降到冰点DAMA第一章数据管理员工发生工伤,公司应当承担哪些费用?自动驾驶汽车还需要驾照吗让飞羽触手可及佳能RF800mmF5。6LISUSM2021诺贝尔化学奖揭晓,欧盟将指控苹果NFC垄断
码头有配备残疾人专用电梯吗越女词其二全文翻译与赏析(李白)典韦的铁戟重多少斤,典韦的武器是什么?【歌词】三恨歌手:葛笑热博聚热点网 夫妻之间爱情失色怎么办哪些事情需要老婆体谅老公的孝道小学生作文500字五篇大润发的3款尴尬零食,输给了包装,却赢在了口感上手影游戏日本十大美食大比拼,你知道几个?全球第92个取消所有COVID19旅行限制的国家地区北京爱菲雅婚纱摄影教大家不休的乌拉拉卡牌选择攻略

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁