学习笔记--区分Java中类与对象
2022/2/2 14:12:35
本文主要是介绍学习笔记--区分Java中类与对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
区分Java中类与对象
你能接受 String
吗?
如果能,以下内容可进行类比
- 编写
User
类
public class User{ // 用户编号 // int 是一种基础数据类型 // id 是一个实例变量 int id; // 用户名 // String 是一种引用数据类型 // name 是一个实例变量 // name 是一个引用 String name; // 家庭住址 // Address 是一种引用数据类型 // addr 是一种实例变量 // addr 是一个实例变量 Address addr; }
- 编写
Address
类
public class Address{ // 以下也都是是实例变量 // 城市 String city; // 街道 String street; // 邮编 String zipcode; }
- 测试类
public class OOTest02{ public static void main(String[] args){ // 创建一个User对象,或者说是User的实例 // 数据类型 变量名 = new 类(); // u 是一个局部变量 // u 保存的内存地址指向堆内存的User对象,或者说是User的实例 User u = new User(); // 输出User对象中的实例变量的值 System.out.println(u.id); // 0 System.out.println(u.name); // null System.out.println(u.addr); // null // 修改User对象内部实例变量的值 u.no = 110; // "jack" 是一个Java对象,u.name 保存的内存地址指向堆内存的String对象 u.name = "jack"; //u.addr 保存的内存地址指向堆内存的Address对象 u.addr = new Address(); // 目前在main方法当中只能看到一个引用 "u" // 一切都是只能通过u进行访问 System.out.println(u.name + "居住在哪个城市:" + u.addr.city); System.out.println(u.name + "居住在哪个街道:" + u.addr.street); System.out.println(u.name + "的邮编:" + u.addr.zipcode); // 修改类似上面 u.addr.city = "成都"; u.addr.street = "XXX"; } }
-
另一个测试类
强调:引用时,变量中保存的只是【实例/对象】的内存地址
public class OOtest03{ // u 是引用 // u 是局部变量 User u = new User(); // 在 OOTest 中编写的是 // u.addr = new Address() // a 是引用 // a 是局部变量 Address a = new Address(); // a 保存的内存地址指向堆内存的Address对象 u.addr = a; // 将 a 中保存的 内存地址 赋值给 u.addr // 注意:下面两个 System.out.println(u.addr.city); System.out.println(u.addr.city); // null a.city = "成都"; System.out.println(u.addr.city); }
注意:实例变量不能直接通过类名访问,需要通过实例或者说对象进行访问
类和类
- 先写两个类
// 丈夫类 public class Husband{ // 名字 String name; // 丈夫对象当中含有妻子引用 Wife w; }
// 妻子类 public class Wife{ // 名字 String name; // 妻子对象当中含有丈夫引用 Huband h; }
- 测试类
public class OOTest04{ public static void main(String[] args){ // 创建一个丈夫对象 Husband boy = new Husband(); boy.name = "jock"; // 创建一个妻子对象 Wife girl = new Wife(); girl.name = "rose"; // 建立两个对象的关系【关联关系】:A has a B; A中含有B的引用 boy.w = girl; girl.h = boy; //得到 boy 都妻子名称 //区分以下两句 System.out.println(boy.name + "妻子的名称:" + girl.name); // girl.name 是 girl 的名称,不符合题 System.out.println(boy.name + "妻子的名称:" + boy.w.name); // boy.w.name 是 boy 妻子的名称,符合题 // 如果没有建立两个对象的关系上面两句是 不同的 } }
空引用异常
// 工人类 public class Worker{ // 工号 int id; }
测试程序
public class OOTest05{ public static void main(String[] args){ Worker c = new Wocker(); System.out.println(c.id); // 0 没有赋值,所以是默认值 c = null; // 以下程序可以编译通过,因为符合语法 // 运行会出现空指针异常 // 空引用访问 “实例” 相关的数据 一定会出现空指针异常 // java.lang.NullPointerException System.out.println(c.id); } }
这篇关于学习笔记--区分Java中类与对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)