JAVA中数据类型的划分
JAVA中所有的数据分为两种类型
1.基本数据类型:四类八种 byte short int long float double char boolean
基本数据类型也称为 值类型
这种类型的变量或数组中存储的就是我们想要的数据本身
值类型对应为直接访问
2.引用数据类型:这种类型中存储不是我们想要的数据而是一个地址【对象才有地址】,因此引用数据类型也称为对象类型
对于数组来说,所有引用类型的元素默认为null【空地址】
// 创建一个学生类型的对象数组
Student[] students = new Student[3];
// students[0].name="张三";
//
// System.out.println(students[0].name);
//
Scanner input = new Scanner(System.in);
for (int i = 0; i < students.length; i++) {
students[i] = new Student();
System.out.print("输入第" + (i + 1) + "个学生的学号:");
students[i].sno = input.next();
System.out.print("输入第" + (i + 1) + "个学生的姓名:");
students[i].name = input.next();
System.out.print("输入第" + (i + 1) + "个学生的性别:");
students[i].gender = input.next();
System.out.print("输入第" + (i + 1) + "个学生的年龄:");
students[i].age = input.nextInt();
}
//循环输出每个学生的信息
for (int i = 0; i < students.length; i++) {
System.out.println("学号:" + students[i].sno + ",姓名:" + students[i].name + ",性别:" + students[i].gender + ",年龄:" + students[i].age);
}
方法的返回类型为引用对象
public class Test04 {
public static void main(String[] args) {
Pack result= test();
System.out.println(result.a);
System.out.println(result.b);
System.out.println(result.c);
}
public static Pack test() {
String a = "hello";
int b =78;
double c=90.5;
Pack pack=new Pack();
pack.a=a;
pack.b=b;
pack.c=c;
return pack;
}
}
局部变量和成员变量的区别
局部变量:定义在一个方法的内部
成员变量:类的属性,定义在所有方法之外的,直接定义在类中
区别:
-
定义的位置不同
-
作用范围不同:局部变量只能在当前定义的方法中被访问,成员变量可以在当前类的所有方法中被访问【共享】
-
生命周期:局部变量在方法被调用时分配空间,分配的位置在JVM的栈内存中,在方法执行结束后立即马上销毁,成员变量在创建当前类的对象时分配空间,分配的位置在堆中,成员变量在对象成为垃圾的时候销毁
-
默认值不同:局部变量没有默认初始化的操作,成员变量在分配完空间之后由系统自动的完成初始化操作
默认值规则:根据变量的类型
-
构造方法
构造方法也是类中的一种方法,也称为构造器
,我们可以认为它是一种特殊的方法
和普通的方法不同:
1.从作用上来说:普通的方法的作用是用来完成软件中的某一个具体的业务功能,而构造方法的作用和软件的实际业务无关,它主要是关注当前类的对象的创建,简单的说构造方法就是用来创建当前类的对象的
2.从定义的语法上来说有两点不一样:a.构造方法的方法名必须和类同名 b.构造方法无返回类型【注意和void的区别】,方法的参数和方法体的设计和普通方法无异
3.调用的语法也不一样:类中普通的方法需要通过 对象名.方法名()的方式调用,构造方法需要通过new 关键字去调用 。
如果一个类没有构造器,则该类将无法实例化对象
当类中没有单独创建构造方法时,系统会默认给该类添加一个无参并且方法体为空的构造器,一般构造方法写在所有的普通方法之前
无参构造方法的作用:1.根据类的加载信息【类加载的过程由JDK提供的一个组件 类加载器 ClassLoader自动完成 被动加载】在堆中创建一块空间,对该类的属性进行默认的初始化工作,在将对象的地址返回。
当类中定义了有参构造方法,构造方法能够按照调用者的要求进行对象的初始化,构造方法中的this表示当前正在创建的对象
当方法中的局部变量和类中的成员变量同名了,方法体中根据就近原则优先访问方法中的局部变量,如果非要方法成员变量必须在变量名前加上this.
public Student(String name,String gender,int age,double score) {
//1.根据类的信息在堆中分配空间【JAVA从语法层面无法实现的,需要调用底层的语言 C 进行操作】
//2.默认属性初始化
this.name=name;
this.gender=gender;
this.age=age;
this.score=score;
}