Java基础对象的创建和使用

简介: Java基础对象的创建和使用
public class OOTest01{
  public static void main(String[] args){
    //int是基本数据类型
    //i是一个变量名
    //10是一个int类型的字面值
    int i = 10;
    //通过一个类可以实例化N个对象
    //实例化对象的语法:new 类名();
    //new 是java语言当中的一个运算符
    //new运算符的作用是创建对象,在JVM堆内存当中开辟新的内存空间
    //方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间中。
    //栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈
    //堆内存:new的对象在堆内存存储
    //Student是一个引用数据类型
    //s是一个变量名,局部变量,在栈内存中存储
    //new Student()是一个学生对象
    //什么是对象?new 运算符在堆内存中开辟的内存空间称为对象
    //什么是引用?引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址
    //java语言当中,程序员只能通过“引用”去访问堆内存当中对象内部的实例变量
    Student s = new Student();
    //访问实例变量的语法格式:
    // 读取数据:引用.变量名
    // 修改数据:引用.变量名 = 值
    int stuNo = s.no;
    String stuName = s.name;
    int stuAge = s.age;
    boolean stuSex = s.sex;
    String stuAddress = s.address;
    System.out.println("学生学号为:" + stuNo.no);//0
    System.out.println("学生姓名为:" + stuName.name);//null
    System.out.println("学生性别为:" + stuAge.sex);//false
    System.out.println("学生年龄为:" + stuSex.age);//0
    System.out.println("学生地址为:" + stuAddreee.address);//null
    s.no = 10;
    s.name = "张三";
    s.sex = true;
    s.age = 20;
    s.address = "美国纽约";
    System.out.println("学生学号为:" + s.no);
    System.out.println("学生姓名为:" + s.name);
    System.out.println("学生性别为:" + s.sex);
    System.out.println("学生年龄为:" + s.age);
    System.out.println("学生地址为:" + s.address);
    //在通过类实例化一个全新的对象
    //stu是一个引用
    //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.address);//null
    //编译报错,no这个实例变量不能直接采用“类名”的方式访问
    //因为no是实例变量,对象级别的变量,变量存储在java对象的内部,必须先有对象
    //通过对象才能访问no这个实例变量,不能直接通过“类名”访问
    System.out.println("学生地址为:" + Student.address);
  }
  /*
     局部变量在栈内存中存储
     成员变量中的实例变量在堆内存的java对象内部存储
     实例变量是一个对象一份,100个对象有100份。
  */
}


内存分析图:


0a2653c851af460fa595bd959398a8f1.png

相关文章
|
3天前
|
存储 Java 程序员
优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
|
23天前
|
缓存 前端开发 Java
【前端学java】复习巩固-Java中的对象比较(15)
【8月更文挑战第11天】Java中的对象比较
25 1
【前端学java】复习巩固-Java中的对象比较(15)
|
10天前
|
存储 Java
Java编程中的对象序列化与反序列化
【8月更文挑战第28天】在Java世界中,对象序列化与反序列化是数据持久化和网络传输的关键技术。本文将深入浅出地探讨这一过程,带你领略其背后的原理及应用,让你的程序在数据的海洋中自由航行。
|
11天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用与挑战Java编程中的对象和类:基础与实践
【8月更文挑战第27天】随着人工智能(AI)技术的飞速发展,其在医疗领域的应用日益广泛。本文深入探讨了AI技术在医疗诊断中的具体应用案例,包括图像识别、疾病预测和药物研发等方面,并分析了当前面临的主要挑战,如数据隐私、算法偏见和法规限制等。文章旨在为读者提供一个全面的视角,理解AI在改善医疗服务质量方面的潜力及其局限性。
|
16天前
|
搜索推荐 Java
揭秘Java多态背后的奥秘,探索对象们是如何做到“千人千面”的
揭秘Java多态背后的奥秘,探索对象们是如何做到“千人千面”的
32 3
|
15天前
|
存储 Java 索引
如何在 Java 中创建类对象的 Arraylist?
【8月更文挑战第23天】
24 1
|
15天前
|
存储 Java 数据格式
|
22天前
|
Java API 开发者
|
5天前
|
存储 Java
Java编程中的对象序列化与反序列化
【9月更文挑战第2天】在Java的世界里,对象序列化和反序列化就像是给数据穿上了一件隐形的斗篷。它们让数据能够轻松地穿梭于不同的系统之间,无论是跨越网络还是存储在磁盘上。本文将揭开这层神秘的面纱,带你领略序列化和反序列化的魔法,并展示如何通过代码示例来施展这一魔法。
8 0
|
7天前
|
存储 Java
Java编程中的对象和类
在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章【8月更文挑战第31天】 将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
下一篇
DDNS