java中不同类型的变量作为类的属性出现

这篇博客是初学者的笔记,详细介绍了如何在Java中将不同类型的变量作为类的属性使用,包括基本数据类型、自定义数据类型(无参和带参构造函数)、整型数组和对象数组。通过示例代码和内存图,解释了如何初始化和调用这些属性,并强调了未分配内存空间的属性如何使用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个初学者的笔记

介绍

我们将不同的类型的变量作为某一个类的成员变量进行调用 包括基本数据类型 引用数据类型


下面我们创建一个student类
包含study showInfo 两个方法

public class Student {
	//定义私有属性
	private String name;
	private int age;
	
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
	//无参的构造方法
	public Student() {
		super();
	}
	//带参的构造方法
	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
	public void study() {
		System.out.println("好好学习,天天向上!");
	}
	
	public void showInfo() {
		System.out.println("姓名-->"+this.name+"\t年龄-->"+this.age);
	}
	
}

再创建一个测试类

接下来我们来测试不同类型的变量作为该测试类的成员变量出现

1.首先是基本数据类型作为该类的属性

public class Test {
	//一个整形的变量x作为该类的属性出现,初值是0
	int x;
	//一个整形的变量y作为该类的属性出现,初值是100
	int y = 100;

mian方法中调用

public static void main(String[] args) {
		//创建对象
		Test test = new Test();
		System.out.println(test.x);//0
		System.out.println(test.y);//100

2.自定义数据类型作为该类的属性 (无参带参两种情况)

我们刚建的student类 也就是自定义数据类型作为该类的属性 (无参带参两种情况)
一个Student类形的变量student作为该类的属性出现,初值是null

public class Test {
//自定义引用数据类型
	//自定义引用数据类型
	//一个Student类形的变量student作为该类的属性出现,初值是null
	Student student;
	//一个Student类形的变量student1作为该类的属性出现分配了内存空间
	Student student1 = new Student();
	//一个Student类形的变量student2作为该类的属性出现分配了内存空间
	
	//属性赋值带参创建对象	
	Student student2 = new Student("admin",20);

mian方法中调用

public static void main(String[] args) {
		System.out.println(test.student);//为null
		//对象中引用另有一个对象的方法
		test.student.showInfo();//空指针异常
		System.out.println(test.student1);//有地址指向
		//在test对象中调用student类的方法
		test.student1.showInfo();
		test.student1.study();
		//带参在test对象中调用student类的方法
		test.student2.showInfo();
		test.student2.study();

运行结果–>

com.it.anli.Student@edf4efb
姓名-->null	年龄-->0
好好学习,天天向上!
姓名-->admin	年龄-->20
好好学习,天天向上!

3.整形数组作为该类的属性

一个整形数组的变量num1作为该类的属性出现没有分配内存空间

public class Test {
//一个整形数组的变量num1作为该类的属性出现没有分配内存空间
	//声明一个整形数组作为该类的属性出现,null
	//num1 能存储什么?整数
	int num1[];
	//声明一个整形数组作为该类的属性出现分配了内存空间5 初值都是0
	int num2[] = new int[5];

mian方法中调用

public static void main(String[] args) {
System.out.println("--------数组作为属性--------------");
		//Exception in thread "main" java.lang.NullPointerException
		//System.out.println(test.num1.length);//空指针异常
		for (int i = 0; i < test.num2.length; i++) {
			test.num2[i] = 10+i;
			System.out.println(test.num2[i]);
			
		}

运行结果–>

--------数组作为属性--------------
10
11
12
13
14

注意

像上面定义的属性中 student num1 这种开始没有在堆中分配内存空间的怎么去用
方法如下

System.out.println("--------没有分配内存空间的new一下就可以了--------------");
		//没有分配内存空间的 new一下
		test.student = new Student();
		test.student.setAge(12);
		test.student.setName("王昭君");
		test.student.showInfo();
		
		test.num1 = new int[10];
		for (int i = 0; i < test.num1.length; i++) {
			test.num1[i] = 5+i;
			System.out.println(test.num1[i]);
		}

运行结果–>

--------没有分配内存空间的new一下就可以了--------------
姓名-->王昭君	年龄-->12
5
6
7
8
9
10
11
12
13
14

接下来接续

4.对象数组作为该类的属性

类比数组
students对象数组 能存储什么?只能存储Student类型的对象

// 声明一个Student类型的数组作为该类的属性出现,没有分配内存空间null
	/**
	 * students 能存储什么?只能存储Student类型的对象
	 */
	Student students[];

	// 声明一个Student类型的数组作为该类的属性出现,分配内存空间5个
	/**
	 * students2[0]....students2[4] 初值都是null
	 */
	Student students2[] = new Student[5];

检测一下
那我们如何去用呢 跟上面的类似 new一下就行了

System.out.println("------对象数组作为该类的属性----------");
		for (int i = 0; i < test.students2.length; i++) {
			System.out.println(test.students2[i]);
		}
System.out.println("----为对象数组分配内存空间(传入内容)----");
		for (int i = 0; i < test.students2.length; i++) {
			test.students2[i] = new Student("李白"+i+"号",10+i);
			test.students2[i].showInfo();
		}

运行结果–>

------对象数组作为该类的属性----------
null
null
null
null
null
----为对象数组分配内存空间(传入内容)----
姓名-->李白0号	年龄-->10
姓名-->李白1号	年龄-->11
姓名-->李白2号	年龄-->12
姓名-->李白3号	年龄-->13
姓名-->李白4号	年龄-->14

好了基本就是这些后续还学到还会添加

整体代码部分

public class Test {
	// 一个整形的变量x作为该类的属性出现,初值是0
	int x;
	// 一个整形的变量y作为该类的属性出现,初值是100
	int y = 100;

	// 自定义引用数据类型
	// 一个Student类形的变量student作为该类的属性出现,初值是null
	Student student;
	// 一个Student类形的变量student1作为该类的属性出现分配了内存空间
	Student student1 = new Student();
	// 一个Student类形的变量student2作为该类的属性出现分配了内存空间
	// 属性赋值带参创建对象
	Student student2 = new Student("李白", 20);

	// 一个整形数组的变量num1作为该类的属性出现没有分配内存空间
	// 声明一个整形数组作为该类的属性出现,null
	// num1 能存储什么?整数
	int num1[];
	// 声明一个整形数组作为该类的属性出现分配了内存空间5 初值都是0
	int num2[] = new int[5];

	// 声明一个Student类型的数组作为该类的属性出现,没有分配内存空间null
	/**
	 * students 能存储什么?只能存储Student类型的对象
	 */
	Student students[];

	// 声明一个Student类型的数组作为该类的属性出现,分配内存空间5个
	/**
	 * students2[0]....students2[4] 初值都是null
	 */
	Student students2[] = new Student[5];

	public static void main(String[] args) {
		// 创建对象
		Test test = new Test();
		System.out.println(test.x);
		System.out.println(test.y);

		System.out.println(test.student);// 为null
		// 对象中引用另有一个对象的方法
		// test.student.showInfo();//空指针异常
		System.out.println(test.student1);// 有地址指向edf4efb

		test.student1.showInfo();
		test.student1.study();

		test.student2.showInfo();
		test.student2.study();

		System.out.println("--------数组作为属性--------------");
		// Exception in thread "main" java.lang.NullPointerException
		// System.out.println(test.num1.length);//空指针异常
		for (int i = 0; i < test.num2.length; i++) {
			test.num2[i] = 10 + i;
			System.out.println(test.num2[i]);

		}
		System.out.println("--------没有分配内存空间的new一下就可以了--------------");
		// 没有分配内存空间的 new一下
		test.student = new Student();
		test.student.setAge(12);
		test.student.setName("王昭君");
		test.student.showInfo();

		test.num1 = new int[10];
		for (int i = 0; i < test.num1.length; i++) {
			test.num1[i] = 5 + i;
			System.out.println(test.num1[i]);
		}
		
		System.out.println("------对象数组作为该类的属性----------");
		for (int i = 0; i < test.students2.length; i++) {
			System.out.println(test.students2[i]);
		}
		System.out.println("----为对象数组分配内存空间(传入内容)----");
		for (int i = 0; i < test.students2.length; i++) {
			test.students2[i] = new Student("李白"+i+"号",10+i);
			test.students2[i].showInfo();
		}
	}
}

内存图部分

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值