oop
oop 面向对象编程 编程方式 面向对象和面向过程的思维 1 面向过程是一种执行者的思维,简单的问题可以使用面向过程 2 面向对象是一种设计者的思维,解决复杂,需要协作的问题可以使用面向对象 3 宏观上:通过面向对象进行整体设计,微观上:执行和处理数据使用面向过程
类和对象
类:class 看做是一个模板,系统根据类来定义造出对象,是静态的, 对象:object 对象是类的实例,就是类的具体是实现,是动态的, -- 类中的三个成员 属性field 方法method 构造器 constrctor 注意构造器是用于对象的初始化,不是创建对象! 创建对象的步骤 1 分配对象空间,对成员变量进行初始化,2 执行属性的显示初始化 3 执行构造函数 4 返回对象的地址给相关变量 构造器四要素:1 构造器要通过new关键字调用! 2 构造器返回类型是本类型 不能使用reture 3 编译器会自动给一个类定义一个无参构造器 4构造器名字和类名一样 jvm 组成 栈 程序计数器 线程都享, 堆 方法区 元空间 1 栈 是用来执行方法的地方,每一个方法调用都会创建一个栈,每一个线程都会创建一个栈,栈属于线程私有, 2 堆 用来存储创建好的对象和数组,只有一个堆,被所有线程共享,分代算法 垃圾回收工作区 3 方法区就是元空间 存放类的相关信息,静态变量,字符串常量, 垃圾回收器 1 发现无用对象 2 回收无用对象释放空间 无用对象就是没有任何变量引用改变量, 垃圾回收器的算法: 1 引用计数法 2 分代回收
this
-this的本质就是 指向当前对象地址 1 在方法中this指向的调用该方法的对象 2 在构造器中this指向正要初始化的对象 3 this()方法是调用构造器的,只能在构造器中使用,必须位于方法第一位, 4 this执行变量时只能是指向成员变量,不能指向静态static变量, 所有一般可以用来区分成员和参数的变量,
static
- static 可以修饰变量和方法 代表是属于类的 - 生命周期和类相同! 是类的公用变量或是公用方法,被类的所有实例共享, - static 只有一份 - 在static中不能访问非static成员 - 静态初始化块 用于类的初始化,构造器是对象的初始化 - 先执行静态语句在执行成员变量
final关键字
final 修饰变量 不可变固定 修饰方法 不能被子类重写 修饰类后不能被继承
继承和组合
1 extends 继承 java中类只有单继承 接口是多继承,
子类继承父类后可以得到父类中的全部属性和方法(构造器除外)注意私有属性和方法不能访问,
2 组合 就是父类对象被子类属性引用,结婚就是组合可以复用对方的属性和方法
=============
public class Test {
public static void main(String[] args) {
Sanwa sanwa = new Sanwa();
System.out.println(sanwa.dawa.name);
System.out.println(sanwa.dawa.getName());
System.out.println(sanwa.erwa.name);
System.out.println(sanwa.erwa.getName());
}
}
class Dawa{
public String name = "大娃";
public String getName(){
return this.name+"吐火!";
}
}
class Erwa{
public String name = "二娃";
public String getName(){
return this.name+"吐水!";
}
}
class Sanwa{
Dawa dawa = new Dawa();
Erwa erwa = new Erwa();
}
== 和equals()
- "==" 表示比较双方是否相同,基本类型是比较值,引用类型是比较地址相同就是相同 - equals 表示提供定义对象内容相等的逻辑,判断内容是否相同是根据hashcode值是否相同
String
- String 就是将char串起来 统一使用, - String类是不可变字符序列 这类是final修饰的 一旦赋值之后就不能更改,字符串有缓存池,是可以共享 - 连接符 + - String buffer 线程安全 可变字符序列 可以修改 - String joiner 可以添加前缀后缀和间隔



