【Java基础】static关键字相关
static关键字特点:
- 随着类的加载而加载。
- 优先于对象存在。
- 被所有对象共享
- 可以直接被类名调用。
使用注意:
- 静态方法只能访问静态成员。
- 但非静态成员可以访问静态成员。
- 静态方法中不能使用this,super关键字。
- 主方法(main)是静态的。
看了上面是不是想睡觉了,单纯的概念是挺烦人的,那下面让我们在实际代码中来加深对他们的认知。
方法的调用可以分为两种:
- 对象调用: 对象.方法(实参)
- 类调用: 这个方法所在类的名字.方法(实参)//前提是这个方法必须被static修饰。
没有使用static修饰的方法或字段,属于对象。为实例成员。
使用static修饰的方法或字段,属于类。为类成员。
对他们的调用:
若是实例成员:只能通过对象来调用。
若是类成员:可以通过类名调用,也可以通过对象来调用。
好吧,下面小程序来了。
class dog//一群狗狗
{
String name;
int age;//没有使用static修饰,属于对象,为实例成员。
//狗的名字,年龄,每只狗都不同,能随意变。 static int num=100;//使用static修饰,属于类,为类成员。
//而狗的总数是不变的。
} class day5lesson2
{
public static void main(String[] args)
{
System.out.println("通过类名来调用类成员-->"+dog.num);//编译通过
//System.out.println("通过类名来调用实例成员-->"+dog.name);//编译不通过
System.out.println("通过对象来调用类成员-->"+new dog().num);//运行通过
System.out.println("通过对象来调用实例成员-->"+new dog().name);//运行通过
}
}
上面代码中被注释掉的不能通过的代码的错题提示如下:
上面程序也说明了上面提到的:若是实例成员:只能通过对象来调用。若是类成员:可以通过类名调用,也可以通过对象来调用。但是在调用类成员时建议用类名来调用,因为在底层,对象来调用类成员,也会转换为类名调用。
下面必须提到的是:静态区域。它是在JVM内存中的一块专门存储类成员的存储区域。
我们修改一下上面一段程序的主方法:
class dog//一群狗狗
{
String name;
int age;//没有使用static修饰,属于对象,为实例成员。
//狗的名字,年龄,每只狗都不同,能随意变。 static int num=100;//使用static修饰,属于类,为类成员。
//而狗的总数是不变的。
}
class day5lesson2
{
public static void main(String[] args)
{
dog d1=new dog();
dog d2=new dog();//声明2个对象 d1.num=111;//用d1修改类成员。
System.out.println("d1.num="+d1.num);
System.out.println("d2.num="+d2.num);//输出 d1.age=111;//用d1修改实例成员。
System.out.println("d1.age="+d1.age);
System.out.println("d2.age="+d2.age);//输出
}
}
结果如下:
为什么是这种结果呢?这就是static修饰的字段属于类成员,存储在专门的静态区域中。(PS:在类加载时就为其创建空间,所以比较消耗性能)。一般static方法用在做工具类的方法的时候,如Arrays类(java.util.Arrays)中,大量使用static方法,可在JDK API中查看。
而没被static修饰的age(实例成员)则不会有这种效果。(PS:int定义一个数字默认值为0,所以d2.age输出0)
【Java基础】static关键字相关的更多相关文章
- java基础—static关键字
一.static关键字
- Java基础--static关键字
不管是平时阅读源代码,还是笔试.面试中,static关键字还是经常被问道,这篇文章主要来重新复习一下该关键字. 一.static用途 static方便在没有创建对象的时候调用方法或者变量. stati ...
- java基础--static关键字的使用
一.static关键字的作用 使类成员完全独立于该类的任何对象.通常情况下,类成员必须通过它的类的对象访问,但是被static修饰的成员,能够被自己访问,而不必引用特定的实例. 一旦一个成员被声明为s ...
- Java基础-synchronized关键字的用法(转载)
synchronized--同步 顾名思义是用于同步互斥的作用的. 这里精简的记一下它的使用方法以及意义: 当synchronized修饰 this或者非静态方法或者是一个实例的时候,所同步的锁是加在 ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- Java的static关键字
本文参考:Java的static关键字 通过static关键字可以满足两方面的需要.一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象.另一种情形是,希 ...
- java的static关键字 – Break易站
本文内容来自:java的static关键字 – Break易站 (原文网站阅读体验更好) 通过static关键字可以满足两方面的需要.一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多 ...
- Java面向对象-static关键字、静态方法与普通方法、静态成员变量
Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...
- Java 静态static关键字,main函数,对象的初始化过程,对象调用成员,单例模式的设计,静态代码块(6)
Java 静态static关键字,静态代码块详情参考:static的使用原理讲解http://www.cnblogs.com/itcqx/p/5519464.html main函数: java Mai ...
- 面试官:兄弟,说说Java的static关键字吧
读者乙在上一篇我去系列文章里留言说,"我盲猜下一篇标题是,'我去,你竟然不知道 static 关键字'".我只能说乙猜对了一半,像我这么有才华的博主,怎么可能被读者猜中了心思呢,必 ...
随机推荐
- springmvc访问路径传递参数
@RequestMapping(value = "/{path}/toList") public String toList(@PathVariable String path) ...
- Ext.net GridPanel获取选中行的数据
1.前台页面 在button中添加ExtraParams <DirectEvents> <Click> <ExtraParams> <ext:Pramet ...
- jQ全选效果
<ul id="list"> <li><label><input type="checkbox" value=&quo ...
- UVA11401Triangle Counting(简单计数)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 题目意思:从1,2,3,……,n中选出3个不同的整数使其构成一个三角形,有多少种方 ...
- ThinkPHP框架一
1.1 框架的概念 框架其实就是可重用代码的集合,框架的代码是框架架构的代码,不是业务逻辑代码,框架代码保护类.方法.函数等等,框架代码按照一定的规则组合起来就形成了框架. 1.2 不使用框架开发的时 ...
- tomcat之负载均衡(apache反响代理tomcat)
基于mod_proxy模块 配置内容如下: 准备工作-->检查模块 # httpd -D DUMP_MODULES……………………proxy_module (shared)proxy_balan ...
- 搜索打表大找规律 (hdu2045)
不容易系列之(3)—— LELE的RPG难题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- IOS开发之动态获取模型的属性值
#import "model.h" #import <objc/runtime.h> @implementation model +(instancetype)mode ...
- 推荐大家一本学习php模式的书
对我来讲,写程序不是码代码,不想只是简单的将类拿来调用,然后功能实现了,可是以后要做一些扩展或者是修改就要对代码大刀阔斧. 在网站的开发过程中,使用一些框架,团队就可以在一定的程度上,分工合作.但是当 ...
- pktgen使用详细教程
网上有很多讲解pktgen的文章,但总是不够全面细致,看完之后自己还是不会写pktgen测试脚本,为此本文对pktgen进行详细的阐述,让大家看完本文后能够自己动手写pktgen shell. 1.p ...