网站首页 > java教程 正文
好程序员Java教程分享static关键字的理解,static关键字含义可以理解为静态的。
1. 当其修饰属性时,该属性为整个类公有,所有的对象操作的都是同一个静态属性。所以调用时应该使用类名去调用,而不需要使用对象调用。
用类名去调用static有两层含义:
1. 可以理解为其为整个类公有的内容。
2. 可以理解为不需要创建对象就可以直接使用。
class Student {
private String name;
private String no;
// 此处省略掉getter和setter
public static String school;
public static void main(String[] args) {
Student stu1 = new Student();
stu1.setName("某某某");
stu1.setNo("1001");
Student.school = "千锋";
Student stu2 = new Student();
Student.school = "千锋教育";
System.out.println(Student.school);
}
}
2. 当其修饰方法时,该方法不需要对象调用,直接使用类名即可调用。
// 只显示代码片段
public static String getSchool() {
return school;
}
// 其他位置调用
System.out.println(Student.getSchool());
注意:在static方法中不能调用普通属性。也不能使用this关键字。因为static方法是使用类名调用的,而使用时不能判断是否创建对象,所以根本不能调用对象所对应的方法或属性,只能调用static的属性或方法。
代码块,是指在类中,直接使用{}中间写一段代码,此代码不需要手动调用,在每次创建对象时会自动调用,甚至会在构造方法之前调用。
public class Student {
private String name;
private String no;
public static String school;
public Student(){
System.out.println("无参构造函数");
}
{
System.out.println("此处是代码块");
}
}
3. 当static修饰代码块时,该代码块为静态代码块,在类加载时调用,仅在第一次加载时调用一次。不需要创建对象。如果创建了对象,调用次序为:先调用static代码块,再调用代码块,最后调用构造方法。
public class Student {
private String name;
private String no;
public static String school;
public Student(){
System.out.println("无参构造函数");
}
{
System.out.println("此处是代码块");
}
static{
System.out.println("此处是静态代码块");
}
}
当有一个父类Person,有一个子类Student,分别都有构造方法,代码块和静态代码块时,创建一个子类对象,调用次序为:
此处是Person静态代码块
此处是Student静态代码块
此处是Person代码块
Person无参构造函数
此处是Student代码块
Student无参构造函数
代码如下:
public class Person {
public Person(){
System.out.println("Person无参构造函数");
}
{
System.out.println("此处是Person代码块");
}
static{
System.out.println("此处是Person静态代码块");
}
}
public class Student extends Person{
public Student(){
System.out.println("Student无参构造函数");
}
{
System.out.println("此处是Student代码块");
}
static{
System.out.println("此处是Student静态代码块");
}
}
总结一句:static其实翻译类的,更容易理解,比如static修饰属性,称为类属性,static修饰方法,称为类方法。
猜你喜欢
- 2024-10-04 Java中static关键字用法小结(java中static的基本用法)
- 2024-10-04 java中的static、方法、成员变量和局部变量
- 2024-10-04 关于Java中static和final关键字的用法总结
- 2024-10-04 教你如何在Java中更好的定义常量(java定义常量用什么关键字)
- 2024-10-04 Java入门:static关键字和静态属性、方法
- 2024-10-04 Java关键字:final,static,this,super
- 2024-10-04 附带正反案列,Java中final和static关键字总结
- 2024-10-04 static特点——java(java的static有什么用)
- 2024-10-04 Java中的static关键字和静态变量、静态方法
- 2024-10-04 Java开发中的static关键字的功能及用法
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)