博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件构造 第三章 第一部分
阅读量:5929 次
发布时间:2019-06-19

本文共 1436 字,大约阅读时间需要 4 分钟。

 

3.1 数据类型与类型检验

一、数据类型

数据类型分为以下两种:

基本数据类型:int、long、boolean、double、char

对象数据类型:String、BigInteger等

他们的区别如下图:

 

二、静态、动态检查

静态类型:在编译阶段进行类型检查,可在编译阶段发现错误,避 免了将错误带入到运行阶段,可提高程序正 确性/健壮性

包括:语法错误, 类名/函数名错误,  参数数目错误,返回值类型错误

例如:int a = 18.7 //error,String a = 1; //error等等

动态类型:在运行阶段进行类型检查

包括:非法的参数值. 非法的返回值, 越界,  空指针

找bug的时机:静态类型检查>>动态>>无检查

静态检查:关于“类型”的检查,不考虑值 动态检查:关于“值”的检查

 

三、可变性与不可变性

1)赋值:通过”=“给变量赋值

2)改变一个变量与改变一个变量的值的区别:

改变一个变量:将该变 量指向另一个值的存储空间

改变一个变量的值:将 该变量当前指向的值的存储空间中写入一个新的值。 

3)不变性:

不变数据类型:一旦被创建,其值不能改变。如果是引用类型,也可以是不变的:一旦确定其指向的对象,不能在被改变。

 

关于final

1.修饰类当用final去修饰一个类的时候,表示这个类不能被继承。注意:a. 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl。b. final类中的成员方法都会被隐式的指定为final方法。

2.修饰方法

 

被final修饰的方法不能被重写。

 

注意:

 

a. 一个类的private方法会隐式的被指定为final方法。

 

b. 如果父类中有final修饰的方法,那么子类不能去重写。

3.修饰成员变量:

注意:

a.必须要赋初始值,而且是只能初始化一次。

b.被final修饰的成员变量赋值,有两种方式:1、直接赋值 2、全部在构造方法中赋初值

c.如果修饰的成员变量是基本类型,则表示这个的值不能再修改。

d.如果修饰的成员变量是一个引用类型,那么这个引用的地址不能修改,但是所指向的对象里面的内容还是可以更改的。

例如String是不可变的数据类型,

 

在上面的例子中,s添加了b,s指向了一个新对象。

当有多个引用时,就会产生区别,例如下图

使用不可变类型,频繁修改会产生大量的临时拷贝。但是更”安全“

使用可变数据类型,可获得更好的性能,也适合在多个模块之间共享数据

例如下面这个例子,由于list可变。导致调用sumAbsolute时将list的值全部改为正数,两个输出结果都变为10。

 

防御性拷贝:

下面的程序会对groundHogAnswer的month修改,导致错误,使用防御性拷贝,

return new Date(groundhogAnswer.getTime());

通过防御式拷贝,给客户端返回一个全新的Date对象 

 

四、Snapshot diagram 用于描述程序运行时的内部状态 

便于程序员之间的交流 

便于刻画各类变量随时间变化 

便于解释设计思路 

基本类型的值:

对象类型的值:

 

不可变对象:用双线椭圆

 

 对象值的修改:左不可变,右可变

不可变的引用:用双线箭头

引用时不可变的,但指向 的值却可以是可变的 ;可变的引用,也可指向不可变的值

 

转载于:https://www.cnblogs.com/boston-o/p/11047944.html

你可能感兴趣的文章
轻松实现基于Heartbeat的高可用web服务集群
查看>>
天道酬勤-一次通过信息系统项目管理师
查看>>
我对工作的态度是怎样的?
查看>>
姚班”十年:一场精英教育秀
查看>>
ubuntu桌面之路-续五
查看>>
java的文件读写
查看>>
使用jsonp解决Ajax跨域访问问题
查看>>
RHEL7 VNC配置
查看>>
Vim 为什么把 HJKL 当作光标键?
查看>>
js 函数
查看>>
zabbix介绍和安装
查看>>
我的第一篇博客
查看>>
samba
查看>>
openldap 2.4 安装配置
查看>>
Apache + Tomcat基于HTTP协议实现反代、动静分离、负载均衡和session会话保持
查看>>
ORACLE 查找锁
查看>>
c++ STL平常练习-6
查看>>
显示linux当前状态的脚本(系统内核、硬盘、内存、CPU、网卡)
查看>>
实用DOS命令大全
查看>>
php 文件下载
查看>>