全书目录
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概述)相关推荐

  1. java编程思想学习笔记(第七章:复用类)

    复用代码是java众多引人注目的功能之一.但是要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情. 7.1组合语法 将对象引用置于新类中.每一个非基本类型的对象 ...

  2. Java编程思想学习笔记-第11章

    <?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...

  3. JAVA编程思想学习笔记——第一章 对象导论

    搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的 ...

  4. Java编程思想学习笔记4 - 序列化技术

    今天来学习下Java序列化和反序列化技术,笔者对<Java编程思想>中的内容,结合网上各位前辈的帖子进行了整理和补充,包括: 序列化概述 Java原生序列化技术 Hessian序列化技术 ...

  5. Java编程思想 学习笔记1

    一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...

  6. Java编程思想 学习笔记7

    七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...

  7. java编程思想 学习笔记(2)

    第二章     一切都是对象 用引用(reference)操纵对象 String s = "asdf"; String s; 但这里所创建的只是引用,并不是对象.如果此时向s 发送 ...

  8. java现有一个泛型类 提供数组排序功能,java编程思想读书笔记 第十六章 数组

    数组,你可以创建并组装它们,通过使用整型索引值访问它们的元素,并且它们的尺寸不能改变. 1.数组为什么特殊 数组与其他种类的容器之间的区别有三方面:效率.类型和保存基本类型的能力.在Java中数组是一 ...

  9. Java编程思想读书笔记_第6章(访问权限)

    四种访问权限: public private 包访问权限 protected 如果没有明确指定package,则属于默认包 1 package access.dessert; 2 3 public c ...

  10. 01.Java 编程入门学习笔记20210307

    Java 编程入门学习笔记-day01 第0章:编程入门 1.计算机的概述 计算机 = 硬件 + 软件 1.1硬件:冯诺依曼体系 CPU: CPU的衡量标准:速度的计量单位是赫兹(Hz),1Hz相当于 ...

最新文章

  1. 使用spark-sql-perf评测spark 2.0
  2. JBoss Data Virtualization 6.1 Beta现在可用
  3. 千寻和省cors精度对比_使用中海达RTK实战演示千寻cors账号对比省cors网络,验证其测量效果究竟如何...
  4. linux数据库实例开机启动,Oracle数据库之Linux下实现Oracle数据库单实例开机自启动设置...
  5. 计算机员工工资管理系统源代码,C员工工资管理系统源代码.doc
  6. 三年级计算机 键盘指法 教案,第13课 键盘指法练习
  7. IDM Internet Download Manager (IDM)临时文件夹
  8. ios android 比较大小,对比苹果iOS,安卓7.0的七个优点
  9. Sony微单相机alpha6000 wifi远程控制(2)
  10. Cesium模型制作服务
  11. 拉格朗日乘子法(自己总结一些要点)
  12. 继续教育计算机考试试题,第四批继续教育计算机考试试题.doc
  13. 排列组合之错排问题总结
  14. win10+cuda10.0+pytorch安装
  15. 服务器IUSR_机器名账号找不到怎么办?(转自百度问问)
  16. 云和恩墨数据库一体机助力天安人寿 zData架构高效运行
  17. 来自 http://www.seeitco.com/ 的各大IT公司薪资和待遇内幕(不断更新)[找工作的朋友必读!]
  18. 通信中的DA,SA,TA,RA分别是什么意思?
  19. 包装大小与商品价格问题
  20. aarch64安装numba

热门文章

  1. QR Code生成二维码快速入门
  2. Hadoop的搭建与使用
  3. QQ群关系库数据库查询解决方案,sql引索语句。
  4. 计算机图像处理数据 流行病学,漫谈计算机图像处理在全息学中的应用.docx
  5. 京东自营小米旗舰店小米11 Ultra手机烧主板烧屏
  6. win10电脑进行疑难解答时出错如何处理?
  7. win10安装docker及docker安装镜像
  8. 查看执行计划 db2expln 使用说明
  9. hust 1546 hdu 3911 Black And White
  10. PHPCMS手机访问,调用手机模板