java编程
1、访问控制修饰符
(1)default:即默认,不使用任何修饰符
(2)private:在同一个类中可见,不能修饰类(外部类);私有变量只能通过类中公共的getter方法被外部类访问
(3)public:对所有类可见
(4)protected:同一保内的类和所有子类可见,不能修饰类;
子类与基类不在同一包中:子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法
2、访问控制与继承:
(1)父类中声明为public的方法在子类中也必须为public
(2)父类中声明为protected的方法在子类中要么声明为Protected,要么为public,不能声明为private
(3)父类中声明为Private的方法,不能被子类继承
3、非访问修饰符:
(1)static
静态变量:类变量,局部变量不能声明为static变量
静态方法:静态方法不能使用类的非静态变量
对类变量跟方法的访问可以直接使用classname.variablename和classname.methodname方式访问
(2)final:
final变量:变量一旦赋值后,不能被重新赋值,被final修饰的实例变量必须显式指定初始值
final修饰符与static修饰符一起使用来创建类常量
(3)abstract修饰符:唯一目的是为了将来对该类进行扩充,一个类包含抽象方法,那么该类一定要声明为抽象类
4、同个文件只能有一个Public类,子类继承父类,不需要用Public修饰
5、子类是不继承父类的构造器(构造方法)的,只是调用,如果弗雷的构造器带有参数,子类的构造器中显示的通过Super关键字调用父类构造器并配以参数列表
父类构造器没有参数,则子类构造器不需要使用super关键字调用父类构造器,系统会自动调用父类的无参构造器
6、重写:壳不变,重写核心;构造方法不能被重写
7、重载:在一个类里,方法名字相同,参数不同,返回类型可相同也可不同
每个重载方法都必须有一个独一无二的参数类型列表
8、java多态:同一个行为具有多个不同表现形式或形态的能力
9、instanceof是java关键字,作用测试左边对象是否是右边类的实例,返回boolean的数据类型
10、abstract修饰的方法是抽象方法,只有声明没有实现,包括抽象方法的类必须是抽象类
abstract修饰的方法和类是想让别人重写或继承的
11、向上转换与向下转换:
(1)向上转换:将子类对象转为父类对象,好处是可简化编程
转换方法: Animal b = new Bird()
b.eat
此处调用子类的eat方法,此时b会遗失除与父类对象共有的其他方法
(2)向下转换是将父类转换为子类,可以调用子类类型中所有成员
父类引用对象指向子类对象,转换过程是安全;若父类引用对象是父类本身,运行时会出错
向下转型的前提是需要一个向上转型完成的对象

12、重写方法能在运行时调用,不管编译时候源代码引用变量是什么数据类型
13、抽象类不能被实例化,如果被实例化,就会报错,编译无法通过;只有抽象类的非抽箱子类可以创建对象
14、任何要访问类中私有成员变量的类都要通过getter跟setter方法
15、ArrayList类是一个可以动态修改的数组,没有固定大小的限制,可以添加或删除数组
16、Linked list是一种线性表,不会按线性的顺序存储数据,而是在每个节点里存到下一个节点的地址
17、HashSet是基于HashMap来实现的,是一个不允许有重复元素的集合,集合中每个元素都必须是唯一的
18、HashMap是一个散列表,存储的内容是键值对(key-value)映射,key跟value的值可以相同也可以不同
19、Iterator不是一个集合,是一种访问集合的方法,可用于迭代ArrayList跟HashSet等集合
迭代器的基本操作:
.netnext():返回迭代器的下一个元素,并更新迭代器的状态
.hasNext()用于检测集合中是否还有元素
.remove()将迭代器返回的元素删除
20、Obeject类是所有类的父类,所有类继承了Object,子类可以使用Object的所有方法
创建类时,如果没有明确继承一个父类,他会自动继承object,成为Object的子类
21、java泛型:泛型的本质是参数化类型,也就是所操作的数据类型被指定为一个参数
可以写一个泛型方法,该方法在调用时可以接受不同类型的参数,根据传递给泛型方法的参数类型,编译器适当的处理每个方法调用
22、所有泛型类型声明均有一个类型参数声明部分(由尖括号分割),该类型参数声明部分在方法返回类型之前;注意类型参数只能代表引用型类型,不能是原始类型
23、调用时候方便,不加static是非静态函数,访问时需要new出该类的对象来调用,加上static是静态函数,可直接访问或通过类名访问

24、java中泛型标记符:
E:Element(在集合中使用,因为集合中存放的是元素)
T:Type(Java类)
K:Key(键)
V:Value(值)
N:Number(数值类型)
?:表示不确定的java类型
25、Comparable接口已经泛型化,包含一个类型参数T,每个元素要么是Null要么是有compareTo方法的东西
26、this.通常可以省略,但是当成员变量与局部变量命名冲突时,要用this来区分成员变量
27、要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟他的上界
28、泛型类:泛型类的声明跟非泛型类的声明类似,除了在类名后面添加类型参数声明的部分
29、类型通配符一般是使用 ? 代替具体的类型参数,例如List<?>在逻辑上是List<String>,List<Integer>等所有List<具体类型实参>的父类
30、类型通配符下限通过形如 List<? super Number>来定义,表示类型只能接受Number及其上层父类类型,如Object 类型的实例
31、序列化:将java对象转换为字节序列的过程
反序列化:将字节序列恢复为java对象的过程
32、序列化的作用:使得对象可以脱离程序运行而独立存在,持久化;
33、不能被序列化的内容:
(1)有Static修饰的属性
(2)transient 修饰的属性
在序列化中不仅保留当前类的对象的数据,而且递归保存对象引用的每一个对象的数据,将整个对象层次写入字节流中,这就是序列化对象的“深复制”,即复制对象及引用对象本身
在学历恶化过程中,对于属性值较为敏感的,不需要在网络中传递,即不需要参与序列化,可添加transient关键字,对于该类属性会跳过不会写入文件中,读取时不可恢复,该属性值保持默认初始化值
浙公网安备 33010602011771号