4 数据类型与类型检查

本文是关于软件构造的第四次课程笔记,主要探讨Java中的数据类型,包括基本数据类型与对象数据类型,强调了对象类型形成的层次结构以及基本数据类型与对象数据类型的区别。此外,还讲解了静态/动态数据类型检查,静态检查的优点以及动态检查的特点。讨论了可变性与不可变性,特别是不变性在编程中的重要性,通过String与StringBuilder的对比展示了可变与不可变对象的区别。最后,提到了数组、集合(如List、Set、Map)以及如何创建不可变集合的重要性。
摘要由CSDN通过智能技术生成

软件构造第四次课程笔记

1.程序语言中的数据类型

1.定义

数据类型:是一组值,以及可以对这些值执行的操作

变量:本地命名,用特定数据类型定义,存满足类型规约的一个值

2.Java中的数据类型

基本数据类型(类型名字均为小写字母):int, long,bolean,double,char

对象数据类型(类型名字以大写字母开头):String,BigInteger(代表任意大小integer)

3.对象类型形成层次结构

I.所有类除了object类均有父类,只能单亲继承。

II.如果不指明类的继承关系,则默认继承自 object类,因为object类是所有类的祖先。

III.类是其所有超类的实例,可从其超类继承可见(public,protected)字段方法,可重写超类的方法改变行为

※:方法重写时,子类无法继承父类的private方法,如果子类修饰符比父类修饰符权限低也不行

请添加图片描述

例如,包A下有fu,zi,demo三个class,zi继承fu,demo与两者无继承关系,在fu里有4个方法,分别用private,默认,protected,public修饰,那么在fu本类里,可以访问这4个方法,在zi里和在demo里可以访问后三种,在包B中有zi类与demo类,zi继承包A的fu,那么包B的zi可以访问后两种,包B的demo只能访问最后一种方法。

4.基本数据类型与对象数据类型 对比如下(尤其注意第二、三点)

请添加图片描述

5.基本数据类型包装 (如int–>Integer)

通常在定义集合类型时使用,一般情况避免使用,一般可以在包装数据类型和非包装数据类型间自动转换

6.运算

作为前中后缀运算符 a+b int×int->int

作为对象方法 bigint1.add(bigint2) BigInteger×BigInteger->BigInteger

作为函数 Math.sin(theta) sin:double->double

※ 重载:同样的操作名用于不同数据类型 如加减乘除,方法也可重载

2.静态/动态数据类型检查

1.静态/动态typing

Java是一种静态类型的语言,在编译阶段进行类型检查。

所有变量的类型在编译时(在程序之前)都是已知的,因此编译器可以推断所有表达式的类型。
如果a和b声明为int,则编译器的结论是a+b同时也是 int。

※ 像Python这样的动态类型语言中,这种检查被推迟到运行时。

2.静态/动态检查

A.静态检查:在程序运行前发现bug,在编译阶段发现错误,提高程序正确性健壮性

​ 可检查出语法、类名函数名、参数数目、参数类型、返回值类型错误

​ 关于类型的检查,不考虑值

B.动态检查:程序执行时发现bug

​ 可检查出非法参数值、返回值、越界、空指针

​ 关于值的检查,关注由特殊值所产生的错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值