1.6(java学习笔记)static关键字
static关键字
1.static修饰变量也称静态变量,静态变量存放在静态区被该类的所有对象共享。
例如,定义了一个类class User{static Sring city = "a城"},将类中的一个city属性定义为静态变量。我们创建一个对象use1,然后可以通过user1.city = "b城"修改静态区里面User类的信息。User类中city的初始值就发生了改变,变成了b城。我们再新建一个对象use2,打印user2,会发现user2.city变成了b城。
(结合之前讲的内存分析说的,静态区中存放类信息,静态变量等,静态区只有一个,被所有线程共享);
如果没有加static的变量,称为非静态变量,非静态变量只属于对象,每个对象有每个对象的非静态变量。修改非静态变量只会改变单个对象的值,并不会改变类类中的信息。
以下列代码为例:
public class TestStatic {
public static void main(String[] args){
User a1 = new User();
a1.Info();
a1.city = "b城"; //city为静态变量,修改后存放在静态区的User类中city的信息也被修改了。
a1.Info(); //此时类中city的值时“b城”
User a2 = new User(); //新建一个对象,输出city我们会发现输出的b城
a2.Info(); //说明类中的信息已经被修改,而静态变量被所有对象共享。
//如果city没有static修饰,那么修改a1.city修改的只是属于a1的非静态变量,
} //并不会改变类中的信息,新建a2输出a2还是a城(city非static修饰时)。
}
class User{
static String city = "a城"; //修改后就相当于static String city = “b城”;
void Info(){
System.out.println(city);
}
}
输出结果:
a城
b城
b城
2.static修饰方法,最主要的目的是可以不用创建对象直接通过类来引用方法,也称类方法可通过类名直接调用。
public class TestStatic {
public static void main(String[] args){
User.Info(); //没有创建对象,但可以通过类名直接调用方法。
}
}
class User{
static String city = "a城";
static void Info(){
System.out.println(city);
}
}
输出结果:
a城
但有一点需要注意,静态方法中不能调用非静态方法、属性,但非静态方法中可以调用静态方法、属性。
class User{
String name;
static String city = "a城";
static void Info(){
System.out.println(city);
name = "123"; //静态方法中调用了非静态变量或方法是不行的,在name前面加上static就可以了。
} //即静态方法中可以调用静态方法和属性。
}
class User{
static String name;
static String city = "a城";
void Info(){
System.out.println(city);
name = "123"; //非静态方法中可以调用静态方法和属性。
}
}
1.6(java学习笔记)static关键字的更多相关文章
- Java学习笔记——static关键字与静态的使用方法
static:可以修饰成员变量和成员方法. 当变量被static修饰后,则其可以直接被类名调用.类名.成员. static特点: 随着类的加载而加载: 优先于对象存在: 被所有的对象共享,节省空间,但 ...
- Java学习笔记18---final关键字修饰变量、方法及类
英语里final这个单词大家都知道是"最终的"意思,其实还有一个意思是"不可更改的".在Java里,final关键字作"不可更改的"来解释更 ...
- java学习笔记11-static关键字
如果在类中使用static关键字创建方法,这种方法称为类方法,可以在这个类中直接引用.而不是用static创建的方法.这种方法称为对象方法(实例方法),需要创建对象后才能使用. package les ...
- Java学习:static 关键字概述
static 关键字概述 一旦用了static关键字,那么这样的内容不再属于对象自己.而是属于类的,所以凡是本类的对象,都共享同一份. 如果没有static关键字,那么必须首先创建对象,然后通过对象才 ...
- 【Java学习笔记之十五】Java中的static关键字解析
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- Java学习笔记之---static
Java学习笔记之---static static不能修饰类,局部变量 (一)静态成员的特征 static+属性 静态属性 无论实例化出来多少个对象,都会共用同一块静态空间,类对象共享 静态成员从第 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
随机推荐
- ionic3自定义图标
http://blog.csdn.net/qq993284758/article/details/78107412
- 复杂的json分析
在复杂的JSON数据的格式中,往往会对JSON数据进行嵌套,这样取值会比之前的取值稍微复杂一点,但是只要思路清晰,其实取法还是一样的.就跟if else语句一样,如果if中套if,if中再套if,写的 ...
- c++ STL(2)
Vector: #include "stdafx.h" #include<iostream> #include<vector> #include<al ...
- event loop 小记
水平不够,只能整理一下知乎大神的回答,勉强度日这样子 在一个事件循环里,会有两个主要的队列:task queue 和 micro-task quene. 其中 task 包括: script(整体代码 ...
- 给 ecplise 配置struts2配置环境
下面介绍在Eclipse中配置Struts2的过程: 一.下载Struts2,因为Struts2是开源的,百度或者google一下就可以找到下载地址.我下载的是struts-2.3.1.2版本 的,解 ...
- 打砖块(codevs 1257)
题目描述 Description 在一个凹槽中放置了n层砖块,最上面的一层有n块砖,第二层有n-1块,……最下面一层仅有一块砖.第i层的砖块从左至右编号为1,2,……i,第i层的第j块砖有一个价值a[ ...
- MySql binlog(理论篇)
1.什么是binlog? binlog日志用于记录所有更新了数据的sql语句或保存被修改的记录Row: 有了binlog,可以用于实时备份,master/slave主从同步: 在5.0版本前支持文本格 ...
- DotNet 学习笔记 MVC模型
Model Binding Below is a list of model binding attributes: •[BindRequired]: This attribute adds a mo ...
- selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
http://www.seleniumhq.org/download 1. selenium 3.x开始,webdriver/firefox/webdriver.py的__init__中,exec ...
- 【反演复习计划】【COGS2432】爱蜜莉雅的施法
也是一个反演. 第一次手动推出一个简单的式子,激动.jpg 原题意思是求:$Ans=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\phi(gcd(i,j))$随 ...