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

目录
打赏
0
0
0
0
4
分享
相关文章
Java 类和对象
本文介绍了Java编程中类和对象的基础知识,作为面向对象编程(OOP)的核心概念。类是对象的蓝图,定义实体类型;对象是具体实例,包含状态和行为。通过示例展示了如何创建表示汽车的类及其实例,并说明了构造函数、字段和方法的作用。同时,文章还探讨了访问修饰符的使用,强调封装的重要性,如通过getter和setter控制字段访问。最后总结了类与对象的关系及其在Java中的应用,并建议进一步学习继承等概念。
|
12天前
|
理解Java引用数据类型:它们都是对象引用
本文深入探讨了Java中引用数据类型的本质及其相关特性。引用变量存储的是对象的内存地址而非对象本身,类似房子的地址而非房子本身。文章通过实例解析了引用赋值、比较(`==`与`equals()`的区别)以及包装类缓存机制等核心概念。此外,还介绍了Java引用类型的家族,包括类、接口、数组和枚举。理解这些内容有助于开发者避免常见错误,提升对Java内存模型的掌握,为高效编程奠定基础。
43 0
|
12天前
|
java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
24 0
重学Java基础篇—Java对象创建的7种核心方式详解
本文全面解析了Java中对象的创建方式,涵盖基础到高级技术。包括`new关键字`直接实例化、反射机制动态创建、克隆与反序列化复用对象,以及工厂方法和建造者模式等设计模式的应用。同时探讨了Spring IOC容器等框架级创建方式,并对比各类方法的适用场景与优缺点。此外,还深入分析了动态代理、Unsafe类等扩展知识及注意事项。最后总结最佳实践,建议根据业务需求选择合适方式,在灵活性与性能间取得平衡。
80 3
Java对象创建和访问
Java对象创建过程包括类加载检查、内存分配(指针碰撞或空闲列表)、内存初始化、对象头设置及初始化方法执行。访问方式有句柄和直接指针两种,前者稳定但需额外定位,后者速度快。对象创建涉及并发安全、垃圾回收等机制。
Java对象创建和访问
Java中判断一个对象是否是空内容
在 Java 中,不同类型的对象其“空内容”的定义和判断方式各异。对于基本数据类型的包装类,空指对象引用为 null;字符串的空包括 null、长度为 0 或仅含空白字符,可通过 length() 和 trim() 判断;集合类通过 isEmpty() 方法检查是否无元素;数组的空则指引用为 null 或长度为 0。
|
3月前
|
Object取值转java对象
通过本文的介绍,我们了解了几种将 `Object`类型转换为Java对象的方法,包括强制类型转换、使用 `instanceof`检查类型和泛型方法等。此外,还探讨了在集合、反射和序列化等常见场景中的应用。掌握这些方法和技巧,有助于编写更健壮和类型安全的Java代码。
213 17
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
|
3月前
|
java代码优化:判断内聚到实体对象中和构造上下文对象传递参数
通过两个常见的java后端实例场景探讨代码优化,代码不是优化出来的,而是设计出来的,我们永远不可能有专门的时间去做代码优化,优化和设计在平时
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
127 4
Java对象一定分配在堆上吗?