封装:把描述一个实物的属性和行为的代码封装到一个类中,这个类的属性用变量定义,行为用方法定义
继承:在原有类的基础上衍生一个子类,提供继承关系的就是父类,
多态:指的是程序中定义的引用类型变量所指向的具体类型不确定,需要在程序运行期间才确定 父类类型的变量引用子类的事例。
抽象:把描述一些实物相似和共性的代码写在这个类里,这个类只考虑这些事物的相同和共性之处
使用final修饰变量时,引用的变量不能变,但是引用变量里的内容可以变 比如
final StringBuffer a=new StringBuffer(“bxp”)
a=new SteingBuffer("")
会报编译错误
但是 a.append(“是好人”)拼接就可以 更改引用变量内容而不更改引用变量
==比较的是两个变量是否指向一个内存堆地址,也就是说是否引用同一个引用变量
equery是用于比较两个独立对象的内容是否相同
integer是java为int提供的包装类型,integer默认值是空,int默认值是0
java里Math类提供了三个与取整有关的方法
Math.ceil(11.3)向上取整 12
Math.floor(11.3)向下取整 11
Math.round(11.3)将原来的数值加上0.5后在向下取整 12
接口可以继承接口 抽象类可以实现接口 抽象类可以继承类 但是抽象类不可以有静态的方法 因为抽象类是需要被其他类继承去实现类里的方法 而且抽象类不能被实例化也就是不能被分配内存空间,静态方法在实例化前已经分配内存空间了 ,就矛盾了
内部类就是在一个类的内部定义的类,内部类中不能定义静态成员。
java提供了String和StringBuffer两个前者是不可变字符串,后者是可变字符串,当知道字符串需要改变时就可以用StringBuffer,String实现了equery方法
SteingBuffer没实现
StringBuffer是线程安全的StringBuilder是线程不安全的Builder比buffer的效率要高
LinkedList是基于链表的,善于添加删除,Array是基于数组的善于查询,两者都是线程不安全,线程不同步,ArrayList自动扩容50更节省空间。
List中的元素有序允许有重复值 Set中的元素无序不允许有重复值
HashTable线程同步,线程安全,HashMap线程不同步,线程不安全,HashMap效率要高,键跟值允许有空值。
数组中没有length()这个方法,但是有这个属性
final用于修饰属性,方法,类,表示属性不可变,方法不可覆盖,类不可被继承。
finalize是异常处理语句结构的一部分表示总是执行,通常用于存放资源回收代码,比如关闭数据库连接
error表示恢复不是不可能但是很困难内存溢出什么的excwption表示一种设计或实现问题