PHP技术那点事
全部
技术
PHP
MySQL
前端
Linux
JAVA
退出
编辑文章
选择分类
PHP
MySQL
前端
Linux
Java
工具
选择专栏
设计模式
java基础
Angular学习
Java面试题
描述:
Java static关键字
封面图上传 :
+
点击上传图片
### static关键字 > ### 定义属性 > > static声明的属性和非static声明的属性最大的不同时保存的内存区域不同,static申明的属性保存在全局数据区 > > - static申明的属性可直接通过**类.属性**的形式访问 > - 所有static对象属性必须参数实例化对象才可以访问,但是static对象就不需要了,无需实例化可以直接**类.属性**访问 > > ``` java > 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方法,不受任何限制 > > ```java > 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方法)
保存文章