Java学习 1.5——静态Static的作用与用法
在网上查阅资料,静态大约分为这几部分:修饰成员变量;修饰成员方法;静态代码块;静态导包,下面会用代码一一展示:
修饰成员变量:
一个类中,使用static修饰成员变量后,该变量变为全局变量,当再次new这个类时,该变量不会被初始化,也就是说如果实例化两个这个类的对象,改变其中一个静态变量的值,另一个对象的静态变量的值也会改变。
public class StaticTest {
private String st1 = "abc";
private static String st2 = "abc";
public String getSt1() {
return st1;
}
public void setSt1(String st1) {
this.st1 = st1;
}
public static String getSt2() {
return st2;
}
public static void setSt2(String st2) {
StaticTest.st2 = st2;
}
public static void main(String[] args) {
StaticTest staticTest1 = new StaticTest();
staticTest1.st2 = "def";
staticTest1.st1 = "def";
StaticTest staticTest2 = new StaticTest();
System.out.println("st1="+staticTest2.st1);
System.out.println("st2="+staticTest2.st2);
}
}
运行结果:
st1=abc
st2=def Process finished with exit code 0
看这段代码,StaticTest类里面定义了两个字符串变量,一个是静态的,一个是非静态的。后面实例化了两个对象,给staticTest1的两个变量赋值,展示staticTest2两个变量的值,发现staticTest2的静态变量的值发生了改变。
修饰成员方法:
修饰成员方法,可以直接用类名.方法名来调用该方法,当然,也可用类名.静态变量名来获取静态变量的值。静态方法可以调用静态变量:
public class StaticTest {
private String st1 = "abc";
private static String st2 = "abc";
public String getSt1() {
return st1;
}
public void setSt1(String st1) {
this.st1 = st1;
}
public static String getSt2() {
return st2;
}
public static void setSt2(String st2) {
StaticTest.st2 = st2;
}
public static void main(String[] args) {
System.out.println(StaticTest.getSt2());
System.out.println(StaticTest.st2);
StaticTest.setSt2("def");
System.out.println(StaticTest.getSt2());
System.out.println(StaticTest.st2);
}
}
运行结果:
abc
abc
def
def Process finished with exit code 0
还是刚才的代码,做一点改变,最后几行可以看到,调用类里面的getSt2()方法可以直接用类来调用,这样可以减少资源的浪费。
静态代码块:
静态代码块跟静态变量差不多:主要是体现在初始化,在初次初始化运行,再次初始化时静态代码块不会再次运行:
public class StaticTest {
private String st1 = "abc";
private static String st2 = "abc";
public StaticTest() {
}
static {
System.out.println("静态代码块执行");
}
public String getSt1() {
return st1;
}
public void setSt1(String st1) {
this.st1 = st1;
}
public static String getSt2() {
return st2;
}
public static void setSt2(String st2) {
StaticTest.st2 = st2;
}
}
public class Test {
public static void main(String[] args) {
StaticTest staticTest = new StaticTest();
StaticTest staticTest1 = new StaticTest();
}
}
运行结果:
静态代码块执行 Process finished with exit code 0
可以看到,StaticTest类初始化了两次,但是只运行了一次静态代码块。
静态导包:
将类的方法直接导入到当前类,直接使用方法名即可调用该方法:
import Statictest.StaticTest;
import static Statictest.StaticTest.getSt2;
public class Test {
public static void main(String[] args) {
System.out.println(getSt2());
}
}
运行结果:
静态代码块执行
abc Process finished with exit code 0
直接打印静态变量的值。
Java学习 1.5——静态Static的作用与用法的更多相关文章
- Java中static变量作用和用法详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- java学习(四)static静态变量 和this
java中的this /* this:是当前类的对象引用.简单的记,它就代表当前类的一个对象. 注意:谁调用这个方法,在该方法内部的this就代表谁. this的场景: 解决局部变量隐藏成员变量 */ ...
- Java 静态static 关键字作用
静态的方法1.可以通过类名打点访问2.不能使用this关键字3.不能访问非静态的属性和方法 /* * 静态的方法: * 1.属于类的方法,可以通过类名打点访问 * 2.方法中不能使用this关键字 * ...
- 【Java学习笔记】静态导入
package p2; //import static java.util.Collections.max; import java.util.ArrayList; import static jav ...
- Java学习日记-5 关键字static和final 以及接口
乱入:表达式中的自动类型转换 char,short,byte都升级为int类型进行运算,结果为int,但其原变量类型并不改变. 所以,byte b = 10; b = b*b; 编译时会报错.但是写 ...
- 5.JAVA基础复习——JAVA中的static关键字作用与用法
static关键字: 特点: 1.static是一个修饰符,用于修饰成员.(成员变量,成员函数)static修饰的成员变量 称之为静态变量或类变量. 2.static修饰的成员被所有的对象共享. 3. ...
- java 抽象(abstract) 构造 静态(static) 总结--2017-03-02
抽象类:不能实例化!子类继承抽象类, 实例化子类对象才可以调用, 多态的体现; 抽象方法:必须被重写才能被调用; 静态方法:类名直接调用,或者实例化对象调用; 构造方法:new后面的括号里面带参数,就 ...
- Java学习(final、static关键词)
final关键词 概念:final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量.不能修饰构造方法. 特点: 1.final修饰的类不可以被继承,但可以继承别的类 ...
- java 抽象方法 能用 静态 static 修饰,或者 native 修饰 么
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha static与abstract不能同时使用 用static声明方法表明这个方法在不生成类 ...
随机推荐
- Nginx之rewrite四种flag
利用nginx的rewrite命令,可以实现URL的重写,可在nginx配置文件的server.location.if部分使用,对于rewrite有四种不同的flag. redirect:返回302临 ...
- 小菜鸟之shell
Linux shell编程 目录 什么是Shell 1 Shell脚本的执行方式 1 第一种:输入脚本的绝对路径或相对路径 1 第二种:bash或sh +脚本 1 Shell中的变量 2 定义变量 2 ...
- 【AtCoder】ARC062
ARC062 C - AtCoDeerくんと選挙速報 / AtCoDeer and Election Report 每次看看比率至少变成多少倍能大于当前的数 然后就把两个人的票都改成那个数 #incl ...
- JavaScript之二分法
二分法: 二分查找,又称为折半查找. 注意:二分法查找的数组必须是有序的. /* 获取元素88在数组中第一次出现的索引位置 如果数组元素中存在88,则直接返回88在数组中的索引位置即可. 如果 ...
- Flask-WTF的使用
Flask-WTF的使用 一.安装Flask-WTF Flask-WTF 对 WTForms 进行了封装使它能够在 Flask 框架中可以被调用,其中 Flask-WTF 的功能都是继承自 WTFor ...
- python-day5(正式学习)
格式化输出 符合某种输出规范的print函数的应用 第一种方式 使用占位符.漫威里有个人叫斯塔克,他平时站在人堆里(print函数引号内的内容)我们看不出来和其他人有什么异常(print的终端显示), ...
- Go语言操作NoSql
NSQ平台 NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ. NSQ NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异. N ...
- 【第一季】CH06_FPGA设计Verilog基础(三)
[第一季]CH06_FPGA设计Verilog基础(三) 一个完整的设计,除了好的功能描述代码,对于程序的仿真验证是必不可少的.学会如何去验证自己所写的程序,即如何调试自己的程序是一件非常重要的事情. ...
- 后端排序,debug模式中map的顺序出错
js中map遍历的顺序是按照插入的顺序来执行的.如果map的来源是字符串转换的,那么就会按照字符串中key值的顺序进行遍历.千万不要被debug中显示的顺序误导,这里应该是为了方便查看对key进行了字 ...
- python爬取信息并保存至csv
import csv import requests from bs4 import BeautifulSoup res=requests.get('http://books.toscrape.com ...