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关键字,对于该类属性会跳过不会写入文件中,读取时不可恢复,该属性值保持默认初始化值

 

posted on 2022-05-09 16:13  ChanXM  阅读(73)  评论(0)    收藏  举报

导航