static用于表示静态
静态变量是随着类的加载而加载的,优先于对象的出现
this:表示当前方法调用者的地址值
this是由虚拟机赋值的
一些快捷键:
ctrl+a全选再来回车带全部参数的构造
ctrl+insert get and set ctrl+全选就给所有成员变量提供了get和set方法
私有话构造方法,是为了防止创建他的对象,因为创建他的对象没意义个人感觉是为了保证他功能呢的确定性不被更改,则他的功能就确定
static 表示静态,是Java 中的一个修饰符,可以修饰成员方法,成员变量
被static修饰的成员变量叫做静态变量
特点:
被该类所有对象共享
不属于对象属于类
随着类的加载而加载,优先于类存在
调用方法
类名调用(推荐)
对象名调用
被static修饰的成员方法叫做静态方法
特点:
多在测试类和工具类中
Javabean中很少会用
调用方式:
类名调用
对象名调用
工具类
帮我们做一些事情的,但是不描述任何事物的类
Javabean: 用来描述一类事物的类。比如Student、Teacher、Dog、Cat等
测试类 :用来检查其他类是否书写正确,带有main方法的类是程序的入口
工具类:不是用来描述一类事物的,而是帮我们做一些事情的类
1.类名见名知义
2.私有化构造方法(防止功能被篡改)
3.方法定义为静态
工具类列:方法都是你静态的
public class ArrUtil{
private ArrUtil(){}
public static int getMax(...){...}
public static int getMin(...){...}
public static int getsum(...){...}
public static int getAvg(...){...}
}
需求:
1.按照如下要求编写一个数组的工具类:ArrayUtil
2.提供一个工具类方法printArr,用于返回整数数组的内容
返回的字符串格如:[10,20,50,34,100](只考虑整数数组,且只考虑一维数组)
3.提供这样一个工具方法getAerage,用于返回平均分,(只考虑浮点型数组,且只考虑一维数组)
4.定义一个测试类testDemo,调用该工具类的工具方法,并返回结果
public class ArrayUtil{
//私有化构造方法
//目的:为了不让外界创建他的对象
private Arrayutil(){}
//需定义为静态的,方法调用
public static String printArr(int [] arr){
StringBdilder sb=new StringBuilder();
sb.sppend("[");
for(int i=0;i<arr.length;i++){
//i 索引arr[i]元素
if(i==arr.length;i++){
sb.append(arr[i]);
}else{
sb.append(arr[i]).append(",");
}
}
sb.append("]");
return sb.toString();
}
public static double getAverage(doube[] arr){
double sum=0;
for(int i=0;i<arr.length;i++){
sum=sum+arr[i];
}
return sum/arr.length;
}
}
public class TestDemo{
public static void main(String[] args){
//测试工具类中的两个方法是否正确
int[] arr={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);
}
}
练习:定义学生工具类
需求:定义一个集合,用于存储3个学生对象
学生类的属性为:name、age、gender
定义一个工具类,用于获取集合中最大学生的年龄
public class Student{
private String name;
private int age;
private String gender;
public student(){}
public Student(String name,int age,Sting gender){
this.name=name;//将方法中初始化的赋给调用方法的那个方法对应的的值
this.age=age;
this.gengder=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(){
this.gender=gender;
}
..................................
import java.util.ArrayList;
public class Test{
public static void main(String[] args){
//1.创建一个集合用来存储学生对象
ArrayList<St>
}
}
每次的Arraylist都要去自当前对应的包
。。。。。。。。。。。。。。。。
import java.util.ArrayList;
public class Test{
public static void main(String[] at=rgs){
//1.创建一个集合用来存储学生对象
ArrayList<Student> List=new ArrayList<>();
//2.创建3个学生对象
Student stu1=new Student(name:"zhangsan",age:23,gender:"男");
Student stu2=new Student(name:"lisi",age:24,gender:"女");
Student stu3=new Student(name:"wangwu",age:25,gender:"男");
//3.把学生对象添加到集合当中
list.add(stu1);
list.add(stu2);
list.add(stu3);
//4.调用工具类中的方法
int maxAgeStudent=StudenUtil.getMaxAgeStudent(list);
System.out.println(maxAgeStudent);
}}
static 的注意事项:
静态方法只能访问静态变量和静态方法
非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
静态方法中没有this关键字
总结
静态方法中,只能访问静态
非静态方法可以访问所有
非静态方法中没有this关键字
this
//this:表示当前方法调用者的地址
//thi是由虚拟机赋值的
静态随类的加载而加载,比非静态超前
非静态和对象有关
static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量
1.被static修饰的成员变量,叫做静态变量
特点:
被该类所有对象共享
跟对象无关,随着类的加载而加载,优先于对象存在
调用方法:
类名调用
对象名调用
2.被static修饰的成员方法,叫做静态方法
特点:
多用在测试类和工具类中、
javabean类中很少用
调用方法:
类名调用(推荐)
对象名调用
重新认识main方法
1.public : 被JVM调用,访问权限足够大
2.static: 被JVM调用,不用创建对象,直接类名访问
因为main方法是静态的,所以测试类中其他方法也需要时静态的
3.void: 被JVM调用,不需要给JVM返回值
4.main: 一个通用的名称,虽然不是关键字,但是被JVM识别
5.String[] args: 以前用于接收键盘录入数据的,现在没用