1.静态static关键字

静态static关键字应用_静态方法

学生类

package ExtendsTest;/*
 *@Author:lcc
 *@Date:2022/3/1-03-01-22:59
 *@Description:ExtendsTest
 *@version:1.0
 */
//学生类
public class Student {
    private  int id;
    private String name;
    private int age;
    static String room;   //静态static关键字
    private static int idCounter=0;
    public Student(){
        this.id = ++idCounter;
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
        this.id = ++idCounter;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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;
    }
}

如上学生类所示,如果一个成员变量使用了static关键字,那么这个变量将不再属于对象自己,而是属于所有的类。多个对象共享同一份数据

1 public class Demo01StaticFiled {
2     public static void main(String[] args) {
3         Student st = new Student("张三",32);
4         st.room = "三班";
5         System.out.println("学号是:"+st.getId()+",年龄是:"+st.getName()+",年龄是:"+st.getAge()+",年级是:"+st.room);
6         Student st1 = new Student("李四",32);
7         System.out.println("学号是 :"+st1.getId()+",年龄是:"+st1.getName()+",年龄是:"+st1.getAge()+",年级是:"+st.room);
8     }
9 }

2.静态static关键字修饰成员方法

 

1 public class MyClass2 {
 2     int num;  //成员变量
 3     static int numStatic;  //静态变量
 4 
 5     public void method(){
 6         System.out.println("这是一个成员方法");
 7 //        System.out.println(num);  //成员方法可以访问成员变量
 8 //        System.out.println(numStatic); //成员方法可以访问静态变量
 9     }
10     public static void methodStatic(){
11         System.out.println("这是一个静态方法");
12 //        System.out.println(numStatic);  //静态方法可以访问静态变量
13         //静态不能方法不能访问非静态变量(重点)
14 //        System.out.println(num);
15 //        System.out.println(this);
16     }
17 
18 }

 

1 package ExtendsTest;/*
 2  *@Author:lcc
 3  *@Date:2022/3/1-03-01-23:38
 4  *@Description:ExtendsTest
 5  *@version:1.0
 6  */
 7 
 8 public class Demo02StaticMethod {
 9     public static void main(String[] args) {
10         MyClass2 obj = new MyClass2();  //首先创建对象
11         obj.method();  //之后才能使用没有static关键字的内容
12 
13         //对于静态方法来说,可以通过对象名进行调用,也可以直接通过类名称来调用
14         obj.methodStatic();//正确,不推荐,这种写法在编译之后也会被java翻译成为“类名称.静态方法名”
15         MyClass2.methodStatic();  //正确,推荐使用
16 
17         myMethod();//对于本类当中的静态方法,可以省略类名称
18         Demo02StaticMethod.myMethod();  //与上面完全等效。
19 
20 
21 
22 
23     }
24     public static void myMethod(){
25         System.out.println("自己的方法!");
26     }
27 }

3.静态static内存图

静态static关键字应用_数组_02

 

4.静态代码块

1 public class Person {
2     static{
3         System.out.println("静态代码块执行一次");  //当第一次用到本类时,静态代码块执行唯一一次
4     }
5     public Person(){
6         System.out.println("构造方法执行一次");
7     }
public class Demo03Static {
    public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
    }
}
#执行结果:
静态代码块执行一次
构造方法执行一次
构造方法执行一次

5.数组工具Arrays

java.util.Arrays是一个与数组相关的工具类,里面提供了大量静态方法,用来实现数组常见的操作

public static String toString(数组)  :将参数数组变成字符串,(按照默认格式:[元素1,元素2,元素3])

public static void sort(数组):按照默认升序对数组进行排序

1 package ExtendsTest;/*
 2  *@Author:lcc
 3  *@Date:2022/3/2-03-02-21:50
 4  *@Description:ExtendsTest
 5  *@version:1.0
 6  */
 7 
 8 import java.util.Arrays;
 9 
10 public class Demo04Array {
11     public static void main(String[] args) {
12         int[] Array1 = {12,14,54,44};
13         String intStr = Arrays.toString(Array1); //将int[]数组按照默认格式编程字符串
14         System.out.println(intStr);
15 
16         Arrays.sort(Array1); //将int[]数组排序后转为字符串
17         System.out.println(Arrays.toString(Array1));
18 
19         String[] str = {"aaa","bbb","fff","ccc"};
20         Arrays.sort(str);
21         System.out.println(Arrays.toString(str));
22 
23     }
24 }

6.Arrays字符串倒序排列

1 mport java.util.Arrays;
 2 
 3 public class Demo05practice {
 4     public static void main(String[] args) {
 5         String str = "jfakgnnjfeinfvnvzffensdgndsl";
 6         //升序排列:sort
 7         //必须是一个数组,才能用Arrays.sort方法
 8         //String -->数组,用toCharArray
 9         char[] chars = str.toCharArray();
10         Arrays.sort(chars);
11 
12         for (int i = chars.length-1; i >=0 ; i--) {
13             System.out.println(chars[i]);
14         }
15 
16     }
17 }