《JAVA编程思想》学习笔记:第1-4章(Java概述)
全书目录
Java编程思想(一)第1~4章:概述
Java编程思想(二)第5章:初始化和清理
Java编程思想(三)第6章:访问权限
Java编程思想(四)第7章:复用类
Java编程思想(五)第8章:多态
Java编程思想(六)第9章:接口
Java编程思想(七)第10章:内部类
Java编程思想(八)第11章:持有对象
Java编程思想(九)第12章:异常
Java编程思想(十)第13章:字符串
Java编程思想(十一)第14章:类型信息
Java编程思想(十二)第15章:泛型
Java编程思想(十三)第16章:数组
Java编程思想(十四)第17章:深入研究容器
Java编程思想(十五)第18章:Java I/O系统
Java编程思想(十六)第19章:枚举
Java编程思想(十七)第20章:注解
Java编程思想(十八)第21章:并发
本篇目录
第一章、对象导论
第二章、一切皆对象
第三章、操作符
第四章、控制和执行流程
第一章、对象导论
1.1 抽象过程
面向对象编程:(OOP,Object Oriented Programming 面向对象的程序设计):
成功的面向对象的五个特性:
(1)万物皆为对象;
(2)程序是对象的集合,他们通过发送消息来告知彼此所要做的;
(3)每个对象都可以拥有其他对象(has-a);
(4)每个对象(Instance)都有类型(Class);
(5)某一类型的所有对象都可以接收同样消息(is-a)。
1.2 对象类型
类:具有相同的特性(数据元素)和行为(功能),实际上就是一个数据类型。包含:
基本数据类型:
抽象数据类型:比如容器(即JAVA类库)
接口(interface):类似于定义了类的某些功能。
备注:Unified Modeling Language (UML)又称统一建模语言或标准建模语言。
1.3 封装
被隐藏的具体实现:
(1)不让客户端程序员访问他们不应该访问的部分;
(2)修改类内部而不用担心影响到客户端程序员;
1.4 复用
复用的具体实现方法(两种):
组合(has-a)/聚合:建议优先采用此方式。
继承(is-a):
备注:is-like-a : 派生类新增了methods或fileds。
1.5 多态
多态(也称作动态绑定、后期绑定或运行时绑定)。
前期(编译时)绑定&后期(运行时)绑定:
- 方法重载(overload)实现的是编译时的多态性(也称为前绑定);
- 方法重写(override)实现的是运行时的多态性(也称为后绑定)。
一个非面向对象语言在调用时会引起所谓的前期绑定,然而在OOP中,程序直到运行时才能确定代码的地址,因此面向对象语言使用了后期绑定的概念。在java中,动态绑定是默认的。
1.6 单继承
Java 特性(不同于C++):
单根继承结构使垃圾回收器的实现变得容易得(?)。
Object是所有类的基类。
1.7 容器
List/Map/Set/Queue/Tree/Stack etc..
1.8 对象的创建和生命期
对象的创建:Java完全采用了动态内存分配方式(基本类型只是一种特例)。每当想要创建对象时,就要使用new关键字来构建对象的动态实例。
对象的生命期:jvm gc自动实现内存(垃圾)回收。
1.9 异常(Exception)&并发& C/S编程
Java内置Exception和并发机制,并擅长于 C/S编程领域。
第二章、一切皆对象
2.1 对象引用
String s = a; //借助对象引用,来操控对象
2.2 创建对象
String s = new String("abc");
2.3 基本数据类型(内存一致性):
Java的基本类型所占存储空间大小不随机器硬件架构的变化而变化。这种所占存储空间大小的不变性是Java程序比用其他大多数语言编写的程序更具可移植性的原因之一。
2.4 作用域(scope):
Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。如:
{
String s = new String("a string");
} // End of scope
引用 s 在作用域终点就消失了。然而,s 指向的 String 对象仍继续占据内存空间。
2.5 import 关键字
import关键字指示编译器导入一个包,也就是一个类库(在其他语言中,一个库不仅包含类,还可能包括方法和数据,但是Java中所有的代码都必须写在类里)。
备注:特定类 java.lang 会被自动导入到每一个Java文件中。
2.6 static 关键字
2.6.1 通过 static 关键字可以满足以下两方面情形的需要:
- 只想为某一特定域分配单一存储空间,而不去考虑空间要创建多少对象,甚至根本就不创建任何对象。
- 希望某个方法不与包含它的类的任何对象关联在一起。也就是说,即使没有创建对象,也能够调用这个方法。
2.6.2 static 字段(类字段,单一存储空间)
如创建两个对象,st1.i 和 st2.i 指向同一存储空间,共享同一个 i (static 字段),因此它们具有相同的值47。
2.6.3 static 方法(类方法)
a. static方法重要用法:在不创建任何对象的前提下就可以调用它。这一点对定义main()方法很重要(所以main()方法是一个 satic 方法),这个方法是运行一个应用时的入口点。
b. 关于static方法内部是否能调用非静态方法:因为没有this,就没有对象,所以不能直接调用非静态方法;但可以传递一个对象引用到静态方法里,然后通过这个引用(和this效果相同)来调用非静态方法和访问非静态数据成员。
c. 有些人认为static方法不是“面向对象”的,因为它们的确具有全局函数的语义;使用static方法时,由于不存在this,所以不是通过“向对象发送消息”的方式来完成的。
2.7 javadoc标签
文档注释的一些标签:
@see 引用其他类
@link package.class#member laber 与@see极其类似,只是它用于行内
@inheritDoc 继承的注释
@version 版本信息
@author 作者
@since 最早使用版本
@param 参数说明
@return 返回值
@throws 抛出异常
@deprecated 过时的 被@Deprecated取代
第三章、操作符
3.1 赋值
两种赋值方式:
引用赋值:a = b; //a变化,b也会变化
方法参数赋值:func(a);//func()中的para a变化,方法调用处的a也会变化。
3.2 算术&关系&逻辑&按位运算符
逻辑运算的短路现象
3.3 类型转换
窄化转换:eg:double ->int 信息丢失(截尾),不安全的方式;
扩展转换:eg:int->double 安全的方式;
备注:舍入:Math.round()来实现四舍五入。
3.4 sizeof()
Java没有sizeof()操作符:Java不需要sizeof()操作符来满足这方面的需要,因为所有数据类型在所有机器中的大小是相同的。我们不必考虑移植问题——它已经被设计在语言中了。
第四章、控制和执行流程
4.1 true 和 false
注意Java不允许我们将一个数字作为布尔值使用,这与C和C++ 不同(C/C++中,“真”是非零,而“假”是零)。如果将数字作为布尔表达式,Java编译器会直接报错。
4.2 迭代:
while(): 先检查条件,再判断是否执行;
do-while: 先执行,再判断条件(同上区别:一定会执行一次);
for :
for-each:
4.3 返回
return/break/continus //java中没有goto语法。
《JAVA编程思想》学习笔记:第1-4章(Java概述)相关推荐
- java编程思想学习笔记(第七章:复用类)
复用代码是java众多引人注目的功能之一.但是要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情. 7.1组合语法 将对象引用置于新类中.每一个非基本类型的对象 ...
- Java编程思想学习笔记-第11章
<?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...
- JAVA编程思想学习笔记——第一章 对象导论
搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的 ...
- Java编程思想学习笔记4 - 序列化技术
今天来学习下Java序列化和反序列化技术,笔者对<Java编程思想>中的内容,结合网上各位前辈的帖子进行了整理和补充,包括: 序列化概述 Java原生序列化技术 Hessian序列化技术 ...
- Java编程思想 学习笔记1
一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...
- Java编程思想 学习笔记7
七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...
- java编程思想 学习笔记(2)
第二章 一切都是对象 用引用(reference)操纵对象 String s = "asdf"; String s; 但这里所创建的只是引用,并不是对象.如果此时向s 发送 ...
- java现有一个泛型类 提供数组排序功能,java编程思想读书笔记 第十六章 数组
数组,你可以创建并组装它们,通过使用整型索引值访问它们的元素,并且它们的尺寸不能改变. 1.数组为什么特殊 数组与其他种类的容器之间的区别有三方面:效率.类型和保存基本类型的能力.在Java中数组是一 ...
- Java编程思想读书笔记_第6章(访问权限)
四种访问权限: public private 包访问权限 protected 如果没有明确指定package,则属于默认包 1 package access.dessert; 2 3 public c ...
- 01.Java 编程入门学习笔记20210307
Java 编程入门学习笔记-day01 第0章:编程入门 1.计算机的概述 计算机 = 硬件 + 软件 1.1硬件:冯诺依曼体系 CPU: CPU的衡量标准:速度的计量单位是赫兹(Hz),1Hz相当于 ...
最新文章
- 使用spark-sql-perf评测spark 2.0
- JBoss Data Virtualization 6.1 Beta现在可用
- 千寻和省cors精度对比_使用中海达RTK实战演示千寻cors账号对比省cors网络,验证其测量效果究竟如何...
- linux数据库实例开机启动,Oracle数据库之Linux下实现Oracle数据库单实例开机自启动设置...
- 计算机员工工资管理系统源代码,C员工工资管理系统源代码.doc
- 三年级计算机 键盘指法 教案,第13课 键盘指法练习
- IDM Internet Download Manager (IDM)临时文件夹
- ios android 比较大小,对比苹果iOS,安卓7.0的七个优点
- Sony微单相机alpha6000 wifi远程控制(2)
- Cesium模型制作服务
- 拉格朗日乘子法(自己总结一些要点)
- 继续教育计算机考试试题,第四批继续教育计算机考试试题.doc
- 排列组合之错排问题总结
- win10+cuda10.0+pytorch安装
- 服务器IUSR_机器名账号找不到怎么办?(转自百度问问)
- 云和恩墨数据库一体机助力天安人寿 zData架构高效运行
- 来自 http://www.seeitco.com/ 的各大IT公司薪资和待遇内幕(不断更新)[找工作的朋友必读!]
- 通信中的DA,SA,TA,RA分别是什么意思?
- 包装大小与商品价格问题
- aarch64安装numba