java基础学习day08总结

来源:互联网 发布:独立域名网站 编辑:程序博客网 时间:2024/05/02 01:51

1.面向对象,面向过程

   (1)面向对象,面向过程都是一种思想,面向对象是相对面向过程来来说的;面向过程强调的是执行的过程,而面向对象是将功能进行封装,对功能进行调用,强调的是调用,比如人打开门的过程,门打开则是面向过程,而人打开门则是面向对象的过程。

(2) 面向对象的三大特点:封装;继承;多态

2.类和对象

 (1)类就是对现在生活的事情的属性,方法的描述(好比图纸)

(2)对象就是现实生活中真实存在的实体(生产的汽车)Car c =new Car();

3.成员变量和局部变量

(1)作用范围:成员变量位于类内方法外,在整个类中有效;局部变量位于方法体内,只在方法体或者语句中有效

(2)内存存储:成员变量存储在堆内存中,局部变量存储在栈内存中

(3)初始化值不一样:成员变量有默认初始化值,比如String 默认为null;局部变量需要手动初始化;

4.匿名对象 new Person()

(1) 利用匿名对象调用成员变量时没有意义

(2)当对方法只调用一次时的,采用匿名调用将减少内存空间的利用率

(3)匿名对象可以作为实际参数

5.封装

(1)将不需要对提供的属性方法隐藏起来

(2)需要对外提供公共访问方式 可以通过setXxx,getXxx方法

(3)private 关键字,是一个权限修饰符,用于修饰成员变量,成员方法,将成员变量私有化后,只能被本来访问,其他类不能访问,可以通过setXxx,getXxx 访问,提供访问的安全性

6.构造函数

(1)构造函数必须与类名相同,而且没有返回值类型,也不能用void;用于给对象的属性初始化的

(2)在一个类中可以定义多个构造函数,要是可以重载,只要形式参数不一样

(3)构造函数不是程序员调用,而是系统自动调用,但类中定义了构成函数时,系统将不会有默认的构造函数

7.this的用法

(1).用来区分成员变量与局部变量

(2)this谁调用this就代表谁

(3)当this放在构造函数的第一行的时候,可以用于对本类构造函数的调用

8.构造代码块

当对象都有具有同一属性时,可以利用构造代码块,每new一个对象可以执行一次构造代码块

9. 当Person p =new Person();

(1)Person.class 加载进入内存

(2)在堆内存中开辟一个Person p 的空间

(3)获得一个地址值

(4)进行默认初始化

(5)进行显示初始化

(6)进行构造代码块初始化

(7)进行构造函数初始化

(8)将地址值赋给变量P

9.static关键字

(1)用于修饰成员变量,成员方法

(2)特点:a.随之类的加载而加载,随之类的消失而消失,生命周期长

               b.优先于对象存在,明确一点,静态先存在,对象后存在

               c.被所有的对象共享

              d.可以被类名调用

(3)实例变量和类变量的区别

              a.存放位置:类变量存在方法区中;实例变量存在堆内存中

              b.生命周期     类变量随着类的消失而消失,实例变量随对象的消失而消失

(4)静态使用的注意事项

    a.静态只能访问静态的成员

   b.非静态静态非静态都可以访问

  c.静态方法中不可以出现this super 这些关键字,因为静态优先于对象存在

(5)静态的利弊端

利:对共享的数据开辟一个单独空间存储,没必要每个都有开辟,节省了内存空间

弊端:生命周期过长,访问的局限性

(6)当有对象共享的数据时,可以定义static变量,当功能内部没有访问到对象的特有数据时,可以定义静态方法

10.主函数

public static void main(String[] args)

11API文档的生产

12.设计模式(单例设计模式)

(1)饿汉式:

class Single {

      private Single(){};//不让创建对象

     private static Single s= new Single();//自己在本类中创建对象

      public  static Single getInstance () {//提供一个公共的访问方法

               return s;

}

}

(2)懒汉式:

class Single   {

              private Single() {};//不让创建对象

             private static Single s;//声明一个Single 的变量

        public static Single getInstance(){

            if(s==null)

            {  s=new Single()       };

         return s;

}

 

}

class SingelDemo {

     public static void main(String[] args) {

      Single s1=Single.getInstance();

     Single s2= Single.getInstance();

System.out.println(s1==s2);

}

}