javaSE-类与对象-构造器-this关键字-static关键字

一.面向对象

1.1概述

面向对象(Object Oriented)是一种思想,将数据和方法作为整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

1.2面向过程和面向对象

面向过程

侧重步骤

面向对象

侧重模块(炒饭和盖饭)

优点:维护简单,可拓展性,可重用性,降低耦合

1.3类和对象的区别

类是某一类对象的抽象,对象才是一个具体的实体.比如人就是一个类,那张三这个人就是对象,是一个具体的实体

类就是一种数据结构,而对象是某种类型的数据结构在内存中的具体表示

类定义标准和模板,而对象就是符合这个标准的个体

什么时候使用静态变量,什么时候使用成员变量

​ 静态变量是类级别的,对象无关,是所有对象都一致的

​ 成员变量是对象级别的

1.4实例化过程/创建对象的过程

1 对应类加载入静态区

2 new 堆内存创建内存空间,把类中的成员属性放到内存空间中

3 执行构造方法,对堆内存空间中的属性初始化,执行完弹栈

4 把堆内存地址返回调用处

每个对象空间分为3块

​ 1 数据区域 成员变量

​ 2 头部 hash值

​ 3 类型: 静态区类文件的空间引用

1.5 对象的使用和特征

JVM特性

跨平台,多线程,自动垃圾回收,面向对象

垃圾:没有更多的引用指向

面向对象特性

继承性,封装性,多态性,抽象

对象的使用方法

1 创建对象

语法: 类名 对象名 = new 类名();

2 调用对象的属性和方法

语法: 对象名.属性名 对象名.方法名

1.6常见异常

空指针异常

空指针是运行时异常,编译是不报错,一般因为程序员粗心导致

System.out.println();中谁可能报空指针异常

分析:

System是类,不会报空指针异常,println()是方法不会报,所有只有可能是out是空

1.7 javaBean

javaBean就是实体类

一个标准的javaBean包含

一个无参的构造方法,私有的成员变量,set和get方法,且必须是一个公共类

二.构造方法

2.1概述

编译器的功能:

​ 把java文件编译成.class文件

​ 简称语法结构是否合法

​ 帮我们把不规范的代码补全

构造方法:

​ 语法: [权限修饰符] 类名(参数列表){方法体}

​ 作用:创建当前类的实例化对象,并初始化成员属性

注意:如果我们没有定义构造方法则默认有一个公共的无参构造(public 类名(){})一旦我们指定了构造方法,则默认的无参构造就没有了,所以一般我们需要指定构造方法的时候,要需要写一个无参构造

构造方法重载

​ 可以根据需求,编写多个构造方法,方法名相同,参数列表不同(类型,数量)

2.2构造方法和普通方法

构造和成员方法同名,因为构造方法没有返回值类型

三.this关键字

this是每个对象中保存自身内存地址的一个引用类型的成员变量

this就表示这个对象

只能出现在成员方法和构造方法中,不能出现在静态方法中

作用:

​ 1.用在成员方法/构造方法中,用来区分同名的成员变量和局部变量, this.xxx

​ 区分静态变量和局部变量:类名

​ 区分成员变量和局部变量:this

​ 2.用在构造方法中,重载调用当前类的其他构造方法

​ this(参数); 必须写在构造方法的第一行

​ 例子:

class MyDate{
    int year;
    int month;
    int day;
    public Mydate(){
        this.(year,month,day)
    }
    public MydateI(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
}

注意:谁调用的这个方法.这个this就是谁,this是个成员变量

四.static

作用:区别静态和成员的一个修饰符关键字

static修饰符

​ 1类体中使用static修饰的变量是静态变量

​ 2类体中使用static修饰的方法是静态方法

​ 3类体中使用static修饰的语句块是静态语句块

静态变量和静态语句块都是类加载阶段进行初始化和执行,而main方法是加载完之后,进入运行时,才会执行

1.静态变量

static int age = 10;

2.静态方法

public static void m1(){
    //code
}

3.静态语句块

static {
    //code
}

没有名字,自动执行,并且只执行一次,不能手动调用

执行时机:类加载时

作用:初始化工作

注意:静态代码块是在main方法执行之前就执行了

4.实例语句块

{
    //code
}

没有名字,自动执行,new一次执行一次,不能手动调用

执行时机:创建对象的时候执行

作用:初始化工作

由于有了构造方法,所以实例语句块使用的比较少

5.类加载

类什么时候会被加载到jvm中

访问一个类的静态属性的时候会把该类加载到内存中

(每一个类中其实都有一个静态方法,那就是构造方法,构造方法具有二重性,具有静态性和成员性)

6.静态和成员

当所有对象拥有相同的属性和值,使用静态变量

当所有对象拥有相同属性不同值(可以相同),使用成员变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Antgeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值