小白的20天Java学习打卡day11

太原理工大学机器人团队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份

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

waitin丶

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值