学习笔记--区分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-12-26大厂数据结构与算法教程:入门级详解
- 2024-12-26大厂算法与数据结构教程:新手入门指南
- 2024-12-26Python编程入门指南
- 2024-12-26数据结构高级教程:新手入门及初级提升指南
- 2024-12-26并查集入门教程:从零开始学会并查集
- 2024-12-26大厂数据结构与算法入门指南
- 2024-12-26大厂算法与数据结构入门教程
- 2024-12-26二叉树入门教程:轻松掌握基础概念与操作
- 2024-12-26初学者指南:轻松掌握链表
- 2024-12-26平衡树入门教程:轻松理解与应用