目录
一.面向对象
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.静态和成员
当所有对象拥有相同的属性和值,使用静态变量
当所有对象拥有相同属性不同值(可以相同),使用成员变量