🏷️🏷️主页:@嘿111
🏷️🏷️🏷️static静态变量
目录
🏷️static静态变量初认识
static
关键字在 Java 中用于创建类成员(包括字段、方法和代码块)的静态版本。这意味着无论这个类创建了多少对象,;静态成员只有一个副本,并被所有对象共享。静态变量也称为类变量,因为它们与类关联而不是类的某个特定实例。它们可以通过类名直接访问,也可以通过类的任何对象来访问。
static被该类的所有对象共享,被static修饰的成员变量叫做静态变量
static调用方式
如以下代码,直接调用static修饰的静态变量
java
public class Student {
private String name;
private int age;
public static String teacherName;
public Student(){}
public Student(String name, int age) {
this.name = name;
this.age = 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 void show(){
System.out.println(name+","+age+","+teacherName);
}
public void study()
{
System.out.println(name+"正在学习");
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//直接调用教师的名字
Student.teacherName="小美";
Student s1=new Student();
//给s1中的名字和年龄赋值
s1.setAge(18);
s1.setName("zhangsan");
s1.show();
s1.study();
//s1.teacherName="小美";
Student s2=new Student();
//给s2中的名字和年龄赋值
s2.setAge(20);
s2.setName("lisi");
s2.show();
s2.study();
//s2.teacherName="小美";
}
}
static内存图
在堆内存中单独开辟静态区用来存储静态变量
工具类
工具类,顾名思义,就是使用的工具,哪里有需要就往哪里添加它,当遇到非静态的工具类,调用的时候还要去new一下。
定义数组工具类
需求:在实际开发中,经常会遇到一些数组使用的工具类。请按照如下要求编写一个数组的工具 类:ArrayUtil
提供一个工具类方法printArr,用于返回整数数组的内容,返回的字符串格式如:[10,20,50,34,100](只考虑整数数组,且只考虑一维数组)
提供这样一个工具方法getAerage,用于返回平均分。(只考虑浮点型数组,且只考虑一维数组定义一个测试类TestDemo,调用该工具类的工具方法,并返回结果。
java
public class ArrayUtil {
public static String printArr(int[] arr)
{
StringBuilder sb=new StringBuilder();
sb.append("[");
for (int i = 0; i <arr.length ; i++) {
if(i==arr.length-1)
{
sb.append(arr[i]);
}
else {
sb.append(arr[i]).append(",");
}
}
sb.append("]");
return sb.toString();
}
public static double getAerage(int[] arr)
{
double sum=0;
for (int i = 0; i < arr.length; i++) {
sum+=arr[i];
}
return sum/arr.length;
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int []arr={10,20,50,34,100};
//测验工具类中的方法
String str=ArrayUtil.printArr(arr);
System.out.println(str);
double r=ArrayUtil.getAerage(arr);
System.out.println(r);
}
}
定义学生工具类
需求:定义一个集合,用于存储3个学生对象。
学生类的属性为:name、age、gender定义一个工具类,用于获取集合中最大学生的年龄。
java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
// 学生类
class Student {
private String name;
private int age;
private String gender;
// 构造函数
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// 获取年龄
public int getAge() {
return age;
}
// 可以添加其他属性的getter方法和setter方法
}
// 工具类
class StudentUtils {
// 获取集合中最大学生的年龄
public static int getMaxAge(Set<Student> students) {
int maxAge = -1; // 初始值为负一,表示尚未找到
for (Student student : students) {
if (student.getAge() > maxAge) {
maxAge = student.getAge();
}
}
return maxAge;
}
}
// 主类
public class Main {
public static void main(String[] args) {
Set<Student> studentSet = new HashSet<>();
// 添加学生对象到集合中
studentSet.add(new Student("Alice", 20, "Female"));
studentSet.add(new Student("Bob", 22, "Male"));
studentSet.add(new Student("Charlie", 19, "Male"));
// 获取最大学生的年龄并输出
int maxAge = StudentUtils.getMaxAge(studentSet);
System.out.println("集合中最大学生的年龄是: " + maxAge);
}
}
静态变量的注意事项
- 静态方法只能访问静态变量和静态方法
- 非静态方法可以访问静态变量或者静态方法(非静态方法可以访问所有)
- 静态方法中没有this关键字