当前位置: 移动技术网 > IT编程>开发语言>Java > JAVA基础(Static关键字)

JAVA基础(Static关键字)

2020年08月02日  | 移动技术网IT编程  | 我要评论

关于类中static的几点说明:

1.如果一个对象修改了Static属性,其他对象的该属性也被修改,
2.static定义的属性和方法可以由类直接调用------>可以不产生实例化对象
3.使用static实现了共享数据区,减少内存空间的开辟
4.static方法中不能直接调用非static定义的属性和方法(因为非static定义的属性和方法必须产生对象才可以调用,而static可以不产生对象直接由类调用),只能直接调用static属性和方法
5.非static方法可以调用static的属性和方法
一.static定义属性---->所有对象共享同一属性

package 类与对象; class Book { private String title; private double price; static String pub="清华大学出版社"; public Book(String title,double price) { this.title=title; this.price=price; } public String getInfo() { return "书名: " + title + "   价格:"+price+" 出版社:"+pub ; } } public class DEMO1 { public static void main(String[] args) { Book ba = new Book("java开发",10.2); Book bb = new Book("android开发",10.2); Book bc = new Book("oracle开发",10.2); System.out.println(ba.getInfo()); Book.pub="北大出版社"; System.out.println(bb.getInfo()); System.out.println(bc.getInfo()); } } 

在这里插入图片描述
static数据存储在全局数据区
在这里插入图片描述
二.static定义方法:

package 类与对象; class Book { private String title; private double price; private static String pub="清华大学出版社"; public Book(String title,double price) { this.title=title; this.price=price; } public static String getPub() { return pub; } public static void setPub(String pub) { Book.pub = pub;//此处需要注意,不能用this.pub,static方法由类直接调用 } public String getInfo() { return "书名: " + title + "   价格:"+price+" 出版社:"+ getPub();//调用本类中static getPub()方法,类名称可以省略 } } public class DEMO1 { public static void main(String[] args) { Book ba = new Book("java开发",10.2); Book bb = new Book("android开发",10.2); Book bc = new Book("oracle开发",10.2); System.out.println(ba.getInfo()); Book.setPub("北大出版社"); System.out.println(bb.getInfo()); System.out.println(bc.getInfo()); } } 

在这里插入图片描述
说明:没有其他类,在主类中定义方法时,一般要定义static类型,因为main()函数是static类型的,如果定义非static类型的,要由对象调用才能执行!!!如果有其他类且其他类中没有属性只有方法时,也定义static类型,这样可以不用产生对象了
在这里插入图片描述
补充java中的块:

package 类与对象; class Book { private String pub; public Book(String pub) { this.pub=pub; } //静态块 static { System.out.println("***Book类中静态块***"); } //构造块 { System.out.println("***Book类中构造块***"); } public void getinfo() { System.out.println( this.pub);} } public class DEMO1 { //静态块 static{ System.out.println("***主类中静态块***"); } public static void main(String[] args) { new Book("清华大学出版社").getinfo(); } } 

在这里插入图片描述
程序执行顺序:
主类中静态块(先于main())—>Book类中静态块---->Book类中构造块—>Book类的构造函数

本文地址:https://blog.csdn.net/weixin_43563049/article/details/107701855

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网