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声明方法表明这个方法在不生成类 ...
随机推荐
- 真理胜于一切 JAVA模拟表单提交
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- 消息服务百科全书——为什么使用MQ
为什么要使用MQ?有如下几个好处: 解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的.消息系统在处理过程中间插入了一个隐含的.基于数据的接口层,两边的处理过程都要实现这一接口.这允许你独 ...
- (转)如何真正实现由文档驱动的API设计?
前言 本文主要介绍了一种新的开发思路:通过反转开发顺序,直接从API文档中阅读代码.作者认为通过这种开发方式,你可以更清楚地知道文档表达出什么以及它应该如何实现. 如果单从API文档出发,由于信息量不 ...
- PHP获取指定时间的前6个月月份 、获取前6天日期
//获取前6个月月份 public function to_sex_month(){ $today = input('param.today') ? input('param.today') : da ...
- 阿里云 负载均衡 HTTP转HTTPS
一.相关文档 1.证书服务 2.简单路由-HTTP 协议变为 HTTPS 协议 二.阿里云操作界面 1.云盾证书服务管理控制台(查询CA证书服务) 2.负载均衡管理控制台 三.相关文档 1.Syman ...
- vue2.0和animate.css的结合使用
animate.css是一款前端动画库,相似的有velocity-animate. 上述是一个完整的结构.其中重要的几个点用箭头表示出来.首先在transition组件内部,需要定义两个基本的clas ...
- linux--查看磁盘空间大小使用情况
1. linux查看磁盘空间大小命令 df -h Df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息, 命令格式: df -hl 显示格式为: 文件系统 容量 ...
- NPOI 实现在已存在的Excel中任意位置开始插入任意数量行,并填充数据
1 npoi版本2.1.3.1 2 需要添加的引用: using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using System.IO;using N ...
- Spring源码解析 - springMVC核心代码
一.首先来讲解下springMVC的底层工作流程 1.首先我们重点放在前端控制器(DispatcherServlet) 其类图: 因为从流程图看,用户的请求最先到达就是DispatcherServle ...
- 5.API详解
Dao 中需要通过 SqlSession 对象来操作 DB.而 SqlSession 对象的创建, 需要其工厂对象 SqlSessionFactory.SqlSessionFactory 对象, 需要 ...