当前位置: 首页 > ai >正文

【Java学习笔记】类与对象

类与对象


什么是类?

知识迁移:类比 C 语言中的结构体

类的描述

类是一个对象的抽象,从字面意思就表示一个类的事物,类具有属性方法(行为)对象是类的一个具体表现

总结:对象抽象对象映射

实例理解:创建一个猫类

对象的引出

由这个类可以映射出不同的猫(对象),当属性方法变化时只需要在类中进行修改就可以映射到不同的类上,这也体现了类的便捷性

小结:类与对象的关系


快速入门

第一种方式:直接创建一个对象

public class hello{public static void main(String[] args){person person1 = new person();  //直接创建}
}
class person{int age;String name;double height;String[] job; //属性既可以基本数据类型,也可以是引用类型
}

第二种方式:先声明一个对象,之后创建

public class hello{public static void main(String[] args){//先声明一个对象,然后创建person person1;person1 = new person();}
}
class person{int age;String name;double height;String[] job; //属性既可以基本数据类型,也可以是引用类型
}

代码解析

person person1 = new person();

在 main 方法中使用 new 创建一个类,用一个数据类型为 person 这个类的一个对象接收

重点:对象在内存中的存在形式

请添加图片描述

分析

  • (1)当还没有创建 cat 这个类并用一个数据类型为 cat 这个类的一个对象接收时,cat 在栈空间中指向空

  • (2)类创建后

    • 1. 在堆空间中分配一段空间,存储类中的成员变量初始值为对应数据类型的默认值,最后把地址返回给 cat,使得cat 指向这个堆空间

    • 2. 在方法区加载类的属性和方法,只会加载一次

    • 3.String 是一个类,当成员变量中有 String 出现时,会把 String 放到方法区中的一个常量池里面,把这个地址返回给堆空间中的 String


类的要素一:属性

概念:成员变量 = 属性 =field(字段)

即成员变量是用来表示属性的

1. 简要提及访问修饰符

2. 使用细节

属性的访问方法:使用类.属性的方式,可以用一个变量接收结果

注意点:如果属性是String类型,即是一个类(引用类型),需要和类一样,需要创建一个对象接收

代码示例

public clas objectexercise{public static void main(String[] args){person person1 = new person();int age = person1.age = 18;double height = person1.height = 1.63;String name = person1.name = "jackson";person1.job = new String[] {"student","programmer"};String[] job = person1.jobSystem.out.println("age: " + age);System.out.println("height: " + height);System.out.println("name: " + name);System.out.print("job: ");for(int i = 0; i < person1.job.length; i++){System.out.print("第" + (i+1) + "份工作是:" + person1.job[i] + " ");}}
}
class person{int age;String name;double height;String[] job; //属性既可以基本数据类型,也可以是引用类型
}//输出结果
age: 18
height: 1.63
name: jackson
job:1份工作是:student 第2份工作是:programmer

深刻理解对象的内存分配机制

过程再回顾

person p = new person()
p.name = "jack"
p.age = 10;

练习一

Person p1 = new Person();
p1.age  = 10;
p1.name = "小明";Person p2 = p1;

P2的属性是否和P1一致?

首先明确一点,类是引用类型,在传值的过程中传的地址,代码中把P1的地址赋给了P2,即P1P2指向同一块堆空间,结果一致

练习二

// Person.java
public class Person {public int age;public String name;
}// Main.java
public class Main {public static void main(String[] args) {Person a = new Person();a.age = 10;a.name = "小明";Person b;b = a;System.out.println(b.name);  // 小明b.age = 200;b = null;System.out.println(a.age);  // 200System.out.println(b.age);  // 会抛出 NullPointerException}
}
http://www.xdnf.cn/news/2416.html

相关文章:

  • 前端零基础入门到上班:【Day8】JavaScript 基础语法入门
  • 【数据可视化-38】基于Plotly得泰坦尼克号数据集的多维度可视化分析
  • 给应用加速:Spring Boot集成缓存 (Caffeine Redis) 实战
  • Maven 依赖范围(Scope)详解
  • Spring Boot中@RequestParam、@RequestBody、@PathVariable的区别与使用
  • Servlet
  • AI如何重塑DDoS防护行业?六大变革与未来展望
  • 可以隐藏列的表格
  • spark 课程总结
  • 影楼精修-皮肤瑕疵祛除算法解析
  • 安卓基础(适配器和RecyclerView )
  • 富文本展示前使用DOMPurify进行文本过滤
  • T 电梯维修作业考试精选题目
  • AI大模型知识与医疗项目实践 - Java架构师面试实战
  • Haply MinVerse触觉3D 鼠标—沉浸式数字操作,助力 3D 设计与仿真
  • DeepSeek系列(10):与其他AI工具协同
  • 自然语言to SQL的评估
  • #苍穹外卖# (day 12)
  • 2025年大一ACM训练-搜索
  • 如何创建并使用极狐GitLab 部署令牌?
  • 特征工程四-1:自定义函数find_similar_docs查找最相似文档案例
  • ts全局导入接口
  • 8.Excel:数据验证和下拉列表
  • C++入门小馆: STL 之queue和stack
  • 图像预处理-形态学变换
  • ESP32-S3 入门学习笔记(四):LED实验
  • shell脚本部署disu博客
  • java当中的类加载器
  • 大模型评测调研报告
  • docker compose -p的踩坑经验