java-5

1.面向对象与面向过程

面向过程:

根据需求,分析解决该需求所需要的步骤,利用函数(方法)将这些步骤一一实现,使用时在进行依次调用。

面向对象:

把需求分解成一个个的功能,利用函数(方法)将这些功能一一实现,使用时调用功能。

在面向对象的思维中,不考虑每个功能具体需要哪些步骤、是怎么实现的,简单来说就是你办事我放心。

例:

如何把大象装入冰箱?

面向对象:1.打开冰箱门(方法)2.把大象装进冰箱(功能)3.关闭冰箱门(功能)

整个过程需要三个方法:打开,装载,关闭,一个对象:大象。

2.对象内存图解

复制代码
class Car{
      String color;
      int wheels;

  public void run(){
     System.out.print(color+":"+wheels);

  }

}

复制代码
复制代码
class TestCar{
    public static void main(String[] args){
           Car w = new Car();
           w.color = "red";
           w.wheels = 4;
           w.run();
    }
    
}
复制代码

3.类与对象

类指的是对某一类对象的抽象解释,例如动物、人类,而对象则是类具体化的体现,例如猫、中国人,创造对象的过程就是实例化类。

复制代码
class Human{
     String country;
     int age;
     public static void main(String[] args){
           Human chinese = new Human();
           chinese.country = "中国";
           chinese.age = 20;
     }   
}
复制代码

4.基本类型与引用类型传参

基本类型:

a的值被复制一份传入方法change,方法内改变a的值,只在方法内生效,方法执行完毕,弹栈,主方法内的a不改变。

复制代码
class Test{
    public static void change(int a){
            a = 10;
     }
    public static void main(String[] args){
          int a = 5;
          change(a);
          System.out.print(a);
    }
}
复制代码

 

引用类型:

引用类型传参是把其物理地址传入方法,此时会有两个引用指向该物理地址,即主方法里的参数a,change方法内的形参a,此时方法内改变a[0],

则直接会对堆内的数据进行改变,所以主方法内的a[0]也随之改变。

复制代码
class Test{
    public static void change(int[] a){
            a[0] = 10;
     }
    public static void main(String[] args){
          int[] a = {5,15,20};
          change(a);
          System.out.print(a[0]);
    }
}
复制代码

 

5.成员变量与局部变量

区别一:定义的位置不同

定义在类中的变量是成员变量

定义在方法中或者{}语句里面的变量是局部变量

区别二:在内存中的位置不同

成员变量存储在对内存的对象中

局部变量存储在栈内存的方法中

区别三:声明周期不同

成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失

区别四:初始化不同

成员变量因为在堆内存中,所有默认的初始化值

局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

原文地址:https://www.cnblogs.com/wangnatian/p/8681909.html