欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA基础(Static关键字)

程序员文章站 2022-07-05 19:42:15
一.static定义属性---->所有对象共享同一属性:1.如果一个对象修改了Static属性,其他对象的该属性也被修改,2.可以由类直接调用------>可以不产生实例化对象3.使用static实现了共享数据区,减少内存空间的开辟package 类与对象;class Book{ private String title; private double price; static String pub="清华大学出版社"; public Book(String ti...

关于类中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()); } } 

JAVA基础(Static关键字)
static数据存储在全局数据区
JAVA基础(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()); } } 

JAVA基础(Static关键字)
说明:没有其他类,在主类中定义方法时,一般要定义static类型,因为main()函数是static类型的,如果定义非static类型的,要由对象调用才能执行!!!如果有其他类且其他类中没有属性只有方法时,也定义static类型,这样可以不用产生对象了
JAVA基础(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(); } } 

JAVA基础(Static关键字)
程序执行顺序:
主类中静态块(先于main())—>Book类中静态块---->Book类中构造块—>Book类的构造函数

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