本人之前一直从事iOS开发,最近开始接触Eclipse插件开发,打算先重拾一下扔了很久的Java。看到大家都在网上推荐李刚的《疯狂JAVA讲义》,于是下了一本开始学习。以下为前七章本人记录的一些要点和体会:

Java概述
1.一个Java源文件可以包含多个类定义,但最多只能包含一个public类定义;如果Java源文件里包含public类定义,则该源文件的类名必须与这个public类的类名相同。
2.可以通过调用对象的finalize()方法或System.gc()等方法来建议系统进行垃圾回收;对于不再使用的对象,不要再引用它们,通过将引用变量设置为null
数据类型和运算符
3.使用巨大的整数常量(超出int范围)时,应在常量后增加l或L作为后缀
流程控制和数组
4.定义数组时不能指定数组长度
5.Java二维数组的实质还是一维数组,数组元素里保存的引用指向一维数组
面向对象(上)
6.Java里方法的参数传递方式只有一种,将实际参数值的副本传入方法中
7.长度可变的形参只能处于形参列表的最后。一个方法中最多只能包括一个长度可变的形参。调用包含一个可变长度形参的方法时,这个长度可变的形参既可以传入多个参数,也可以传入一个数组。
8.Java支持方法重载,要求同一个类中方法名相同,参数列表不同。治愈方法的其他部分,如方法返回值类型、修饰符等,与方法重载没有任何关系
9.成员变量位于堆内存,无须显示初始化,局部变量除了形参之外,位于栈内存,都需要显示初始化。栈内存中的变量无须系统垃圾回收,栈内存中的变量往往是随方法或代码块运行完成而结束。
10.
访问控制级别表
private
default
protected
public
同一个类中
同一个包中
子类中
全局范围内

11.不管是否使用super调用来执行父类构造器的初始化代码,子类构造器总会调用父类的构造器一次

12.可以声明不同类型,但变量名相同的实例变量来覆盖父类的实例变量
13.通过引用变量来访问其所包含的实例时,系统总是试图访问它编译时类所定义的属性,而不是它运行时类所定义的属性
14.继承带来了高度复用的同时,也严重地破坏了父类的封装性。在继承关系中,子类可以直接访问父类的属性和方法,从而造成子类和父类的严重耦合
初始化块
15.初始化块是Java类里可出现的第四种成员(前面依次有属性、方法和构造器),一个类里可以有多个初始化块,相同类型的初始化块之间按定义的先后顺序执行。初始化块只在创建Java对象时隐式执行,而且在执行构造器之前执行
16.普通初始化块、声明实例属性指定的默认值都可认为是对象的初始化代码,它们的执行顺序与源程序中排列顺序相同
17.当Java创建一个对象时,系统先为该对象的所有实例属性分配内存(前提是该类已经被加载过了),接着程序开始对这些实例属性执行初始化,其初始化顺序是:先执行初始化块或声明属性时指定的初始值,再执行构造器里指定的初始值
18.如果有一段初始化代码对所有对象完全相同,且无须接受任何参数,就可以把这段初始化处理代码提取到初始化块中
19.创建一个Java对象时,系统会先执行父类的初始化块和构造器,再执行该类的普通初始化块和构造器
20.静态初始化块是类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行。只有当类初始化完成之后,才可以在系统中使用这个类,包括访问这个类的类方法、类属性,或者用这个类来创建实例
面向对象(下)
21.JDK提供了自动拆箱和自动装箱,大大简化了基本类型变量和包装类对象之间的转换过程。
22.null对象可以访问它所属类的成员
23.单例模式需要将构造器声明为private,同时提供一个public方法作为访问点
24.final修饰变量时,表示该变量一旦获得了初始值之后就不可能被改变
25.final修饰成员变量,如果既没有在定义成员变量时指定初始值,也没有在初始化块、构造器中为成员变量指定初始值,那么这些成员变量的值将一直是0、'\u0000'、false或null
26.final修饰方法不可被重写(可以被重载),如果出于某些原因,不希望子类重写父类的某个方法,则可以使用final修饰该方法
27.对于一个private方法,因为它仅在当前类中可见,其子类无法访问该方法,所以子类无法重写该方法——如果子类中定义一个与父类private方法有相同方法名、相同形参列表、相同返回值类型的方法,也不是方法重写,只是重新定义了一个新方法。因此,即使使用final修饰一个private访问权限的方法,依然可以在其子类中定义与该方法具有相同方法名、相同形参列表、相同返回值类型的方法。
28.final修饰的类不可有子类
29.当abstract修饰类时,表明这个类只能被继承,当abstract修饰方法时,表明这个方法必须由子类提供实现。而final修饰的类不能被继承,final修饰的方法不能被重写。因此final和abstract永远不能同时使用。
30.abstract不能用于修饰属性,不能用于修饰局部变量;也不能用于修饰构造器
31.abstract不能和static、private同时使用
32.接口定义的是多个类共同的公共行为规范,因此接口里所有成员都是public访问权限
33.在接口中定义属性时,不管是否使用public、static和final修饰符,接口里的属性总将使用这三个修饰符来修饰。而且,接口里没有构造器和初始化块,因此接口里定义的属性只能在定义时指定默认值。
34.接口里的方法总是使用public abstract来修饰
35.实现接口方法时,必须使用public访问控制修饰符
36.内部类作用:1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类;2.内部类成员可以直接访问外部类的私有数据;3.匿名内部类适合用于创建那些仅需要一次使用的类
37.如果外部类属性、内部类属性与内部类里方法的局部变量同名,则可通过使用this、外部类类名.this作为限定来区分
38.非静态内部类里不能有静态方法、静态属性、静态初始化块
39.Java允许在接口里定义静态内部类和内部接口
40.内部类如果使用private来修饰只能在外部类内部使用,使用public可以在任何地方访问
41.非静态内部类的构造器必须使用外部类对象来调用
42.局部内部类在方法中定义,仅在该方法里有效,无需使用访问控制符和static修饰符
43.匿名内部类适合创建那种只需要使用一次的类,创建匿名内部类时系统会立即创建一个该类的实例,这个类定义立即消失,不能重复使用。
44.匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口
45.匿名内部类不能是抽象类;不能定义构造器
46.如果匿名内部类需要访问外部类的局部变量,则必须使用final修饰符来修饰外部类的局部变量

