学习目标:深入学习面向对象
学习内容:
ststic
学习时间:
下午 3 点-下午 6 点
学习产出:
static
static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量
1.被static修饰的成员变量,叫做静态变量
特点:
被该类所有对象共享
不属于对象,属于类
随着类的加载而加载,优先于对象存在
调用方式:
类名调用(推荐)
对象名调用
2.被static修饰的成员方法,叫做静态方法
特点:
多用在测试类和工具类中
JavaBean类中很少会用
调用方式:
类名调用(推荐)
对象名调用
public class Student {
private String name;
private int age;
private String gender;
public static String thachername;
public Student() {
}
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public void study(){
System.out.println(name+"正在学习");
}
public void show(){
System.out.println(name+", "+age+", "+gender+", "+thachername);
}
}
public class StdentTest {
public static void main(String[] args) {
Student.thachername="全聚德一级码师";
Student s1=new Student();
s1.setName("张三");
s1.setAge(23);
s1.setGender("男");
//s1.thachername="全聚德一级码师";
s1.study();
s1.show();
Student s2=new Student();
s2.setName("蛋姐");
s2.setAge(21);
s2.setGender("女");
s2.study();
s2.show();
}
}
运行结果:
张三正在学习
张三, 23, 男, 全聚德一级码师
蛋姐正在学习
蛋姐, 21, 女, 全聚德一级码师
工具类
javabean类 | 用来描述一类事物的类。比如,Student,Teacher,Dod,Cat等 |
测试类 | 用来检查其他类是否书写正确,带有main方法的类,是程序的入口 |
工具类 | 不是用来描述一类事物的,而是帮我们做一些事情的类 |
练习:定义数组工具类
需求:在实际开发中,经常会遇到一些数组使用的工具类
请按照如下要求编写一个数组的工具类:ArrayUtil
1.提供一个工具类方法printArr,用于返回整数数组的内容
返回的字符串格式如:[10, 20, 50, 34, 100](只考虑整数数组,且只考虑一维数组)
2.提供这样一个工具方法getAerage,用于返回平均分(只考虑浮点型数组,且只考虑一维数组)
3.定义一个测试类TestDemo,调用该工具类的工具方法,并返回结果
代码如下:
public class ArratUtil {
private ArratUtil(){}
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]+", ");
}
}
sb.append("]");
return sb.toString();
}
public static double getAerage(double[] arr){
double mun=0;
for (int i = 0; i < arr.length; i++) {
mun+=arr[i];
}
return mun/arr.length;
}
}
public class TestDemo {
public static void main(String[] args) {
int[] arr={23,34,65,78};
System.out.println(ArratUtil.printArr(arr));
double[] arr1={2.1,4.5,8.3,4.7};
System.out.println(ArratUtil.getAerage(arr1));
}
}
运行结果:
[23, 34, 65, 78]
4.9
练习:定义一个学生工具类
需求:定义一个集合,用于存储3个学生对象
学生类的属性为:name、age、gender
定义一个工具类,用于获取集合中最大学生的年龄
public class Student {
private String name;
private int age;
private String gender;
public Student() {
}
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
import java.util.ArrayList;
public class MaxUtil {
private MaxUtil(){}
public static int maxAge(ArrayList<Student> list){
int max=list.get(0).getAge();
for (int i = 1; i < list.size(); i++) {
int age=list.get(i).getAge();
if(age>max){
max=age;
}
}
return max;
}
}
import java.util.ArrayList;
public class StudentTest {
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList<>();
Student s1=new Student("张三",23,"男");
Student s2=new Student("蛋姐",21,"女");
Student s3=new Student("李四",22,"男");
list.add(s1);
list.add(s2);
list.add(s3);
int maxage=MaxUtil.maxAge(list);
System.out.println(maxage);
}
}
运行结果:
23
static的注意事项
静态方法中,只能访问静态
非静态方法中可以访问所有
静态方法中没有this关键字