Java语言程序设计(基础篇) 第十章 面向对象思考
第十章 面向对象思考
10.2 类的抽象和封装
1.类的抽象是指将类的实现和类的使用分离开,实现的细节被封装并且对用户隐藏,这被称为类的封装。
2.从类外可以访问的方法和数据域的集合以及预期这些成员如何行为的描述,合称为类的合约(class's contract)。
3.实现的细节经过封装,对用户隐藏起来,这称为类的封装(class encapsulation)。
10.3 面向对象的思考
面向过程的范式重点在于设计方法。面向对象的范式将数据和方法耦合在一起构成对象。使用面向对象范式的软件设计重点在对象以及对对象的操作上。
10.4 类的关系
为了设计类,需要探索类之间的关系。类中间的关系通常是关联、聚合、组合以及继承。
10.4.1 关联
1.关联是一种常见的二元关系,描述两个类之间的活动。
2.关联中涉及的每个类可以给定一个多重性(multiplicity),放置在类的边上用于给定UML图中关系所涉及的类的对象数。
10.4.2 聚集和组合
1.聚集是关联的一种特殊形式,代表了两个对象之间的归属关系。聚集建模has-a关系。所有者对象称为聚集对象,它的类称为聚集类。而从属对象称为被聚集对象,它的类称为被聚集类。
2.一个对象可以被多个其他的聚集对象所拥有。如果一个对象只归属于一个聚集对象,那么它和聚集对象之间的关系就称为组合(composition)。
10.6 示例练习:设计栈类
栈(stack)是一种以“后进先出”的方式存放数据的数据结构。
10.7 将基本数据类型值作为对象处理
1.基本数据类型值不是一个对象,但是可以使用Java API中的包装类来包装成一个对象。
2.大多数基本类型的包装类的名称与对应的基本数据类型名称一样,第一个字母要大写。Integer和Character例外。
3.包装类没有无参构造方法。所有包装类的实例都是不可变的,这意味着一旦创建对象后,它们的内布值就不能再改变。
10.8 基本类型和包装类型类型之间的自动转换
将基本类型值转换为包装类型对象的过程称为装箱(boxing),相反的转换过程称为开箱(unboxing)。Java允许基本类型和包装类类型之间进行自动转换。如果一个基本类型值出现在需要对象的环境中,编译器会将基本类型值进行自动装箱;如果一个对象出现在需要基本类型的环境中,编译器会讲对象进行自动开箱。这称为自动装箱和自动开箱。
10.9 BigInteger和BigDecimal类
BigInteger类和BigDecimal类可以用于表示任意大小和精度的整数或者十进制数。
10.10 String类
String类对象是不可改变的。字符串一旦改变,内容不能再改变。
10.10.1 构造字符串
1.可以用字符串直接量或者字符数组创建一个字符串对象。
String message=new String("Welcome to Java");
String message="Welcome to Java";
2.String变量存储的是对String对象的引用,String对象里存储的才是字符串的值。严格地讲,术语String变量、String对象和字符串值是不同的。但在大多数情况下,它们之间的区别是可以忽略的。为简单期间,术语字符串将经常被用于指String变量、 String对象和字符串的值。
10.10.2 不可变字符串与限定字符串
1.String对象是不可变的,它的内容是不能改变的。
2.因为字符串在程序设计中是不可变的,但同时又会频繁地使用,所以Java虚拟机为了提高效率并节约内存,对具有相同字符序列的字符串直接量使用同一个实例。这样的实例称为限定的(interned)字符串。
10.10.3 字符串的替换和分隔
split方法可以从一个指定分隔符的字符串中提取标识。
1 String[] tokens="Java#HTML#Perl".split("#"); 2 for (int i = 0; i < tokens.length; i++) { 3 System.out.print(tokens[i]+" "); 4 } 5 //显示:Java HTML Perl
10.10.4 依照模式匹配、替换和分配
正则表达式(regular expression)(缩写regex)是一个字符串,用于描述匹配一个字符串集的模式。
10.10.5 字符串与数组之间的转换
1.字符串不是数组,但是字符串可以转换成数组,反之亦然。为了将字符串转换成一个字符数组,可以使用toCharArray方法。
char[] chars="Java".toCharArray();
2.为了将一个字符数组转换成一个字符串,应该使用构造方法String(char[])或者方法valueOf(char[]);
1 String str=new String(new char[]{'j','a','v','a'}); 2 String str1=String.valueOf(new char[]{'j','a','v','a'});
10.10.6 将字符和数值转换成字符串
可以使用Double.parseDouble(str)或者Integer.parseInt(str)将一个字符串转换为一个double值或者一个int值,也可以使用字符串的连接操作符将字符或者数字转换成字符串。另外一种将数字转换为字符串的方法时使用重载的静态valueOf方法。该方法可以用于将字符和数值转换成字符串。
10.10.7 格式化字符串
String类包含静态方法format方法,它可以创建一个格式化的字符串。
10.10 StringBuilder和StringBuffer类
1.一般来说,只要使用字符串的地方,都可以使用StringBuffer/StringBuilder类。StringBuffer/StringBuilder类比String类更灵活。可以给一个StringBuffer或StringBuilder中添加、插入或追加新的内容,但是String类一旦创建,它的值就确定了。
2.除了StringBuffer中修改缓冲区的方法是同步的,这意味着只有一个任务被荀彧执行方法外,StringBuilder类与StringBuffer类是很相似的。如果是多任务并发访问,就使用StringBuffer,因为这种情况下需要同步以放置StringBuffer崩溃。而如果是单任务访问,使用StringBuilder会更有效。StringBuffer和StringBuilder中的构造方法和其他方法几乎是完全一样的。
转载于:https://www.cnblogs.com/yang-young-young/p/6377148.html
Java语言程序设计(基础篇) 第十章 面向对象思考相关推荐
- Java语言程序设计 基础篇 原书第10版 ,梁勇著,百度云链接及密码
一本好书,对java小白来说是一本非常不错的书.第一次分享,请大家多多指教, Java语言程序设计 基础篇 原书第10版 ,梁勇著 链接:https://pan.baidu.com/s/1-MN_AS ...
- JAVA程序设计第十版梁勇著答案_0031 Java学习笔记-梁勇著《Java语言程序设计-基础篇 第十版》英语单词...
第01章 计算机.程序和Java概述 CPU(Central Processing Unit)*中央处理器 Control Unit*控制单元 arithmetic/logic unit /ə'rɪθ ...
- [转载] java语言程序设计-基础篇
参考链接: Java中的决策制定(if,if-else,switch,break,continue,jump) 第1章,计算机.程序和Java概述 包括[每个java初学者都应该搞懂的问题] http ...
- java语言程序设计-基础篇
第1章,计算机.程序和Java概述 包括[每个java初学者都应该搞懂的问题] http://blog.csdn.net/haobo920/article/details/5784990 1,java ...
- 《java语言程序设计-基础篇》笔记一
第一章.计算机.程序和java概述 中央处理器 CPU由两部分组成:控制单元和算术/逻辑单元 控制单元用于控制和协调除CPU之外其他组件的动作 算术/逻辑单元用于完成数值运算和逻辑运算 每台计算机都有 ...
- Java语言程序设计(基础篇) 第十一章 继承和多态
第十一章 继承和多态 11.1 引言 面向对象的编程允许你从已经存在的类中定义新的类,这称为继承. 11.2 父类和子类 1.继承使得你可以定义一个通用的类(既父类),之后扩充该类为一个更加特定的类( ...
- Java语言程序设计(基础篇) 第二章
第二章 基本程序设计 2.2 编写简单的程序 1.变量名尽量选择描述性的名字(descriptive name). 2.实数(即带小数点的数字)在计算机中使用一种浮点的方法来表示.因此,实数也称为浮点 ...
- java语言程序设计基础篇14.6答案_《Java语言程序设计-基础篇》答案-第15章
第15章 异常和断言 复习题 15.1 答:略 15.2 答:声明异常是为了在方法中产生异常时,以便通知方法的调用者. 在方法声明的头部使用关键字throws 声明,一个方法可以声明多个异常.如: p ...
- 《java语言程序设计 基础篇》原书第10版 PDF版 梁勇著 戴开宇译
方式一:百度网盘 网址:https://pan.baidu.com/s/1eg3iCmnFj-r8x_RlmLkKcw 提取码:cx32 或者: 方式二:腾讯微云 链接:https://share.w ...
最新文章
- java方法区内存泄露_深入理解java虚拟机-第二章:java内存区域与内存泄露异常...
- 揭秘星际2人工智能AlphaStar:DeepMind科学家回应一切
- 恶意软件伪装成系统更新,通杀Win Mac Linux三大系统,隐藏半年才被发现
- intellij idea 怎么全局搜索--转
- 基于 Laravel Route 的 ThinkSNS+ Component
- python面向对象-4类的继承与方法的重载
- MySQL主从复制能完美解决数据库单点问题吗?
- 数据库系列之mysql 自定义函数function,函数和存储过程的区别
- 协议转换器是怎么分类的?主要有哪些类别?
- linux内核编译及添加系统调用(hdu)_浅谈关于Linux内核write系统调用操作的原子性
- PythonBasics 中文系列教程 · 翻译完成
- ScrollView如何判断滑动到底部以及getHeight()方法与getMeasuredHeight()方法的一些理解
- 高速路上车辆组队链接的想法
- Linux+Nginx+SpringBoot+War环境下websocket部署遇到的问题
- python验证身份证号码大全_对身份证号码查重,你经常用的方法是错误,这个才是正确的方法...
- 使用Mapviz、中科图新 进行机器人GPS轨迹卫星地图绘制
- 【实用性程序】弧微分计算圆周长
- Java oss 上传图片视频
- run vue task的项目报错:Error while running task C:\IT\xxxxxx:serve with message‘spawn vue-cli-service
- 国内外开源社区资源汇总