java概念(1)
面向对象基本概念和特征
面向对象编程:生活中客观存在的事物及关系,用程序来实现。
核心概念:
类:同类事物 的共性 进行抽象,泛化
对象:类的实例,它是具体的
特征:
(1) 继承:在类的基础上增加新的特征 或新类。继承实现代码重用。
(2) 封装:用get/set访问器实现属性的读写,隐藏了逻辑,封装的好处:代码安全,提供简单的接口。
(3) 多态:父类指向了子类的对象,不同的子类对于同一个方法有不同的实现形。
多态分为,编译时多态—方法重载,运行时多态—方法重写。
(4) 抽象:抽取类的过程是抽象的,关注共性,不关注实现。
访问权限修饰符 public、private、protected,默认修饰符的区别
protected 不能用于其他包
默认 不能用于子类和其他包
private自能用于当前类
基本数据类型: 只分配 栈内存
数据类型 | byte | short | int | long |
---|---|---|---|---|
长度(字节) | 1 | 2 | 4 | 8 |
数据类型 | float | double | char | boolean |
---|---|---|---|---|
长度(字节) | 4 | 8 | 2 | 1 |
引用类型:数组,字符串,类。栈内存,存储地址;堆内存,实际数据。
java中==和equals区别
==是个运算符,比较值类型,判断值。比较引用类型,比较指向的内存地址。
Equals是Object的方法,默认比较地址,但是可以重写。String类重写了equals,可比较两个字符串。
总结:==号是编译器的行为,equals是程序员的行为.
String,StringBuilder和StringBuffer区别
String:只读,内容是不能变。
String str=”hello,accp”; str=”wecome”;
Str是一个引用,它指向字符串对象”hello,accp”,当执行str=”welcome”时,它已经指向另外一个字符串对象了。
StringBuffer:可变,可以直接修改。all方法有同步关键字Synchronized,多线程下数据安全,效率低。
StringBuilder:可变,JDK1.5后引入,方法和StringBuffer完全相同,用于单线程,效率高。没有同步关键字,多线程中无法确保数据安全。
Java中的包装类
将基本数据类型包装为引用类型,提供方法 数据类型转换,空值处理。
JDK ,JRE和JVM之间的关系
JDK:JAVA的核心,即开发工具包。含Java运行环境,java工具,基础类库。
JRE:java程序的运行环境,含java基础类库,jvm的标准实现。
JVM:Java虚拟机,将class文件转换为二进制。实现跨平台的核心,不同操作系统 不同 JVM。
总结:JDK>JRE>JVM
Error和Exception区别
Error和Exception 是Throwable的子类
Error 与虚拟机相关问题,如系统崩溃,内存不足,堆栈溢出。程序本身无法恢复和和预防,应终止程序。
Exception 程序可处理异常,可捕获,可恢复。应尽量处理异常,不需要终止程序。
Exception 分为:RuntimeException,Checked Exception
运行时异常:算数异常,参数异常,编译能通过但程序不会处理,会导致程序终止。而检查异常,try…catch 捕获,throws 语句抛出异常,否则编译不通过。
throw 和throws 的区别
要点:throw关键字
1) throw 语句用在方法体内,表示抛出异常,由方法体内的语句处理。
2) throw 是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行 throw 一定是抛出了某种异常。
throws关键字:
1) throws 语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。
2) throws 主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。
3) throws 表示出现异常的一种可能性,并不一定会发生这种异常
final、 finally、finalize 的区别
final:
常量,修饰方法 不能重写,修饰类是最终类 不能被继承。
finally:
表示一定会执行的代码,和try…catch…finally一起使用。
finalize()方法
Object类 一个对象生命周期的临终方法,被系统调用 代表该对象即将被回收。
如果引用了文件或数据库,希望 垃圾收集线程 自动关闭文件,数据库,可以重写该方法。
注意:一个被动方法,主动调用该方法,不会导致对象死亡,不需要主动调用。