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

一个初学者的笔记

介绍

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

文章目录

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

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

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

    • 注意

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

    • 整体代码部分

    • 内存图部分

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

1public class Student { 2 //定义私有属性 3 private String name; 4 private int age; 5 6 7 public String getName() { 8 return name; 9 } 10 public void setName(String name) { 11 this.name = name; 12 } 13 public int getAge() { 14 return age; 15 } 16 public void setAge(int age) { 17 this.age = age; 18 } 19 20 21 //无参的构造方法 22 public Student() { 23 super(); 24 } 25 //带参的构造方法 26 public Student(String name, int age) { 27 super(); 28 this.name = name; 29 this.age = age; 30 } 31 32 public void study() { 33 System.out.println("好好学习,天天向上!"); 34 } 35 36 public void showInfo() { 37 System.out.println("姓名-->"+this.name+"\t年龄-->"+this.age); 38 } 39 40} 41 42

再创建一个测试类

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

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

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

mian方法中调用

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

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

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

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

mian方法中调用

1public static void main(String[] args) { 2 System.out.println(test.student);//为null 3 //对象中引用另有一个对象的方法 4 test.student.showInfo();//空指针异常 5 System.out.println(test.student1);//有地址指向 6 //在test对象中调用student类的方法 7 test.student1.showInfo(); 8 test.student1.study(); 9 //带参在test对象中调用student类的方法 10 test.student2.showInfo(); 11 test.student2.study(); 12 13

运行结果–>

1com.it.anli.Student@edf4efb 2姓名-->null 年龄-->0 3好好学习,天天向上! 4姓名-->admin 年龄-->20 5好好学习,天天向上! 6 7

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

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

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

mian方法中调用

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

运行结果–>

1--------数组作为属性-------------- 210 311 412 513 614 7 8

注意

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

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

运行结果–>

1--------没有分配内存空间的new一下就可以了-------------- 2姓名-->王昭君 年龄-->12 35 46 57 68 79 810 911 1012 1113 1214 13 14

接下来接续

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

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

1// 声明一个Student类型的数组作为该类的属性出现,没有分配内存空间null 2 /** 3 * students 能存储什么?只能存储Student类型的对象 4 */ 5 Student students[]; 6 7 // 声明一个Student类型的数组作为该类的属性出现,分配内存空间5个 8 /** 9 * students2[0]....students2[4] 初值都是null 10 */ 11 Student students2[] = new Student[5]; 12 13

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

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

运行结果–>

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

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

整体代码部分

1public class Test { 2 // 一个整形的变量x作为该类的属性出现,初值是0 3 int x; 4 // 一个整形的变量y作为该类的属性出现,初值是100 5 int y = 100; 6 7 // 自定义引用数据类型 8 // 一个Student类形的变量student作为该类的属性出现,初值是null 9 Student student; 10 // 一个Student类形的变量student1作为该类的属性出现分配了内存空间 11 Student student1 = new Student(); 12 // 一个Student类形的变量student2作为该类的属性出现分配了内存空间 13 // 属性赋值带参创建对象 14 Student student2 = new Student("李白", 20); 15 16 // 一个整形数组的变量num1作为该类的属性出现没有分配内存空间 17 // 声明一个整形数组作为该类的属性出现,null 18 // num1 能存储什么?整数 19 int num1[]; 20 // 声明一个整形数组作为该类的属性出现分配了内存空间5 初值都是0 21 int num2[] = new int[5]; 22 23 // 声明一个Student类型的数组作为该类的属性出现,没有分配内存空间null 24 /** 25 * students 能存储什么?只能存储Student类型的对象 26 */ 27 Student students[]; 28 29 // 声明一个Student类型的数组作为该类的属性出现,分配内存空间5个 30 /** 31 * students2[0]....students2[4] 初值都是null 32 */ 33 Student students2[] = new Student[5]; 34 35 public static void main(String[] args) { 36 // 创建对象 37 Test test = new Test(); 38 System.out.println(test.x); 39 System.out.println(test.y); 40 41 System.out.println(test.student);// 为null 42 // 对象中引用另有一个对象的方法 43 // test.student.showInfo();//空指针异常 44 System.out.println(test.student1);// 有地址指向edf4efb 45 46 test.student1.showInfo(); 47 test.student1.study(); 48 49 test.student2.showInfo(); 50 test.student2.study(); 51 52 System.out.println("--------数组作为属性--------------"); 53 // Exception in thread "main" java.lang.NullPointerException 54 // System.out.println(test.num1.length);//空指针异常 55 for (int i = 0; i < test.num2.length; i++) { 56 test.num2[i] = 10 + i; 57 System.out.println(test.num2[i]); 58 59 } 60 System.out.println("--------没有分配内存空间的new一下就可以了--------------"); 61 // 没有分配内存空间的 new一下 62 test.student = new Student(); 63 test.student.setAge(12); 64 test.student.setName("王昭君"); 65 test.student.showInfo(); 66 67 test.num1 = new int[10]; 68 for (int i = 0; i < test.num1.length; i++) { 69 test.num1[i] = 5 + i; 70 System.out.println(test.num1[i]); 71 } 72 73 System.out.println("------对象数组作为该类的属性----------"); 74 for (int i = 0; i < test.students2.length; i++) { 75 System.out.println(test.students2[i]); 76 } 77 System.out.println("----为对象数组分配内存空间(传入内容)----"); 78 for (int i = 0; i < test.students2.length; i++) { 79 test.students2[i] = new Student("李白"+i+"号",10+i); 80 test.students2[i].showInfo(); 81 } 82 } 83} 84 85 86

内存图部分

在这里插入图片描述

代码交流 2021