《疯狂JAVA讲义》学习笔记(一)相关推荐

  1. 【web编程技术学习笔记】因特网与万维网简介

    目录 Client客户端 Server服务器端 TCP/IP五层协议 IP 查看IP地址的的两种方法 TCP URL 样式一 样式二 DNS URL&DNS HTTP 与因特网有关的组织 IE ...

  2. 程序员编程技术学习笔记

    程序员编程技术学习笔记     看july的博客也有好久了,一直没能好好整理一下自己的学习笔记,开了博客之后更加愿意好好整理一番了.其中不免有些内容在july那里可以找到原文,但是更多的加入了我个人的 ...

  3. JAVA 网络编程技术学习笔记

    目录 一.网络编程基本概念(了解) 1.1 计算机网络 1.2 网络通信协议 1.2.1什么是网络通信协议 1.2.2 OSI七层协议模型 1.2.3网络协议的分层 1.3数据的封装和解封 1.4 I ...

  4. 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续

    目录 ASP.NET WEB API的出现缘由 ASP.NET WEB API的强大功能 ASP.NET WEB API的出现缘由 随着UI AJAX 请求适量的增加,ASP.NET MVC基于Jso ...

  5. java网络编程技术学习笔记(b站【狂神说Java】网络编程实战讲解)

    b站视频链接:[狂神说Java]网络编程实战讲解 文章目录 网络编程 1.1.概述 1.2.网络通信的要素 1.3.IP 1.4.端口 1.5.通信协议 1.6.TCP 文件发送 1.7.UDP 1. ...

  6. SpringBoot整合第三方技术学习笔记(自用)

    SpringBoot整合第三方技术学习笔记 搬运黑马视频配套笔记 KF-4.数据层解决方案 KF-4-1.SQL 回忆一下之前做SSMP整合的时候数据层解决方案涉及到了哪些技术?MySQL数据库与My ...

  7. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  8. ssm 转发请求_千呼万唤!阿里内部终于把这份SSM框架技术学习笔记分享出来了...

    SSM SSM(Spring+SpringMVC+MyBatis)框架集由Spring.MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容).常作为数据源较简单的web项 ...

  9. 【C#编程基础学习笔记】6---变量的命名

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...

  10. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

最新文章

  1. 14 岁发现 Bug 兼职游戏开发、拒绝过乔布斯,Dropbox 创始人成为科技创业者的偶像...
  2. 如何使用PXE 安装 Windows XP +PXE安装XP
  3. 华为高密UA5000升级
  4. mfc清空数组_MFC数组的使用
  5. 不开玩笑:请远离那些吃老本的同事
  6. 不停应用重启oracle数据库,此类情况下解决Oracle数据库重启的四种方案
  7. Matlab中求数据概率分布的方法
  8. C 语言这么厉害,它自身是用什么语言写的?
  9. 某车企笔试题解答(1)
  10. Python 多种音乐格式批量转换实战教程
  11. HTML美化页面(下)
  12. iOS 项目中添加字体库
  13. 微信小程序_(2022)微信小程序开发者后台管理登录/开发成员管理/开发设置中设置(云)服务器/数据拉取权限配置/appID查看/邮箱修改
  14. 大白菜u盘装win10步骤图解
  15. 业务流程优化设计之思想和原则
  16. zsh:command not found:conda的解决方法
  17. 盘点国内MCU级RISC-V内核IP厂商
  18. python抓取图片数字_python 实现识别图片上的数字
  19. 强化学习使用gym时出现错误:ValueError: too many values to unpack (expected 4)
  20. 提取16线激光雷达扫描线

热门文章

  1. 读书笔记——数学之美
  2. flash制作swf播放器
  3. learn words by steps 13 英语单词
  4. Hadoop(三)读写流程
  5. 迷宫问题 深度优先搜索 广度优先搜索 宽度优先搜索【python】
  6. saltstack自动化运维部署--安装apache\原码安装nginx服务
  7. java插件已崩溃怎么处理_为什么使用插件就崩溃?
  8. 和用户一起做设计的时代
  9. [Nginx] – 安全优化 – 配置文件优化
  10. 使用HTML5/CSS3五步快速制作便签贴特效