组合语法 将对象引用置于新类中,即形成类的组合. 引用初始化方法 在定义处初始化. 在类的构造器中初始化. 在使用这些对象之前,进行"惰性初始化". 使用实例初始化. 继承语法 Java中所有的类都是在继承,如果没有明确指出继承的类,则就从根类Object中继承. 每个类中都可以有main方法,可以方便单元测试. 即使一个类只具有包访问权限,其public main()仍然是可以访问的. 继承是对类的复用,可以获得所继承的类中的非私有的方法. 采用super关键字可以访问父类(超类)中…
用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认调用的是无参构造方法. 构造器没有返回值,与返回值为空(void)不同. 方法重载 方法名相同,形式参数不同的方法为重载方法. 每个重载的方法都必须有一个独一无二的参数类型列表. 参数顺序的不同也可以实现重载,但会使得程序难以维护. 如果传入的实际参数大于重载方法声明的形式参数,就必须通过类型转换来执行窄化转…
包:库单元 包内包含有一组类,他们在单一的名字空间下被组织在一起. 通过import ***.***.*可以将某个包下的所有类导入到当前文件中. 每个Java源文件最多只能有一个public类,且名称必须与文件名相同.源文件中的其他类在包外事不可见的,主要用来为public类提供支持. Java的可运行程序是一组可以打包并压缩为一个Java文档文件(jar)的.class文件. package 和import可以将单一的全局名字空间分割开,使得无论多少人使用Java编写类,都不会出现名称冲突问题…
true和false Java不允许将数字作为布尔值使用. 所有条件表达式都将布尔值作为判断条件,决定执行路径. if-lese 迭代 while,do-while,for为三个迭代语句. ,逗号操作符仅会用在for循环的控制表达式当中. 使用逗号操作符可以在for循环控制表达式中定义多个变量,但必须具有相同的类型. Foreach语法 for(float x : f)其中f代表一个装有浮点元素的数组,将每一个元素赋值给x. 用于访问数组和容器,不需要创建变量进行计数. return语句 指定一…
更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型",但是=,==,!=例外 String类支持+和+=.+的作用是将字符串拼接,同时若需要进行类型转换时,会将非String类转换成String类. 优先级 先乘除后加减 其余处应使用括号明确指出优先级. 赋值 =为赋值操作符. 左值必须是一个明确的,已命名的变量,用来保证有一个物理空间能保存右值. 右值…
用引用操纵对象 Java里一切都被视为对象,通过操纵对象的一个"引用"来操纵对象. 例如, 可以将遥控器视为引用,电视机视为对象. 创建一个引用,不一定需要有一个对象与之关联,但此时使用该引用会出错. 遥控器可以独立存在,但是没有电视机,使用遥控器没有意义. 必须由你创建所有对象 存储数据或代码的地方 寄存器:位于CPU内部,速度最快.JAVA语言无法直接控制寄存器. 堆栈:位于DRAM中,通过栈顶指针来辨别内存是否被使用.创建程序时,JAVA系统必须知道存储在堆栈内所有项的确切生命周…
抽象类和抽象方法 abstract void f();抽象方法是仅有声明而没有方法体的方法. 包含抽象方法的类叫做抽象类,如果一个类包含了一个抽象方法,则该类必须限定为抽象类. 抽象类和抽象方法可以使类的抽象性更加明确. 继承抽象类的类,在运行时不需要 向下转型. 接口 interface关键字用于产生一个完全抽象的类.其中不存在任何提供具体实现的方法. 可以在interface前面添加public,但这仅当接口名与文件名相同时才可以. 接口可以包含域,但他们是隐式定义为static和final…
再论向上转型 在某些方法中,仅接收基类作为参数,而不是特殊的导出类,会使得程序更容易扩展. 转机 方法调用绑定 前期绑定(编译期绑定):在编译期将一个方法调用和方法主体关联起来. 后期绑定(动态绑定或运行时绑定):在程序运行阶段,判断对象类型,将方法调用与方法主体绑定. Java中除static方法和final方法外,其他所有的方法都是后期绑定. 只有非private的方法才可以被覆盖:与private重名的方法,是一个全新的方法. 只有普通的方法调用时多态的.如果访问某个成员变量,则在编译期就…
第七章 复用类 第一种方法非常直观:只需在新的类中产生现有类的对象(组合). 第二种方法更细致一些:它按照现有类的类型来创建新类(继承). 7.1 组合语法   只需将对象引用置于新类中即可. class A{} class B{ A a = new A(); }   如果想初始化这些引用,可在下列位置进行: 在定义对象的地方. 在类的构造器中. 在真正使用这些对象之前,惰性初始化. 使用实例初始化. 7.2 继承语法 当创建一个类时,总是在继承.   在继承过程中,需要先声明"新类与旧类相似&…
第七章 虚拟机类加载机制 1.类加载的时机 虚拟机的类加载机制: 虚拟机把描述类的数据从class文件中加载到内存,并对数据进行校验.转换解析和初始化,最终形成了可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 类从被加载到虚拟机内存中开始到卸载出内存为止,他的整个生命周期包括加载.验证.准备.解析.初始化.使用和卸载七个阶段. 加载.验证.准备.初始化和卸载这5个阶段的顺序是确定的,类加载过程必须按照这种顺序按部就班的开始.而解析阶段不一定在某种情况下,可以在初始化阶段之后再开始…
第7章 多形性 上溯造型:将一个对象作为它自己的类型使用,或者作为它的基础类型的一个对象使用.取得一个对象句柄,并将其作为基础类型句柄使用. 方法调用的绑定:将一个方法调用同一个方法主体连接到一起就称为“绑定”(Binding).若在程序运行以前执行绑定(由编译器和链接程序,如果有的话),就叫作“早期绑定”.大家以前或许从未听说过这个术语,因为它在任何程序化语言里都是不可能的.C 编译器只有一种方法调用,那就是“早期绑定”. 后期绑定(动态绑定.运行期绑定):绑定在运行期间进行,以对象的类型为基…
第七章 链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储器并执行. 2.链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时:甚至执行于运行时,由应用程序来执行.在早期的计算机系统中,链接是手动执行的.在现代系统中,链接是由叫链接器的自动执行的. 3.那么为什么还要这么麻烦地学习关于链接的知识呢? 理解链接器将帮助构造大型程序 理解链接器将帮助避免一些危险的编程错误 理解链…
课后习题 选择题 3 题 代码: class Some{ String ToString(){ return "Some instance"; } } public class Main { public static void main(String[] args) { Some some=new Some(); System.out.println(some); } } 截屏结果为: 因class Some里并没有构造函数,所以系统自动为其加了个无参数无内容的构造函数,对于 som…
1.组合 将其他类的对象引用置于新的类中. 3.继承 extends 从已知的一个类中派生出新的一个类,叫子类.子类实现了父类所有 非私有化 非静态 的属性和方法,并能根据自己的实际需求扩展出新的行为. 继承在内存中其实是先复制一个父类然后添加自己的字段方法. 子类中调用继承下来的方法也不需要基类对象引用.继承相当于对基类的一个扩展,因为基类有的它都有,再额外添加了一些域和方法(或覆写方法)而已. 子类不能直接访问父类的private字段方法.但是,如果子类继承了访问父类私有字段的公共或受保护方…
7.1组合语法 在一个类中引入多个对象,以提高代码的复用性与功能. 7.2继承语法 使用继承子类可以获得,导出类可以获得基类的成员(变量与方法). 注:这里注意权限控制,若基类中的成员为默认权限,只有在同一包下才能继承得到.protect修饰时,导出类可以获取.public修饰时,任何类都可以拿到.private修饰就属于基类自己的东西了. 为了解决导出类中调用父类同名方法出现递归问题,java提出了super关键字解决这个问题. 在继承体系中,初始化都是由内向外的,即由基类到导出类扩散的,即先…
1.类的成员默认的是包访问权限.允许包内成员访问 2.super.scrub() 调用基类的scrub方法 3.继承并不是复制基类的接口.当创建了一个导出类(子类)对象时,该对象包含了一个基类的子对象.这个子对象与你直接用基类创建的对象是一样的.区别在于后再来自外部.而基类的子对象呗包装在导出类的对象内部. 4.调用基类构造器是在导出类构造器里要做的第一件事. 5.@override注解可以防止你在不想重载时而意外地进行了重载. 6.组合(对象成员为类)和继承都允许在新的类中放置子对象.组合是显…
目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 概要 1. 数据报基本知识 2. 服务器端和客户端程序实例 1. 数据报基本知识 之前套接字中例子使用的都是“传输控制协议”(TCP),亦称作“基于数据流的套接字”.根据该协议的设计宗旨,它具有高度的可靠性,而且能保证数据顺利抵达目的地.换言之,它允许重传那些由于各种原因半路“走失”的数据.而且收到字节的顺序与它们发出来时是一样…
head first java读书笔记 1. 基本信息 页数:689 阅读起止日期:20170104-20170215 2. 标签 Java入门 3. 价值 8分 4. 主题 使用面向对象的思路介绍Java的基础知识,从对象的基本概念.变量.方法,到函数库,集成与多态,静态,再到GUI,序列化,网络,数据结构,最后介绍发布和远程调用. 5. 纲要 Java的基本介绍-第1章 对象的基本介绍(变量与方法)-第2-5章 函数库-第6章 对象的深入-继承.多态.构造函数-第7-9章 静态的变量或方法-…
目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 概要 1. 套接字基本知识 2. 交互过程 3. 一个简单的服务器和客户机程序 4. 服务多个客户 有关套接字的详细介绍,可以看下<think in java>15.2章节. 1. 套接字基本知识 “套接字”或者“插座”(Socket)也是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”.针对一个特定的连接,每台机器上…
目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 在Think in Java中有这么一段话“对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int.只有右侧的5个低位才会有用.这样可防止我们在一个int数里移动不切实际的位数.若对一个long值进行处理,最后得到的结果也是long.此时只会用到右侧的6个低位,防止移动超过long值里现成…
Thinking In Java读书笔记--对象导论[对象]服务提供者==>将对象看做一个服务提供者[程序员分类][类创造者]/[客户端程序员] [访问控制存在的原因?][1]客户端程序员无法触及他们不该触及的部分[2]允许库设计者/类创造者改变类的内部工作方式而不用担心会影响客户端程序员 [Java访问指定词,access specifier]public private protected [组合,composition][聚合,aggregation][has-a,拥有关系] [继承]==…
SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1.2 INSERT SELECT 语句 8.1.3 INSERT EXEC 语句 8.1.4 SELECT INTO 语句 8.1.5 BULK INSERT 语句 8.1.6 标识列属性和序列对象 8.1.6.1 标识列属性 8.1.6.2 序列对象 8.2 删除数据 8.2.1 DELETE 语…
第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的setDefaultUncaughtExceptionHandler方法!defaultUncaughtHandler是Thread类的静态成员变量,所以如果我们将自定义的UncaughtExceptionHandler设置给Thread的话,那么当前进程内的所有线程都能使用这个UncaughtExcep…
本节和<Android群英传>中的第五章Scroll分析有关系,建议先阅读该章的总结 第3章 View的事件体系 3.1 View基本知识 (1)view的层次结构:ViewGroup也是View:(2)view的位置参数:top.left.right.bottom,分别对应View的左上角和右下角相对于父容器的横纵坐标值.从Android 3.0开始,view增加了x.y.translationX.translationY四个参数,这几个参数也是相对于父容器的坐标.x和y是左上角的坐标,而t…
<Linux内核设计与实现>读书笔记--第一. 二章 标签(空格分隔): 20135321余佳源 第一章 Linux内核简介 1.Unix内核特点 十分简洁:仅提供几百个系统调用并且有明确的目的: 在Unix中,大部分东西都被(或者正致力于)被当做文件对待: Unix内核即相关系统工具软件都是用C语言编写的,这使得系统有着强大的可移植性: Unix进程创建非常迅速,目标在于一次执行保质保量地完成一个任务 进程创建迅速:有独特的fork()系统调用,一次执行保质保量地完成一个任务.简单的进程间通…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 理解本章中针对命令队列的更新(不再需要每帧都flush命令队列),提高性能: 理解其他两种类型的根信号参数类型:根描述和根常量: 熟悉如何通过程序方法来绘制通用的几何形状:盒子,圆柱体和球体: 学…
Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. Background 看了历史, 写第一篇笔记居然是2016年的事情了, 中间半途而废搁置了好长时间, 去年生病的时候捡起来看了一些, 今年终于看完了. 做这个笔记的目的主要是为了个人学习, 把一本书读薄, 也留下以后可以查阅翻阅的资料. 写博客这么多年, 我觉得有一个很大的好处是, 有时候会有一个…
Java逍遥游记读书笔记 前言 必须先来一句,这是入门级别,高手勿喷~ 写Android的时候总有一些语句不是很理解,其实大部分是Java的内容,所以想系统的学下Java. 这本书——<Java逍遥游记>是在图书馆偶然看到的,被横放在书架上,看来是被人翻过直接丢那里了,索性拿来看一看. 很基础的一本书,废话很多,比如孙悟空想学编程什么什么的,但可以理解作者的一片苦心.既然如此水,那就把它借回来想快速扫一下以增加成就感,用一种查漏补缺的态度,看到哪里不会就记下来,最终目标就是这本书就作废了,对我…
这是我的一些读书笔记: 我研究了一下面向对象: 面向对象符合人类看待事物的一般规律,对象的方法的实现细节是包装的,只有对象方法的实现者了解细节 我觉得面向过程是由过程.步骤.函数组成,过程是核心,面向对象是以对象为中心,先有类,得到对象,通过对象之间相互通信实现功能,面向过程是先有算法,后有数据结构, 而面向对象是先有数据结构,然后再有算法. 然后就是一些重要的: main方法是静态的. Public static void main(String[] args) 源代码的文件名必须与公有类的名…
第0章:学习方法建议 该如何学习Java? 1.慢慢来.理解的越多,就越不需要死记硬背.时常停下来思考. 2.勤作笔记,勤做习题. 3.动手编写程序并执行,把代码改到出错为止. 需要哪些环境和工具? 1.文本编辑器 2.Java API 文档 3.安装 JDK5 以上 4.配置Java环境变量,让java/javac知道去哪里寻找Java/bin中的执行文件. 5.UML图例与规则 第1章:进入Java的世界 Java有哪些特点? 面向对象.内存管理.跨平台write once, run any…