首页 > 其他分享 >静态static关键字

静态static关键字

时间:2022-09-18 16:34:30浏览次数:70  
标签:初始化 square 静态方法 变量 静态 关键字 static

在类中,用static声明的成员变量为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。

注:static修饰的成员变量和方法,从属于类

  普通变量和方法从属于对象

  静态方法不能调用非静态成员,编译会报错

static关键字的用途:方便在没有创建对象的情况下进行调用方法或变量,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过 类名.方法名或变量名进行访问。

static可以用来修饰类的成员方法、类的成员变量,另外也可以编写static代码块来优化程序性能

 

static方法
static方法也成为静态方法,由于静态方法不依赖于任何对象就可以直接访问,因此对于静态方法来说,是没有this的,因为不依附于任何对象,并且由于此特性,在静态方法中不能访问类的非静态成员变量和非静态方法,因为非静态成员变量和非静态方法都必须依赖于具体的对象才能被调用。

 

static变量
static变量也称为静态变量,静态变量和非静态变量的区别:

静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化

非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响

static成员变量初始化顺序按照定义的顺序来进行初始化

 

static块
构造方法用于对象的初始化。静态初始化块,用于类的初始化操作。

在静态初始化块中不能直接访问非staic成员。

static块的作用:静态初始化块的作用就是:提升程序性能。

例如:

class Person{
    private Date birthDate;
    private static Date startDate,endDate;
    static{
        startDate = Date.valueOf("1946");
        endDate = Date.valueOf("1964");
    }

    public Person(Date birthDate) {
        this.birthDate = birthDate;
    }

    boolean isBornBoomer() {
        return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;
    }
}

  

自定义求平方数的静态方法示例:

package demo;

public class SquareInt {

	public static void main(String[] args) {
		int result;

		for (int x = 1; x <= 10; x++) {
			result = square(x);
			// Math库中也提供了求平方数的方法
			// result=(int)Math.pow(x,2);
			System.out.println("The square of " + x + " is " + result + "\n");
		}
	}

	// 自定义求平方数的静态方法
	public static int square(int y) {
		return y * y;
	}
}

  

结果

The square of 1 is 1

The square of 2 is 4

The square of 3 is 9

The square of 4 is 16

The square of 5 is 25

The square of 6 is 36

The square of 7 is 49

The square of 8 is 64

The square of 9 is 81

The square of 10 is 100

  

如果将子方法中的static去掉

会报错:Cannot make a static reference to the non-static method square(int) from the type SquareInt

原因:在main方法中没有实例化类对象,在访问非静态方法时,需要通过实例对象来访问,而在访问静态方法时,才可以直接访问

解决方法:可以实例化类对象

package demo;

public class SquareInt {

	public static void main(String[] args) {
		int result;
		SquareInt square = new SquareInt();
		for (int x = 1; x <= 10; x++) {
			result = square.square(x);
			// Math库中也提供了求平方数的方法
			// result=(int)Math.pow(x,2);
			System.out.println("The square of " + x + " is " + result + "\n");
		}
	}

	// 自定义求平方数的静态方法
	public  int square(int y) {
		return y * y;
	}
}

  

 

标签:初始化,square,静态方法,变量,静态,关键字,static
From: https://www.cnblogs.com/ashuai123/p/16705130.html

相关文章

  • 关于java中static说法
    在类中,用static声明的成员变量为静态成员变量,也成为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。static修饰的成员变量和方法从属于类,普通变量和方法......
  • java static 静态
    static是java语言中的关键字,意思是“静态的”,它可以用来修饰变量、方法、代码块等,修饰的变量叫做静态变量,修饰的方法叫做静态方法,修饰的代码块叫做静态代码块。static的......
  • static 知识
    static修饰的内容:static表示静态的意思,可用来修饰类变量,类方法。static主要用于创建独立于具体对象的域变量或者方法。static修饰变量时,此静态变量为该类所有对象共享,非......
  • java中 static关键字
    在类中,使用static修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。静态成员不依赖于......
  • static关键字
    1.staticstatic翻译为“静态”所有static关键字修饰的都是类相关的,类级别的。所有static修饰的,都是采用“类名.”的方式访问。static修饰的变量:静态变量static修饰的方法:......
  • ES6 let关键字和var关键字的区别
    建议:在默认情况下使用const,而只有在你知道变量值需要被修改的情况下使用let......
  • C++ 静态断言 static_assert
    目录从运行时断言谈起静态断言static_assert(C++11)单参数静态断言(C++17)static_assert使用场景参考资料C++11引入了静态断言static_assert,可以在编译期进行断言。从......
  • 单例以及模板类的静态成员变量的生命周期
    我们有如下的单例设计模式的实现:template<typenameT>classOnceSingle{public:OnceSingle()=delete;OnceSingle&operator=(constOnceSingle<T>&m)=......
  • 【已解决】wordpress 修改固定链接 伪静态URL出现nginx 404错误
    一、站点设置 打开站点设置,选择伪静态,选择wordpress   二、wordpress设置打开wordpress后台,选择设置---》固定链接 选择一个你喜欢的格式点击保存 之......
  • wordpress固定链接+宝塔nginx配置伪静态访问
    一、站点设置 打开站点设置,选择伪静态,选择wordpress   二、wordpress设置打开wordpress后台,选择设置---》固定链接 选择一个你喜欢的格式点击保存 之......