抽象:用更简单,更高层次的概念来省略或隐藏底层细节。
这些公共 *** 作及其规约是允许此数据类型的客户端知道的唯一信息。
一个抽象的类型的 *** 作分类如下:
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();
注:
- 右边的“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)ArrayListArrayList底层是用数组实现的,可以认为ArrayList是一个可改变大小的数组。随着越来越多的元素被添加到ArrayList中,其规模是动态增加的。
(2)LinkedListLinkedList底层是通过双向链表实现的。所以,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
表示独立性:内部的东西不被暴露
表示泄露:违背了表示独立性
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)