软件构造博客1(所得和细节澄清)

软件构造博客1(所得和细节澄清),第1张

1.  ADT的相关概念及思想

抽象用更简单,更高层次的概念来省略或隐藏底层细节。

 

这些公共 *** 作及其规约是允许此数据类型的客户端知道的唯一信息

一个抽象的类型的 *** 作分类如下:

Creator   创建该类型的新对象。一个创造器可以将对象作为参数,但不是正在创建的类型的对象。

Producer  从该类型的旧对象产生一个新对象。例如String的concat方法就是一个生产者,他连接两个字符串,产生一个新的字符串。

Observer  获取抽象类型的对象并返回不同类型的对象。例如List的size方法返回一个int

Mutator  改变对象。例如List的add方法通过在List最后添加一个元素改变List。

2. 变量引用

2.1分析对象引用与对象的区别

例子: 

public class Demo{

    //默认构造方法

    public Demo{

    }

接下来,我们用Demo类来创建一个对象。

Demo demo=new Demo();

注:

  1. 右边的“new Demo”,是以Demo类为模板,在堆空间里创建一个Demo对象。
    2)末尾的()意味着,在对象创建后,立即调用Demo类的构造函数,对刚生成的对象进行初始化。
    3)左边的“Demo demo”创建了一个Demo类引用变量,它存放在栈空间中。也就是用来指向Demo对象的对象引用。
    4)“=” *** 作符使对象引用指向刚创建的那个Demo对象。

另一种写法:

Demo demo;//创建对象引用

demo=/*将对象引用指向对象*/new Demo();//创建对象

2.2对象引用与对象之间的关系

(1)一个对象引用可以指向一个对象

Demo demo;//一个对象引用

demo=new Demo();//一个对象引用指向一个对象

(2)多个对象引用可以指向一个对象

Demo demo1,demo2,demo3;//创建多个对象引用

demo1=new Demo();

demo2=demo1;

demo3=demo2;//创建对象,并被多个对象引用指向

3. HIT软件构造第六章笔记

3.1

java中list:java中的List简单介绍_拉风的菜鸟的博客-CSDN博客_java list

 

List 是一个接口,它继承于Collection的接口。

(一)list和Set作比较:

List中元素可以重复,并且是有序的(这里的有序指的是按照放入的顺序进行存储。如按照顺序把1,2,3存入List,那么,从List中遍历出来的顺序也是1,2,3);

Set中的元素不可以重复,并且是无序的(从set中遍历出来的数据和放入顺序没有关系)。

二) (1)ArrayList

ArrayList底层是用数组实现的,可以认为ArrayList是一个可改变大小的数组。随着越来越多的元素被添加到ArrayList中,其规模是动态增加的。

2)LinkedList

LinkedList底层是通过双向链表实现的。所以,LinkedList和ArrayList之前的区别主要就是数组和链表的区别

数组中查询和赋值比较快,因为可以直接通过数组下标访问指定位置。链表中删除和增加比较快,因为可以直接通过修改链表的指针(Java中并无指针,这里可以简单理解为指针。其实是通过Node节点中的变量指定)进行元素的增删。

所以,LinkedList和ArrayList相比,增删的速度较快。但是查询和修改值的速度较慢

6.2查看jdk手册学习一些类及其方法

(1)Integer.valueOf() §creator

static Integer

valueOf​(int i)

返回表示指定的 int值的 Integer实例。

static Integer

valueOf​(String s)

返回一个保存指定值的 Integer对象 String 。

//①为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象 *** 作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer

基本数据类型: boolean,char,byte,short,int,long,float,double

封装类类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。

例:

Integer i = new Integer(100);

Integer j = new Integer(100);

System.out.print(i == j); //false

Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)

Integer i = new Integer(100);

int j = 100;

System.out.print(i == j); //true

3)非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。因为非new生成的Integer变量指向的是静态常量池中cache数组中存储的指向了堆中的Integer对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的对象引用(地址)不同。

Integer i = new Integer(100);

Integer j = 100;

System.out.print(i == j); //false

6.3

表示独立性:内部的东西不被暴露

表示泄露:违背了表示独立性

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/923301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存