Static关键字的使用
Static关键字的使用
static关键字的作用:
用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用。
首先我们来介绍类变量
当static修饰成员变量时,该变量称为类变量,该类的每个对象都共享同一个类变量的值,任何
对象都可以更改该变量的值,但也可以在不创建该类对象的情况下,通过类名对类变量进行操作
命名格式
static 数据类型 变量名;
static int age;
下面我们来举个例子,让大家体会体会类变量的作用
就比如梁山有108位好汉我们给这108位好汉按照次序每人一个编号,这就需要使用到类变量
定义一个Person类
public class Person {
private int age;
private String name;
private int id;
private static int count=1;
public int getId() {
return id;
} @Override
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
", id=" + id +
'}';
} public void setId(int id) {
this.id=count;
count++;
} public Person(int age, String name) {
this.age = age;
this.name = name;
this.id=count;
count++;
} public Person() {
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
主函数
public class Test {
public static void main(String[] args) {
Person one = new Person(18, "及时雨宋江");
System.out.println(one);
Person two = new Person(18, "卢俊义");
System.out.println(two); }
}
结果
我们看到id的数值在不断的+1,这是因为他们的id都等于了一个公共的类变量
接下来我们来介绍静态方法
静态方法即类中使用static修饰的方法,该方法使用类名可以直接调用,不需要创建类的对象
定义格式
修饰符 static 返回置类型 方法名 (参数列表){
//执行语句
}
示例
public static void eat(){
System.out.println("吃饭了");
}
使用静态方法的注意事项
静态方法只可以直接访问类变量与静态方法
静态方法不能访问普通成员变量或成员方法
静态方法中不可以使用this关键字(因为this代表的是使用该方法的对象,而静态方法是属于类的,this无从指向,所以不可以使用)
下面我们写一段代码来使用一下静态方法
public class Person2 {
public static void test(){
System.out.println("这是静态方法" );
}
}
public class Test {
public static void main(String[] args) {
System.out.println("这是使用类名调用的:");
Person2.test();
Person2 person2 = new Person2();
System.out.println("这是使用对象调用的:");
person2.test(); }
}
运行结果
下面我们从内存的角度来讲讲静态的原理
先上代码
public class Teacher {
private int age;
private String name;
private static String subject="math";
public Teacher(int age, String name) {
this.age = age;
this.name = name;
} public Teacher() {
} @Override
public String toString() {
return "Teacher{" +
"age=" + age +
", name='" + name + '\'' +
'}';
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public static String getSubject() {
return subject;
} public static void setSubject(String subject) {
Teacher.subject = subject;
}
}
public class Test {
public static void main(String[] args) {
Teacher wang = new Teacher(18, "wang");
Teacher li = new Teacher(19, "li");
}
}
小结:普通成员变量操作各自空间,静态变量操作共享空间
静态代码块,敲重点!!!这个在我们后面学习中会经常使用到
什么是静态代码块呢?
定义在成员位置,使用static修饰的代码块{}
位置:类中方法外
执行随着类的加载而执行且只执行一次,优先于main方法和构造方法的执行
格式
public class Person {
static { }
}
这里就不深究了后面的文章我找几乎再说说
以上就是static关键字的一些基础知识,如有错误请各位批评指正
Static关键字的使用的更多相关文章
- 浅谈Static关键字
1.使用static关键字声明的属性为全局属性 未使用static关键字指定city之前,如果需要将Tom,Jack,Mary三人的城市均改成Beijing,需要再次声明三次对象的city为Beiji ...
- (转)Java中的static关键字解析
转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: &q ...
- PHP的final关键字、static关键字、const关键字
在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...
- Java Static关键字详解
提起static关键字,相信大家绝对不会陌生,但是,想要完全说明白,猛的一想,发现自己好像又说不太明白... ...比方说,昨天被一个同学问起的时候... ... 当然,不是所有人都像我一样学艺不精的 ...
- 关于Java中的static关键字
Java中的 static 关键字,确实是一个关键的字(key word),今天就来总结一下它的用法,说说为什么关键. Java中的 static 关键字主要是用来做内存管理的.理解了这句话才能够比较 ...
- Java中的static关键字解析
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...
- c++中static关键字的用法总结
类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动. 静态类成员包括静态数据成员和静态函数成员两部分. 一 静态数据成员: 类体中 ...
- static关键字
static关键字 static是静态修饰符,一般修饰成员.被static修饰的成员属于类,不属于单个这个类的某个对象. 1.static关键字的特点 a:随着类的加载而加载 b:优先于对象存在 (还 ...
- C++中的static关键字的总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...
- (转)Java中的static关键字解析
转自http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “sta ...
随机推荐
- git&github&Jenkins完成可持续集成
1.安装git :想要安装Git首先要下载Git的安装包程序. Git安装包下载地址:https://git-scm.com/downloads/ 2.双击下载git安装包进入安装界面, 点击下一步, ...
- Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?
在 C/C++/Java 等等语言中,整型变量的自增或自减操作是标配,它们又可分为前缀操作(++i 和 --i)与后缀操作(i++ 和 i--),彼此存在着一些细微差别,各有不同的用途. 这些语言的使 ...
- Java并发编程-Unsafe实现原理与Unsafe应用解析
前言 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别.不安全操作的方法,如直接访问系统内存资源.自主管理内存资源等,这些方法在提升Java运行效率.增强Java语言底层资源 ...
- Redis面试专题
Redis面试专题 1. 什么是redis? Redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) 2. Reids的特点 Redis本质上是一个Ke ...
- 【面试篇】寒冬求职之你必须要懂的Web安全
https://segmentfault.com/a/1190000019158228 随着互联网的发展,各种Web应用变得越来越复杂,满足了用户的各种需求的同时,各种网络安全问题也接踵而至.作为前端 ...
- Linux下9种优秀的代码比对工具推荐
大家好,我是良许. 在我们编写代码的时候,我们经常需要知道两个文件之间,或者同一个文件不同版本之间有什么差异性.在 Windows 下有个很强大的工具叫作 BeyondCompare ,那在 Linu ...
- Python3-hashlib模块-加密算法之安全哈希
Python3中的hashlib模块提供了多个不同的安全哈希算法的通用接口 hashlib模块代替了Python2中的md5和sham模块,使用这个模块一般分为3步 1.创建一个哈希对象,使用哈希算法 ...
- 学习oracle的SQL语句 练习
--1.查询emp表,显示薪水大于2000,且工作类别是MANAGER的雇员信息 select * from emp where sal > 2000and job = 'MANAGER'; - ...
- 【转载】张一鸣:为什么 BAT 挖不走我们的人才?
很多企业失败的时候,总说是政策的变化.市场的变化.消费者需求的变化.技术发展的变化等等,导致了失败,其实这都是瞎说,归根结底还是人的原因,都是因为你招的人不行.可见,人才对于一个企业的重要性. 互联网 ...
- webpack入门进阶(3)
1.11.预处理器文件处理 1.sass文件 sass这种css预处理器是以.scss结尾,需要用node-sass和sass-loader来处理 安装loader npm i node-sass s ...