首页 > 编程语言 >java中 static关键字

java中 static关键字

时间:2022-09-18 10:35:53浏览次数:78  
标签:java 变量 静态 成员 关键字 对象 static 修饰

在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。

静态成员不依赖于类的特定实例,被类的所有实例共享,就是说 static 修饰的方法或者变量不需要依赖于对象来进行访问,只要这个类被加载,java虚拟机就可以根据类名找到它们。

调用静态成员的语法形式如下:

类名.静态成员
注意:
  • static 修饰的成员变量和方法,从属于类。
  • 普通变量和方法从属于对象。
  • 静态方法不能调用非静态成员,编译会报错。

 

静态成员变量的访问方式

方式1: 可以使用对象进行访问。
格式: 对象.变量名。

方式二: 可以使用类名进行访问。
格式: 类名.变量名;

推荐使用是类名直接访问静态的成员。


注意:
1. 非静态的成员变量只能使用对象进行访问,不能使用类名进行访问。

2. 千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的才使用static修饰 。

static修饰成员变量的应用场景

如果一个数据需要被所有对象共享使用的时候,这时候即可使用static修饰。

 

static特点

1 随着类的加载而加载,静态会随着类的加载而加载,随着类的消失而消失。说明它的生命周期很长。

2 优先于对象存在。-->静态是先存在,对象是后存在。

3 被所有实例(对象)所共享。

4 可以直接被类名调用

 

静态的成员变量与非静态的成员变量的区别

1. 作用上的区别:
1. 静态的成员变量的作用共享一个数据给所有的对象使用。
2. 非静态的成员变量的作用是描述一类事物的公共属性。
2. 数量与存储位置上的区别:
1. 静态成员变量是存储方法 区内存中,而且只会存在一份数据。
2. 非静态的成员变量是存储在堆内存中,有n个对象就有n份数据。
3. 生命周期的区别:
1. 静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失。
2.非静态的成员数据是随着对象的创建而存在,随着 对象被垃圾回收器回收而消失。

静态函数要注意的事项

1. 静态函数是可以调用类名或者对象进行调用的,而非静态函数只能使用对象进行调用。

2. 静态的函数可以直接访问静态的成员,但是不能直接访问非静态的成员。
原因:静态函数是可以使用类名直接调用的,这时候可能还没有存在对象,
而非静态的 成员数据是随着对象 的存在而存在的。

3. 非静态的函数是可以直接访问静态与非静态的成员。
原因:非静态函数只能由对象调用,当对象存在的时候,静态数据老早就已经存在了,而非静态
数据也随着对象的创建而存在了。

4. 静态函数不能出现this或者super关键字。
原因:因为静态的函数是可以使用类名调用的,一旦使用类名调用这时候不存在对象,而this
关键字是代表了一个函数 的调用者对象,这时候产生了冲突。

静态的数据的生命周期

静态的成员变量数据是优先于对象存在的。

 

static什么时候修饰一个函数

如果一个函数没有直接访问到非静态的成员时,那么就可以使用static修饰了。 一般用于工具类型的方法

静态函数不能访问非静态的成员?

静态函数只要存在有对象,那么也可以访问非静态的数据。只是不能直接访问而已。

 

 

子方法static去掉的报错(求平方数的静方法)的原因

 

 

 

错误报告:

Cannot make a static reference to the non-static method square(int) from the type TestSeed

(不能从TestSeed类型对非静态方法square(int)进行静态引用)

无法进行静态引用

Java语法规定:静态成员不能直接访问非静态成员

ava有一个让人极易“混淆”的语法,它允许使用对象来调用对象来调用Static修饰的成员变量、方法,但实际上这是不应该的。static修饰的成员属于类本身,而不属于该类的实例,既然static修饰的成员完全不属于该类的实例,那么就不应该允许使用实例去调用static修饰的成员变量和方法!所以,Java编程时不要使用对象去调用static修饰的成员变量、方法,而是应该使用类去调用static 修饰的成员变量、方法。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

子方法static去掉的报错(求平方数的静方法)的原因

标签:java,变量,静态,成员,关键字,对象,static,修饰
From: https://www.cnblogs.com/JJTyyds/p/16704312.html

相关文章

  • JAVA 方法(函数)的重载
    所谓方法重载,就是在同一个作用域内,方法名相同但参数个数或者参数类型不同的方法。publicclasstest1{publicstaticvoidmain(String[]args){//方法......
  • JAVA 调用方法(函数)实现打印矩形
    publicclasstest1{publicstaticvoidmain(String[]args){printRectangle(3,5);//调用printRectangle方法实现打印矩形printRectangle(2,4......
  • JAVA break和continue的区别和应用
    1.break语句:1)打印直角三角星型publicclasstest1{publicstaticvoidmain(String[]args){inti,j;for(i=1;i<=9;i++){//外层循环......
  • static关键字
    1.staticstatic翻译为“静态”所有static关键字修饰的都是类相关的,类级别的。所有static修饰的,都是采用“类名.”的方式访问。static修饰的变量:静态变量static修饰的方法:......
  • 好书推荐之《深入理解JAVA虚拟机》
    大佬推进这本书作为JVM的入门书籍,是每一个JVAV工程师必备的。 简介这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典,繁体版在台湾也......
  • 8年Java Stream API,8个问题看懂Streams!
    8年JavaStreamAPI,8个问题看懂Streams!是es,自JavaSE8发布以来已经8年了,其中包含StreamAPI、FunctionalInterfaces、TimeAPI和许多更重要的特性,但是Lambda和......
  • 使用 Amazon Rekognition、Lambda 和 JavaScript 进行面部识别
    使用AmazonRekognition、Lambda和JavaScript进行面部识别创建面部搜索lambda函数以按图像搜索面部亚马逊识别亚马逊识别是一个基于云的SAAS平台提供计算机......
  • JavaScript 中的混入
    JavaScript中的混入Photoby阿列克谢·鲁班on不飞溅介绍在继承中,大多数编程语言不支持多级继承,这意味着您不能为特定类拥有多个父级。Javascript也不支持多级......
  • 简单的 JavaScript 数字格式化方法
    简单的JavaScript数字格式化方法每个大型社交媒体网站都以与93.1K追随者、100万订阅者或2.5B浏览量相同的方式格式化他们的数字,他们这样做是因为用紧凑的数字设计......
  • 在 JavaScript 中从数组中删除空值
    在JavaScript中从数组中删除空值下面介绍如何在JavaScript中从数组中删除空值。我将向您展示两种方法,第一种使用纯JavaScript和数组过滤器方法,第二种使用Lodash。......