全部
技术
PHP
MySQL
前端
Linux
JAVA
工具
纪念日计算器
邮记星
个人记账
笔记侠
历史上的今天
生日密码
生日书
生日密码
生日花语
博古通今
三十六计
鬼谷子
笑林广记
本草纲目
山海经
唐诗宋词
宋词300首
唐诗300首
退出
登录
注册
编辑文章
选择分类
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方法)
保存文章