一个初学者的笔记
介绍
我们将不同的类型的变量作为某一个类的成员变量进行调用 包括基本数据类型 引用数据类型
下面我们创建一个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();
}
}
}