作者:mobiledu2502868523 | 来源:互联网 | 2023-09-10 15:02
static关键字
static的概念
静态的
static的作用
用于修饰类的成员 : 成员变量:类变量 成员方法:类方法
调用方式
类名. 成员变量名; 类名. 成员方法名(参数);
static修饰成员变量
特点
被本类所有对象共享
需求:定义研发部成员类,让每位成员进行自我介绍
分析
- A:研发部成员统称为开发者,定义类Developer。
- B:每位开发者所属部门相同,所以属性departName用static修饰:
public static String departName = "研发部";
- C:Developer类的普通属性和行为:
name, work;selefIntroduce();
- D:在测试类中创建对象并使用 E : 修改部门名称为“开发部”,测试效果
代码演示
//开发者类
public class Developer {
//成员变量
//姓名
String name;
//工作内容
String work;
//部门名(公共的静态常量)
public final static String DEPARTMENT_NAME = "研发部"; //应该用static修饰
//成员方法
//自我介绍
public void selfIntroduction() {
System.out.println("我是" + DEPARTMENT_NAME + "的" + name + ", 我的工作内容是" + work);
}
}
/*
static关键字:
该单词是"静态"的意思, 可以用来修饰成员变量和成员方法.
关于static修饰的成员变量:
该变量叫静态变量(类变量), 静态变量被该类下所有的对象所共享.
静态成员的调用方式:
可以通过 类名. 的形式直接调用.
需求: 定义研发部成员类,让每位成员进行自我介绍
Developer类:
成员变量: 姓名name, 工作内容work, 部门名字departmentName
成员方法: 进行自我介绍的方法selfIntroduction();
*/
public class Test {
public static void main(String[] args) {
//需求: 创建两个员工, 然后测试
Developer d1 = new Developer();
d1.name = "小黑";
d1.work = "写代码";
d1.selfIntroduction();
Developer d2 = new Developer();
d2.name = "媛媛";
d2.work = "鼓励师";
d2.selfIntroduction();
System.out.println("---------------------");
//随着公司的发展, 部门名字要进行调整, 改为: 开发部
//Developer.departmentName = "开发部";
d1.selfIntroduction();
d2.selfIntroduction();
}
}
打印结果
注意事项
随意修改静态变量的值是有风险的,为了降低风险,可以同时用final关键字修饰,即公有静态常量(注意命名的变化):
public final static String DEPART_NAME = "研发部";
static修饰成员方法
静态方法
静态方法中没有对象this
,所以不能访问非静态成员
静态方法的使用场景
只需要访问静态成员 不需要访问对象状态,所需参数都由参数列表显示提供
需求:定义静态方法,反转数组中的元素
分析
- A:先明确定义方法的三要素:
方法名:reverse(反转)
参数列表:int[] arr
返回值类型:void
- B:遍历数组,交换数组索引为
i
和 length-1-i
的元素: arr[i] <=> arr[arr.length -1 - i]
- C:当索引
i >= (length – 1 – i)
时,停止交换元素 - D:在测试类中创建对象并使用
代码演示
public class ReverseArray {
int num1 = 10;
static int num2 = 20;
//静态方法中没有对象this,所以不能访问非静态成员
public static void show() {
//System.out.println(num1);
System.out.println(num2);
}
//需求:定义静态方法,反转数组中的元素
public static void reverse(int[] arr) {
/*
这里只需要完成: 交换元素的动作就可以了.
假设数组中的元素值为: int[] arr = {11, 22, 33, 44, 55};
明确谁和谁进行交换:第一个元素11 和 最后一个元素55 交换第二个元素22 和 倒数第二个元素44 交换...arr[i] arr[arr.length - 1 - i]
明确交换次数:数组的长度/2
*/
for (int i = 0; i // arr[i] 和 arr[arr.length - 1 - i]进行交换
int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
}
/*
static修饰成员方法
静态方法:
静态方法中没有对象this,所以不能访问非静态成员
静态方法的使用场景
如果某方法只访问静态成员, 并且不需要通过 对象名. 的形式调用, 就可以考虑将其定义为: 静态方法.
需求:定义静态方法,反转数组中的元素
核心:
1. 其实就是arr[i] 和 arr[arr.length - 1 - i] 在交换.
2. 循环次数只需要执行数组长度的一般就可以了, 也就是: arr.length/2
*/
public class Test {
public static void main(String[] args) {
//测试show()方法
ReverseArray.show();
//小需求: 交换变量.
int a = 10;
int b = 20;
int temp = a; //temp=10, a=10, b=20
a = b; //temp=10, a=20, b=20
b = temp; //temp=10, a=20, b=10
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("-------------------------");
int[] arr = {1, 6, 4, 5, 2, 3};
for (int i = 0; i System.out.println(arr[i]);
}
System.out.println("-------------------------");
//调用方法, 反转数组
ReverseArray.reverse(arr);
for (int i = 0; i System.out.println(arr[i]);
}
}
}
打印结果