一.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) 多态的调用过程 :
    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。


冲冲冲!