package object;
/*
* 1、static(静态的)我们从内存管理方面去思考
* 如何理解静态的static ?
* 从内存上考虑:我们在加载类的同时就已经加载与初始化了(静态的)static,(实际上属于类)
* 使他们在内存中常存,并且他们具有全局唯一性。
*
*
* 2、使用范围
* 2.1变量:类变量、静态变量
* 2.2方法:类方法、静态方法
* 2.3代码块:静态代码块
* 2.4嵌套类:静态内部类
*
*
*/
public class TestStatic {
public static void main(String[] args) {
StaticVariable display=new StaticVariable(1.1f,2.2f);
/*
* --2.如果类中有一个固定的常量,则可以赋予静态常量(从而达到节省空间
* 不必每创建一个实例就分配一次内存)
*/
display.TestStatic03();//1.1 2.2 3.3
StaticVariable.TestStatic02();
ClassMethod display02=new ClassMethod();
ClassMethod.TestMethod01();
System.out.println(ClassMethod.test0001);
}
}
//2.1静态变量
/*
* 静态变量与实例变量区别
* 1.内存:
* 静态变量在加载类过程中完成静态变量分配(且只分配一次)
* 实例变量在加载一个实例完成一次实例变量分配
* 2.类内部
* 静态变量,可以在任何方法直接访问
* 实例变量,只能在非静态方法访问
* 3.其他类
* 前者可以直接使用类名调,后者需要通过实例对象
* 4.静态变量作用
* --1.静态变量可以被类的所有实例共享(增加实例交互性)
* --2.如果类中有一个固定的常量,则可以赋予静态常量(从而达到节省空间
* 不必每创建一个实例就分配一次内存)
*/
class StaticVariable
{
int test01=55;
static int test02=555;
float test001;
float test002;
static float test003=3.3f;
public StaticVariable(float test001, float test002) {
super();
this.test001 = test001;
this.test002 = test002;
/*
* PS:在调用默认构造器时我们找不到静态变量
* 原因在于:构造器实际作用是创建对象,以及初始化属性
* 然而我们静态变量,一般是一个静态常量它不再改变
* 也就说明不需要再初始化了(不然静态无意义)
*/
}
public void TestStatic01()
{
test01=66;
test02=666;
}
static public void TestStatic02()
{
/*
* 2.类内部
* 静态变量,可以在任何方法直接访问
* 实例变量,只能在非静态方法访问
*/
//test01=66;
test02=666;
}
public void TestStatic03()
{
System.out.println(test001+" "+test002+" "+test003+" ");
}
}
// 静态方法
/*1、静态方法(或称为类方法),指被 static 修饰的成员方法。
*2、实例方法,指没有被 static 修饰的成员方法。
*
*3、静态方法与实例方法的区别:
* 1.静态方法,属于类,而不属于类的对象。(在调用时使用类调)
* 2.静态方法不能使用非static的变量、方法;this、super(与实例相关)
* 可以直接访问静态变量方法
* 3.可直接访问所属类的静态变量、静态方法、实例变量和实例方法。
*
*/// 4.静态方法,适合入口方法定义;比如单例模式,因从外部拿不到构造函数,
//所以定义一个静态的方法获取对象非常有必要。
class ClassMethod
{
static String test0001;
String test0002;
public void TestMethod02()
{
}
static public void TestMethod01()
{
//this();
//super();
//String test0002="g";
//TestMethod02();
test0001="ggg";
}
//2.静态方法,适合入口方法定义;比如单例模式,因从外部拿不到构造函数,
//所以定义一个静态的方法获取对象非常有必要。
public static String getTest0001() {
return test0001;
}
public static void setTest0001(String test0001) {
ClassMethod.test0001 = test0001;
}
}
/*静态方法与静态变量好处:
1. 属于类级别,无需创建对象就即可直接使用,使用方便。
2. 全局唯一,内存中唯一,静态变量可以唯一标识某些状态。
3. 类加载时候初始化,常驻在内存,调用快捷方便。
静态方法与静态变量缺点:
1. 静态方法不能调用非静态的方法和变量。
2.不能使用this和super关键字。
静态方法与静态变量适用场景:
1. 静态方法,最适合工具类中方法的定义;比如文件操作,日期处理方法等。
2.静态方法,适合入口方法定义;比如单例模式,因从外部拿不到构造函数,所以定义一个静态的方法获取对象非常有必要。
3.静态变量适合全局变量的定义;举例:用一个布尔型静态成员变量做控制标志。
————————————————
版权声明:本文为CSDN博主「春风化作秋雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiahao1186/article/details/121886704
*/
abstract class RewriteStatic
{
public abstract void Rewrite();
}
class RewriteStaticSon extends RewriteStatic
{
public void Rewrite()
{
System.out.print("我是重写的");
}
}
java static关键字
最新推荐文章于 2024-10-11 17:30:36 发布