Java应用程序开发学习之static关键字应用

网友投稿 259 2023-01-17


Java应用程序开发学习之static关键字应用

java的static关键字和C/C++语言的关键字有所不同:

一旦在Java里使用了static关键字,那么这样的内容不再属于对象自己,而是属于类本身的,所以凡是本类的对象,都共享一份。

1、使用Java static关键字修饰成员变量

以下是Stundent类。

package app_one;

public class Student {

private int id = 0 ;

private int age = 0;

private String name = null;

static int id_count = 0 ;

public Student(int age , String name)

{

this.age = age ;

this.name = name ;

this.id = ++id_count ;

}

public int getage() {

return age;

}

public void setage(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

以下是主类:

package app_one;

public class hello {

public static void main(String[] args)

{

Student st1 = new Student(14,"小明");

System.out.println("年龄:" + st1.getage() + " 姓名NgCmo:" + st1.getName() + " 序号:" + Student.id_count);

Student st2 = new Student(15,"小红");

System.out.println("年龄:" + st2.getage() + " 姓名:" + st2.getName() + " 序号:" + Student.id_count);

Student st3 = new Student(18,"小李");

NgCmo System.out.println("年龄:" + st3.getage() + " 姓名:" + st3.getName() + " 序号:" + Student.id_count);

}

}

运行结果:

从上面的案例可以看到,id_count是可以自动进行计数的,每一次实例化Student类的时候,id_count就自动+1,然后赋值给成员变量id,由于定义了static关键字的变量不再属于对象,而是属于类,所以在访问的时候,我们可以用类名称().静态变量的形式来进行访问。

2、使用static修饰成员方法

将上述程序中Student类的id_count修改为私有的静态变量,并添加一个静态的Get_idcount方法。

private static int id_count = 0 ;

public static int Get_idcount()

{

return id_count ;

}

在主类中获取id_count不通过类.变量的方式获取,而是改为类.方法()的方式获取。

Student.Get_idcount()

强调两点:

(1)成员方法可以访问成员变量

(2)成员方法可以访问静态变量

(3)静态方法可以访问静态变量

(4)静态方法不可以访问成员变量(非静态)

原因:因为在内存中是先有的静态内容,后有的非静态内容

(1)静态方法当中不能使用this

原因:因为this代表当前对象,通过谁调用的方法,谁就是当前对象

小结:

一旦使用了static修饰成员方法,那么这就成为了静态方法,不属于对象,而是属于类本身的。

对于静态方法来说,可以通过对象名进行调用,也可以直接通过类名称来调用。

如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它

如果有了static关键字,那么不需要创建对象,直接就能通过类名称进行调用。

无论是成员变量,还是成员方法,如果有了static,都推荐使用类名称进行调用。

静态变量:类名称.静态变量

静态方法:类名称.静态方法();

对于本类中的静态方法,可以省略类名称。

3、静态static的内存图

参照学习传智的Java课程给出的图,清晰易懂。

4、静态代码块

静态代码块格式:

public class 类名称{

static

{

//静态代码块的内容

}

}

(1)特点:当第一次用到本类时,静态代码块执行唯一的一次,静态内容总是优先于非静态,所以静态代码块比构造方法先执行

(2)典型用途:用来一次性地对静态成员变量进行赋值。

针对上面的案例做修改,在Student类中添加一个静态代码块:

package app_one;

public class Student {

private int id = 0 ;

private int age = 0;

private String name = null;

private static int id_count = 0 ;

static

{

System.out.println("静态代码块运行!");

}

public Student(int age , String name)

{

System.out.println("构造方法运行!");

this.age = age ;

thishttp://.name = name ;

this.id = ++id_count ;

}

public int getage() {

return age;

}

public void setage(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public static int Get_idcount()

{

return id_count ;

}

}

然后主程序修改如下:

package app_one;

public class hello {

public static void main(String[] args)

{

Student st1 = new Student(14,"小红");

System.out.println("姓名: "+st1.getName() + " 年龄: " + st1.getage() + " 序号: "+Student.Get_idcount());

Student st2 = new Student(14,"小李");

System.out.println("姓名: "+st2.getName() + " 年龄: " + st2.getage() + " 序号: "+Student.Get_idcount());

}

}

运行结果:

很明显得出结论。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:前端接口管理工具(接口开发工具)
下一篇:SpringBoot快速搭建web项目详细步骤总结
相关文章

 发表评论

暂时没有评论,来抢沙发吧~