Java基础7---面向对象(构造方法和static关键字)

时间:2022-05-31 00:43:51

一、构造方法给成员变量赋值

1.格式

  • 方法名与类名相同(大小也要与类名一致)
  • 没有返回值类型,连void都没有
  • return;

2.注意事项

  • 如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
  • b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。
  • 注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法。

3.给成员变量赋值的两种方式的区别

  • setXxx()方法
    修改属性值
  • 构造方法
    给对象中属性进行初始化

4.创建一个对象的步骤

class Demo1_Student {
public static void main(String[] args) {
Student s = new Student();
s.show();
}
}

class Student {
private String name = "张三";
private int age = 23;

public Student() {
name = "李四";
age = 24;
}

public void show() {
System.out.println(name + "..." + age);
}
}
  • Student s = new Student();
  • 1,Student.class加载进内存
  • 2,声明一个Student类型引用s
  • 3,在堆内存创建对象,
  • 4,给对象中属性默认初始化值
  • 5,属性进行显示初始化
  • 6,构造方法进栈,对对象中的属性赋值,构造方法弹栈
  • 7,将对象的地址值赋值给s

二、static关键字

1.static关键字的特点

  • 随着类的加载而加载
  • 优先于对象存在
  • 被类的所有对象共享
  • 可以通过类名调用

2.static的注意事项

  • 在静态方法中是没有this关键字的
    • 如何理解呢?
      • 静态是随着类的加载而加载,this是随着对象的创建而存在。
      • 静态比对象先存在。
  • 静态方法只能访问静态的成员变量和静态的成员方法
    • 静态方法:
      • 成员变量:只能访问静态变量
      • 成员方法:只能访问静态成员方法
    • 非静态方法:
      • 成员变量:可以是静态的,也可以是非静态的
      • 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
    • 简单记:
      • 静态只能访问静态。

3.静态变量和成员变量的区别

  • 静态变量也叫类变量 成员变量也叫对象变量
  • 所属不同
    • 静态变量属于类,所以也称为为类变量
    • 成员变量属于对象,所以也称为实例变量(对象变量)
  • 内存中位置不同
    • 静态变量存储于方法区的静态区
    • 成员变量存储于堆内存
  • 内存出现时间不同
    • 静态变量随着类的加载而加载,随着类的消失而消失
    • 成员变量随着对象的创建而存在,随着对象的消失而消失
  • 调用不同
    • 静态变量可以通过类名调用,也可以通过对象调用
    • 成员变量只能通过对 象名调用

4.main方法的格式详细解释

  • 格式
    • public static void main(String[] args) {}
  • 针对格式的解释
    • public 被jvm调用,访问权限足够大。
    • static 被jvm调用,不用创建对象,直接类名访问
    • void被jvm调用,不需要给jvm返回值
    • main 一个通用的名称,虽然不是关键字,但是被jvm识别
    • String[] args 以前用于接收键盘录入的

4.工具类中使用静态

  • 制作一个工具类
    • ArrayTool
    • 1,获取最大值
    • 2,数组的遍历
    • 3,数组的反转
public class ArrayTool {
private ArrayTool(){}//私有构造方法
public static int getMax(int[] arr) {
int max = arr[0];
for (int i = 1;i < arr.length ;i++ ) {
if (max < arr[i]) {
max = arr[i];
}
}

return max;
}
public static void print(int[] arr) {
for (int i = 0;i < arr.length ;i++ ) {
System.out.print(arr[i] + " ");
}
}
public static void revArray(int[] arr) {
for (int i = 0;i < arr.length / 2 ;i++ ) {
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
}
}

三、说明书的制作过程

  • 1.对工具类加入文档注释
  • 2.通过javadoc命令生成说明书
    • @author(提取作者内容)
    • @version(提取版本内容)
    • javadoc -d 指定的文件目录 -author -version ArrayTool.java
    • @param 参数名称//形式参数的变量名称@return 函数运行完返回的数据