一.面向对象介绍
1.1并不是一个技术,而是一种编程指导思想
1.2以什么形式组织代码;以什么思路解决问题
1.3为什么要用面向对象编程:
因为生活中,我们解决问题时,就是采用这种指导思想去解决的。
所以,我们写程序去解决问题时,如果也能采用这种指导思想就会使编程变得非常简单,程序也便于人理解
1.4 面向对象理解伪代码
public class Test{
public static void main(Stringl] args){
老师 t= new 老师(); //找一个老师
试卷 s= t.出题(); //老师出试卷
学生 stu = new 学生(); //找一个学生
stu.考试(s); //学生考试
t.批卷(s); //老师批改试卷
}
}
1.5面向对象,重点学习什么?
一点:学习如何自己设计对象并使用
二点:学习获取已有对象并使用
二.类和对象
2.1 什么是类
类是对现实生活中一类具有共同属性和行为的事物的抽象
2.2 什么是对象
是能够看得到摸的着的真实存在的实体
2.3小结
类是对象的抽象(学生类),对象是类的实体(学生小明)
2.4对象的属性和行为
属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值(手机:品牌,价格,内存)
行为:对象能够执行的操作(手机:打电话,发短信)
三.类的定义
3.1 类是什么:
是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为
3.2类的组成:属性和行为
属性:在类中通过成员变量来体现(类中方法外的变量)
行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
3.3类的定义步骤:
步骤1:定义类 (public class 类名 {})
步骤2:编写类的成员变量 (变量1的数据类型 变量1;)
步骤3:编写类的成员方法 (方法1;)
public class 类名 {
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
…
// 成员方法
方法1;
方法2;
…
}
3.4 类的定义具体案例:
public class Phone {
//成员变量
String brand;
int price;
//成员方法
public void call() {
System.out.println("打电话");
}
public void sendMessage() {
System.out.println("发短信");
}
}
3.5 对象的使用
创建对象
格式:类名 对象名 = new 类名();
范例:Phone p = new Phone();
使用对象
使用成员变量
格式:对象名.变量名
范例:p.brand
使用成员方法
格式:对象名.方法名(参数)
范例:p.call()
对象使用具体案例:
public class PhoneDemo {
public static void main(String[] args) {
//创建对象
Phone p = new Phone();
//使用成员变量
p.brand = "小米";
p.price = 2999;
System.out.println(p.brand);
System.out.println(p.price);
//使用成员方法
p.call();
p.sendMessage();
}
}
四.学生类的定义和使用
需求:定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用
/* 定义一个学生类 */
public class Student {
//成员变量
String name;
int age;
//成员方法
public void study() {
System.out.println("好好学习");
}
public void doHomework() {
System.out.println("多做练习");
}
}
/* 定义一个学生测试类,通过对象完成成员变量和成员方法的使用 */
public class StudentDemo {
public static void main(String[] args) {
//创建对象
Student s = new Student();
//给成员变量赋值
s.name = "林青霞";
s.age = 30;
System.out.println(s.name+","+s.age);
//调用成员方法
s.study();
s.doHomework();
}
}
五.Java 内存分配
Java程序在运行时,需要在内存中分配空间。
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
5.1Java 内存分配
5.2栈和堆
栈(虚拟机栈)
所有局部变量都会在栈内存中创建
局部变量:定义在方法中的变量或者方法声明上的变量
方法执行都会加载到栈中进行
局部变量特点:随着方法的调用而存在,随着方法的调用完毕而消失
代码:Student s = new Student();
堆
所有对象及其对应的实例变量和数组都将存储在此处
简单理解为:new出来的东西,都存储在堆内存
每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
实例变量(成员变量)有初始化值:
基本数据类型:整数:0,浮点数:0.0,布尔:false,字符:空字符
引用数据类型:null
5.3单个对象内存图
5.4多个对象内存图
5.5多个引用指向相同