【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 关键字'".我只能说乙猜对了一半,像我这么有才华的博主,怎么可能被读者猜中了心思呢,必 ...
随机推荐
- EffectiveC#15--使用using和try/finally来做资源清理
1.任何时候你在使用一个有Dispose()方法的类型时,你就有责任来调用Dispose()方法来释放资源. 最好的方法来保证Dispose()被调用的结构是使用using语句或者try/finall ...
- ADO.NET程序访问数据的组件
组成--数据集(内存中的数据库) --DataSet数据集 --DataTable数据表 --DataColumn数据列 --DataRow数据行 --DataView数据视图--NET数据提供程序 ...
- PHP学习笔记二十六【类的重载】
<?php //重载: //函数名一样,通过函数的参数个数或者是参数类型不同,达到调用同一个函数名 Class A{ // public function test1(){ // echo &q ...
- protobuf 参考资料
Protocol Buffers 官网下载地址:https://developers.google.com/protocol-buffers/docs/downloads Protocol Buffe ...
- 跨平台渲染框架尝试 - constant buffer的管理
1. Preface Constant buffer是我们在编写shader的时候,打交道最多的一种buffer resource了.constant表明了constant buffer中的数据,在一 ...
- 初识KMP
KMP简介 KMP是一种由Knuth(D.E.Knuth).Morris(J.H.Morris)和Pratt(V.R.Pratt)设计的字符串匹配算法.对目标串T[0:n-1]中查找与之匹配的模式串P ...
- css派生选择器
后代选择器:即包含选择器,选择某元素的后代元素. 子元素选择器:只能选择某元素的子元素. 相邻兄弟选择器:可选择紧接在另一个元素后的元素,且两者有相同的夫元素.
- jQuery插件开发入门
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间.这篇文章将概述jQuery插件开发的基本知识,最佳做法和常见的陷阱. 入门 编写一个jQuery插件开始于给jQuery.fn加入 ...
- Python之路第十二天,高级(5)-Python操作Mysql,SqlAlchemy
Mysql基础 一.安装 Windows: 1.下载 http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.31-winx64.zip 2.解压 ...
- Stripies(POJ 1862 贪心)
Stripies Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14151 Accepted: 6628 Descrip ...