Java中对象的创建和使用

本文介绍了Java中的类、对象创建、成员变量(实例变量)的概念,以及它们在栈内存和堆内存中的存储位置。通过实例演示了如何通过引用访问实例变量和编译错误的示例。
摘要由CSDN通过智能技术生成

创建类

类体=属性+方法

 public class Student{

    Student是类,属于引用数据类型,这个类型名就是:student

   //属性【存储数据采用变量的形式】

   //由于变量定义在类体当中,方法体之外,这种变量称为成员变量

  //所有的学生都有学号信息,但是每一个学生的学号都是不同的

  //所以要访问这个学号必须先创建对象,通过对象去访问学号信息

  //学号信息不能直接通过“类”去访问,所以这种成员变量又叫做:实例变量

  //对象又被称为实例,实例变量又被称为对象变量【对象级别的变量】

  //不创建对象,变量的内存空间是不存在的,只有创建了对象,变量的内存空间才会创建

  int no;

  String name;

  boolean age;

  String addr;

}

使用类

  public class OOTest01{

     public static void main(String[] args){

         //int是基本数据类型

         //i是一个变量名

         //10是一个int类型的字面值

         int i=10;

        //通过一个类可以实例化N个对象

       //实例化对象的语法:new 类名();

      //new运算符的作用是创建对象,在JVM堆内存当中开辟新的内存空间

     //方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中

    //栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈

   //堆内存:new的对象在堆内存中存储

   //Student是一个引用数据类型

   //s是一个变量名

   //new Student()是一个学生对象

   //s是一个局部变量【在栈内存中存储】

   //什么是对象?new运算符在堆内存中开辟的内存空间称为对象

   //什么是引用?引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址

  //java语言当中,程序员不能直接操作堆内存,java中没有指针,不想C语言

  //java语言当中,程序员只能通过“引用”去访问堆内存当中对象内部的实例变量

  Student s=new Student();

  //访问实例变量的语法格式:

      读取数据: 引用.变量名

      修改数据: 引用.变量名=值

 

  int stuNo = s.no;

  String stuName = s.name;

  int stuAge = s.age;

  boolean stuSex = s.sex;

  String stuAddr = s.addr;

 

   System.out.println("学号="+stuNo);   //0

   System.out.println("姓名="+stuName); //null

   System.out.println("年龄="+stuAge); //0

   System.out.println("性别="+stuSex);  //false

   System.out.println("住址="+stuAddr); //null

  

   s.no = 10;

   s.name = "jack";

   s.age = 20;

   s.sex = true;

   s.addr = "北京";

  

   System.out.println("学号 =”+s.no);  //10

   System.out.println("姓名="+stuName); //jack

   System.out.println("年龄="+stuAge); //20

   System.out.println("性别="+stuSex); //true

   System.out.println("住址="+stuAddr); 北京

  

    //再通过类实例化一个全新对象

   //stu是一个引用,同时也是一个局部变量

   //Student是变量的数据类型

   Student stu = new Student();

   System.out.println(stu.no);  //0

   System.out.println(stu.name);   //null

   System.out.println(stu.sex);  //false

   System.out.println(stu.age);  //0

   System.out.println(stu.addr); //null

  

    //编译报错,no这个实例变量不能直接采用“类名”的方式访问,因为no是实例变量,对象级别的变量,变量存储在java对象的内部,必须先有对象,通过对象才能访问no这个实例变量,不能直接通过“类名”访问

   System.out.println(Student.no);

  }

}

 局部变量在栈内存中存储

 成员变量中的实例变量在堆内存的java对象内部存储

  实例变量是一个对象一份,100个对象100份

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值