太原理工大学机器人团队20天学习打卡day11
今天的内容算是java基础中最难的了,用了很多时间来理解,所以笔记比较少 继续努力!!!
1、类的定义
语法结构
[修饰符列表] class 类名{
}
例如:
学生类,描述所有学生对象的共同特征
- 学生对象有哪些状态信息【是一种属性,是一个数据,是数据就有数据类型】
- 学号【int】
- 姓名【String】
- 性别【boolean】
- 年龄【int]
- 学生对象有哪些动作信息
- 吃饭,睡觉,学习……
重点:属性通常是采用一个变量的形式完成定义的
例如:
//定义一个类,类名Student
//Student是一个类,代表了所有的学生对象。是一个学生模板
public class Student{
//属性【描述的是对象的状态信息】
//属性通常采用变量的方式来定义
//在类体当中,方法体之外定义的变量被称为“成员变量”
//成员变量没有赋值,系统赋默认值:一切向零看齐
//学号
int no;
//姓名
String name;
//性别
boolean sex;
//地址
String adder;
//方法
//方法描述的是对象的动作信息
}
java语言中所有的class都属于引用数据类型
例如String.class只不过个是sun写的,而这个Student.class是程序员自定义的,本质上没有区别
引用数据类型的默认值为null【空值】
2、对象的创建和使用
- 在上例中所有学生都有学号信息,但是每一个学生的学号都是不一样的,所以要访问这个学号必须先创建变量,通过对象去访问学号信息,学号信息不能直接通过类去访问,所以这种成员变量又叫做==实例变量
- 对象又被称为实例,实例变量又被称为对象变量【对象级别的变量】
- 不创建对象,这个no变量的内存空间是不存在的,只有创建了对象,这个no变量的内存空间才会创建
实例化对象的语法:new 类名();
new是java语言当中的一个运算符,作用是创建对象,在JVM堆内存中开辟新的内存空间
方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中。
栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈
堆内存:new的对象在堆内存中存储
什么是对象:
new运算符在堆内存中开辟的内存空间
什么是引用
引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址
java语言当中,程序员不能直接操作堆内存,java中没有指针,不像c语言
java语言中程序员只能通过引用去访问堆内存当中对象内部的实例变量
public class OOTest01
{
public static void main(String[] args){
//通过一个类可以实例化N个对象
int i = 10;
//Student是一个引用数据类型
//s是一个变量名
//new Student()是一个学生对象
//s是一个局部变量
Student s = new Student;
//访问实例变量的语法格式
// 读取数据:引用.变量名
// 引用数据:引用.变量名=值
int stuNo = s.no;
String stuName = s.name;
int stuAge = s.age;
boolean stsex = s.sex
System.out.println("学号 = " + stuNo);//0
System.out.println("姓名 = " + stuName);//null
System.out.println("年龄 = " + stuAge);//0
System.out.println("性别 = " + stuSex);//false
System.out.println("住址 = " + stuAdder);//null
//编译报错,no是这个实例变量不能直接采用“类名”的方式访问
//因为no是实例变量,对象级别的变量,变量储存在java对象的内部,必须先有对象
//通过对象才能访问no这个实例变量,不能直接通过“类名”访问
//System.out.println(Student.no);
}
}
局部变量在栈内存中存储
成员变量中的实例变量在堆内存的java对象内部储存
实例变量是一个对象一份,100个对象100份