一.Java基础
1. 面向过程和面向对象的区别
面向过程的性能比面向对象高,但是面向对象容易维护、容易复用、容易扩展
2. Java的数据类型
(1) 基本数据类型 : 直接赋值就可以
① 整型 (byte、short、long、int)
② 字符型 (char)
③ 浮点型 (float、double)
④ 布尔型 (boolean)
(2) 引用数据类型 : 通过关键字new创建对象,然后把这个对象赋给相应的变量
String类型是引用数据类型,它比较特殊,可以通过关键字new来创建对象,也可以通过字符串直接赋值。
比如:
String s = new String(“abc”);
String s = “abc”;
3. equals和==的区别
==用于基本数据类型的变量,比较的是变量的值是否相等
==用于引用数据类型的变量,比较的是变量所指向的对象的堆内存地址是否相同
equals方法只能比较引用数据类型的变量,不能用于比较基本数据类型的变量。
equals方法如果没有重写,比较的是变量所指向的对象的堆内存地址是否相同
equals方法如果重写了,要看是如何重写的,像String类内部重写了equals方法,比较的是变量所指向的对象的内容是否相同
注:引用数据类型的变量也称为对象的引用
4. Java的内存机制
5. 面向对象的特征
封装 :
(1) 概念 : 将类的某些信息隐藏在类的内部,只能通过该类提供的公共方法来对隐藏的信息进行操作和访问
(2) 实现步骤 : 一般是把属性限制为private私有,封装在一个类里面, 对每个私有属性提供public公共的setter和getter方法
例如:public class Person{ private String name; private int age; public int getAge(){ return age; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public void setName(String name){ this.name = name; } } /* F文件名 : RunEncap.java */ public class RunEncap{ public static void main(String args[]){ EncapTest encap = new EncapTest(); encap.setName("James"); encap.setAge(20); encap.setIdNum("12343ms"); System.out.print("Name : " + encap.getName()+ " Age : "+ encap.getAge()); } }
以上代码编译运行结果如下:
Name : James Age : 20
public方法是外部类访问该类成员变量的入口
任何要访问类中私有成员变量的类都要通过这些getter和setter方法
继承 : 子类通过extends关键字可以继承父类的所有非私有属性和方法
多态 :
(1) 概念 : 同一个行为具有多个不同表现形式
(2) 多态存在的三个必要条件 :
① 继承
② 重写 : 子类对父类中某些方法进行重新定义
③ 向上转型 : 父类引用变量指向子类对象,Parent p = new Child();
(3) 多态的定义格式 :
父类类型 变量名 = new 子类类型();
(4) 多态的调用过程 :
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。