18.对象的创建与使用

这篇博客介绍了Java中如何通过new关键字实例化对象,并详细解释了对象的内存分配、引用变量与堆内存的关系以及如何通过引用访问和修改对象的成员变量。示例展示了在主函数中创建Student对象,初始化并打印其变量值,以及在OOTest2和OOTest3中涉及的类的嵌套和对象关联的操作。
摘要由CSDN通过智能技术生成

通过一个类可以实例化N个对象

实例化对象的语法结构:new 类名()

new是java中的一个运算符,它的作用是创建对象

 new运算符在堆内存开辟的内存空间称为对象                                                                                 引用是一个变量,它保存了对象的内存地址

java语言中,程序员不可以直接操作堆内存,必须通过引用来操作堆内存中对象的实例变量           java语言中,没有指针

public class OOTest1{
	public static void main(String[] args){
		Student s =new Student();  
		/*定义一个对象 这里的Student属于引用数据类型 与String类似
		new运算符的作用就是创建对象
		new Student() 这个操作是创建一个对象,堆内存中将为这个对象开辟内存空间
		s并不是一个对象 s是一个引用  s这个变量在栈内存中存储,s是一个局部变量
		“=”将堆内存中对象的地址赋值给栈内存中的s
		*/
		int a = s.no;
		int b = s.age;
		String c = s.name;
		String d = s.addr;
		boolean e = s.sex;
		/*
		以上这里是对对象中的变量的访问
		读取数据:引用.变量名    例如 s.no    s.age 等等
		*/
		//以下将访问到的对象中的变量打印输出 因为没有赋初值 所以会输出默认值
		System.out.println(a); // 0
		System.out.println(b); // 0 
		System.out.println(c); // null
		System.out.println(d); // null
		System.out.println(e); // false
		
		System.out.println("*******************************************************");
		
	    a=s.no=20187088;
		b=s.age=21;
		c=s.name="lele";
		d=s.addr="河北秦皇岛";
		e=s.sex=true;
		/*
		以上就是对对象中的变量进行修改  语法格式为   引用.变量名=值  例如 s.no=20187088;
		*/
		System.out.println(a); // 20187088
		System.out.println(b); // 21
		System.out.println(c); // lele
		System.out.println(d); // 河北秦皇岛
		System.out.println(e); // true
	}
}

class Student{   //定义一个类 为整体学生的类
	int no;   // 定义学生的学号
	int age;  // 定义学生的年龄
	String name; // 定义学生的名字
	String addr; // 定义学生的地址
	boolean sex; // 定义学生的性别
	/*
	以上为学生这个类的状态信息
	no age name addr sex 这些变量不可以通过类直接进行访问
	需要通过我们创建的对象来进行访问
	
	这里的no age name sex addr这些变量是在类体中定义的
	它们都属于成员变量,没有赋值的话,系统会给它们赋默认值
	*/
}

public class OOTest2{
	public static void main(String[] args){
		user u=new user(); //定义一个user对象
		int a = u.no;
		String b = u.name;
		address c = u.addr;
		System.out.println(a);  // 0
		System.out.println(b);  // null
		System.out.println(c);  // null
		
		u.addr = new address(); //类中有类,需要先给里层的类创建一个对象
		String d = u.addr.city;
		System.out.println(d);  //null
		
		u.no = 20187088;
		u.name = "lele";
		u.addr.city = "河北";
		u.addr.street = "张家口";
		u.addr.zipcode = 76550;
		System.out.println(u.no);  //20187088
		System.out.println(u.name); //lele
		System.out.println(u.addr.city);  // 河北
		System.out.println(u.addr.street); //张家口
		System.out.println(u.addr.zipcode); //76550
	}
}
class user{   //定义一个user用户类
	int no;
	String name;
	address addr;  //在user类中引用地址类
}
class address{   //定义一个地址类
	String city;
	String street;
	int zipcode;
}

关联的信息:

public class OOTest3{
	public static void main(String[] args){
		husband li = new husband();
		wife hou = new wife();
		li.w = hou;  // 丈夫与妻子关联
		hou.h = li;  //妻子与丈夫关联
		hou.name = "hhha";  
		System.out.println(li.w.name);  //通过丈夫找到妻子
	}
	static class husband{   //定义一个丈夫类
		String name;
		wife w;
	}
	static class wife{   //定义一个妻子类
		String name;
		husband h;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值