文章精华
shift+alt+下键 向下移动代码
idea中竖着选择可以点住鼠标滚轮向下拉动 批量进行修改
或者按住alt加鼠标左键一样的效果
目录
面向对象介绍
面向对象编程就是拿东西过来做对应的事情
Static知识点
static表示静态,是java的一个修饰符,可以修饰成员方法和成员变量
静态变量
被修饰的成员变量就是静态变量
特点:
被该类中所有对象共享
不属于对象,属于类
随着类的加载而加载,优先于对象存在(在static内存图中 当执行到student.teacher=“”的时候在堆内存中就开始加载static了)
调用方式:
类名调用
对象名调用
static内存图
所以所有对象都共享的就用static去修饰
静态方法
被static修饰的成员方法,叫做静态方法
特点
多用在测试类和工具类中
JavaBean类中很少会用
调用方式
类名调用(推荐)
对象名调用
工具类:
帮助我们做一些事情,但是不描述任何事物的类
1.类名见名知意 eg:public class ArrUtil(){}
2.私有化构造方法:
方法定义为静态;
需求:
代码展示
ArrayUtil
package com.itheima.a02staticdemo2; public class ArrayUtil { //私有化构造方法 //目的:不让外界创建他的对象 private 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 getAverage(double[] arr){ double sum=0; for (int i = 0; i < arr.length; i++) { sum=sum+arr[i]; } return sum/arr.length; } }
TestDemo
package com.itheima.a02staticdemo2; public class TestDemo { public static void main(String[] args) { //测试两个方法是否正确 int[] arr1={1,2,3,4,5}; String str = ArrayUtil.printArr(arr1); System.out.println(str); double[] arr2={1.5,3.7,4.9,5.8,6.6}; double avg = ArrayUtil.getAverage(arr2); System.out.println(avg); } }
需求:
代码展示
test
package com.itheima.a03staticdemo3; import java.util.ArrayList; public class Test { public static void main(String[] args) { //创建一个集合 用来存储学生对象 ArrayList<Student> list=new ArrayList<>(); //创建三个学生对象 Student stu1=new Student("zhangsan",23,"男"); Student stu2=new Student("zhangsans",28,"男"); Student stu3=new Student("zhangsand",23,"男"); list.add(stu1); list.add(stu2); list.add(stu3); int maxAgeStudent=StudentUtil.getManAgeStudent(list); System.out.println(maxAgeStudent); } }
studentutil
package com.itheima.a03staticdemo3; import java.util.ArrayList; public class StudentUtil { private StudentUtil(){} public static int getManAgeStudent(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; } }
javabean类:
用来描述一类事物的类 比如:student teacher dog cat
这个类中我们需要写getset 空参 全部参数的构造方法 如果有行为的话还需要写成员方法
测试类:
用来检查其他其他类是否书写正确 有main方法,是程序的入口
需求:
代码思路
写行为的话先定义一个study方法
我们也可以定义一个show方法省下之后一个一个去get
接着创建一个学生测试类 在其中创建两个学生对象
之后我们要在学生类中新增一个老师的姓名
刚开始我们写的代码是在Student类中直接定义
public String teacherName;
然后在Test方法中引用
s1.teacherName = "李华杰";
但是她的运行结果是这个样子
第二个学生的老师那边是null 是因为我们在第二个学生那边没有去定义teacherName
可是实际情况是一个班的学生老师应该是一个人 如果都去挨个写代码的话太麻烦
我们只需要在student类中写这样的代码
public static String teacherName;
加入static的意思就是所有的对象都公用同一个老师的姓名了
当 加入静态方法之后我们多了一种调用方式 就是可以通过类名直接去调用
Student.teacherName="李丽霞老师";
Static注意事项
静态方法只能访问静态变量和静态方法
非静态方法都可以访问
静态方法中没有this关键字
这个课的第三个注意事项没有听的很懂下次我会来做修改