1.静态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内存图
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 }