在这周的学习中主要复习了前面学习的内容。
Java的特点:简单性,面向对象,分布式,解释性,可靠性,平台无关性等。
基本数据类型:整数型-byte,short,int,long。
浮点型-float,double
布尔型-boolean
字符型-char
Java与c++的异同:
都是面向对象的,支持封装、继承、多态
Java不提供指针来直接访问内存
Java的类单继承,c++支持多重继承,但Java的接口课以多继承
Java有自动内存管理机制,不需要程序员手动释放无用内存
final和static:
都可以修饰类、方法、成员变量
static可以修饰类的代码块,final不可以
static不可以修饰方法内部类局部变量,final可以
static修饰表示静态或全局
static修饰的代码块表示静态代码块,当JVM加载类时指挥被创建一次
static修饰的变量可以重修赋值
static方法中不能用this和super关键字
static方法必须被实现,不能是抽象的abstract
static方法只能被static方法覆盖
final修饰表示常量,一旦创建不能修改
final标记的成员变量必须在声明的同时赋值或在该类的构造方法中赋值,不可重新赋值
final方法不能被子类重写
final类不能被继承,没有子类,final类中的方法默认是final的
final不能用于修饰构造方法
private类型的方法默认是final类型的
finalize方法用于回收垃圾
数组:
开始时先定义一个数组。例如:double[],表示double类型的数组。{ }表示数组的值/元素。
遍历数组得到数组的所有元素的和,用for。
使用方法:
1,数组类型[]数组名=new数组类型[大小]。
2,先声明数组:数据类型 [] 数组名 或 数据类型 数组名 [];
int a[]; 或int[] a;
创建数组:数组名=new 数据类型[大小];
a=new int[];
3,静态初始化;
数据类型 数组名[]={元素值...}
int a[]={1,2,...}
特点:在定义数组的时候同时确定了数据。
4,动态初始化数组;
数据类型[]数组名 = new 数据类型[长度];
特点:一开始只确定数组的类型和长度,不确定存入的具体值。
存在默认值。
数组赋值类型机制:
- 基本数据类型赋值,这个值就是具体的数据,而且不相互影响。(值拷贝)
- 数组在默认情况下是引用传递,赋的值是地址。(会影响)
数组和集合的区别
一、数组声明了它容纳的元素的类型,而集合不声明。
二、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
三、数组存放的类型只能是一种(基本类型/引用类型),集合存放的类型可以不是一种(不加泛型时添加的类型是Object)。
四、数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查都是最快的。
集合:
List系列集合:添加的元素是有序、可重复、有索引
Set系列集合: 添加的元素是无序、不重复、无索引
Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。
Collection是一个接口,不能直接创建它的对象。
Set系列集合:特点:1,无序:存取顺序不一致。2,不重复:可以去除重复。3,无索引:不能用普通for循环遍历,也不能通过索引来获取元素。
Set集合的实现类:
HashSet:无序、不重复、无索引。
LinkedHashSet:有序、不重复、无索引。
TreeSet:可排序、不重复、无索引。
Set接口中的方法基本上与Collection的API一致。
this的本质:代表方法调用者的地址值。
this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
this的用法在java中大体可以分为3种:
①. 普通的直接引用,this相当于是指向当前对象本身。
②. 形参与成员名字重名,用this来区分:
③. 引用本类的构造函数
equals和==的区别:
==:运算符,1.可以使用在基本数据类型变量和引用数据类型变量中。 2.若比较的是基本数据类型变量,比较两个变量保存的数据是否相等。若比较的是引用数据类型变量,比较两个对象的地址值是否相等。(基本数据类型用)
equals():1.是一个方法。2.只能适用于引用数据类型。
3.Object类中的equals()的定义;
public boolean equals(Object obj){
return (this == obj);
}
说明:Object类中定义的equals()和==的作用是相同的,比较两个地址值是否相同即两个引用是否指向同一个对象实体。
4.像String、Date、File、包装类等都重写了Object类中的equals()方法。重写后比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容”是否相同。
流:
流的分类:
1.操作数据单位:字节流,字符流
2.数据流向:输入流,输出流
3.流的角色:节点流,处理流
字节流和字符流的区别:
字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。
字节流默认不使用缓冲区;字符流使用缓冲区。
字节流在操作的时候本身是不会用到缓冲区的,是与文件本身直接操作的,所以字节流在操作文件时,即使不关闭资源,文件也能输出;字符流在操作的时候是使用到缓冲区的。如果字符流不调用close或flush方法,则不会输出任何内容。
字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
总结:知识有很多,这里只是写了很少的一部分,没有结实的知识做基础很难能写出一项很好的项目。在接下来的学习过程中不能光学不记,到时害的只会是自己。