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声明方法表明这个方法在不生成类 ...
随机推荐
- 把Javascript 对象转换为键值对连接符字符串的方法总结
307down votefavorite 93 Do you know a fast and simple way to encode a Javascript Object into a strin ...
- ssm+reids缓存整合
在说正文之前我们先介绍一下redis: redis是当今比较热门的非关系型数据库之一,他使用的是key-value的键值对来进行存储,是一个存在于内存之中的数据库,我们一般用于做数据缓存.当我们需要大 ...
- 解决:Could not resolve bean definition resource pattern [/WEB-INF/classes/spring/applicationContext-*.xml]
问题: 用Maven搭建spring.springmvc.mybatis时,运行报错: org.springframework.beans.factory.BeanDefinitionStoreExc ...
- NOIP2012 DAY1 T2 国王游戏
题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最前面 ...
- dedecms发布文章时间显示多少分钟前
/**文章发布多少时间前*/function tranTime($time) { $rtime = date("m-d H:i",$time); $htime = date(&qu ...
- golang代码中生成pprof和trace报告
// 生成 CPU 报告 import ( "context" "runtime/pprof" "log" ) func cpuProfil ...
- 简单分析synchronized不会锁泄漏的原因
最近看到一句话:内部锁synchronized不会造成锁泄漏(Lock Leak). 锁泄漏是指一个线程获得某个锁以后,由于程序的错误.缺陷致使该锁一直没法被释放而导致其他线程一直无法获得该锁的现象. ...
- ubuntu14 vim编译
(1) ./configure --prefix=/usr (2) make VIMRCLOC=/etc/vim VIMRUNTIMEDIR=/usr/share/vim/vim74 MAKE=&qu ...
- centos7 firewall指定IP与端口、端段访问(常用)
https://blog.csdn.net/yipianfuyunsm/article/details/99998332 https://www.cnblogs.com/co10rway/p/8268 ...
- Win Server 2012 配置运行 .net core 环境
今天拿到一台 全新的win 2012 服务器配置服务器环境 记录一下 首先装好IIS 打开服务器管理器 - 添加功能和角色 好 安装完IIS 看一下服务器有没有安装 core的运行环境(全新 ...