static关键字
定义属性
static声明的属性和非static声明的属性最大的不同时保存的内存区域不同,static申明的属性保存在全局数据区
- static申明的属性可直接通过类.属性的形式访问
- 所有static对象属性必须参数实例化对象才可以访问,但是static对象就不需要了,无需实例化可以直接类.属性访问
class Book{private String name;private String price;static String pub = "清华大学出版社";}public class TestStatic{public static void main(String[] arg){Book.pub="北京大学出版社";//static申明的属性可直接通过类.属性的形式访问无需实例化可以直接类.属性访问System.out.println(Book.pub);//结果 北京大学出版社}}定义方法
- static 方法不能够直接访问static属性和static方法,只能够调用static属性和方法
- 非static方法可以直接访问static属性和static方法,不受任何限制
class Book{private String name;private String price;static String pub = "清华大学出版社";public static String setPub(String tempPub){return this.pub = tempPub;}}public class TestStatic{public static void main(String[] arg){Book.setPub("北京大学出版社");//无需实例化对象,就可以调用方法System.out.println(Book.pub);//结果 北京大学出版社}}main方法,解析
- public 表示公共的
- static 表示方法时由类名称调用,不许实例化对象
- void void表示没有返回值
- main 系统规定好的名称,不能修改
- String[] arg 传入的参数
传入参数调用,多个参数用空格分隔开
java TestStatic hello hi hh参数存在空格时,加双引号区分
java TestStatic ”hello word" "hi hh"
总结
- static属性和方法无需对象实例化就可以调用。但是一般都不用static定义属性
- java内存区分为: 栈内存(存堆内存地址),堆内存(存数据),全局数据区(存static属性),全局方法区(存static方法)