首页 > 其他分享 >变量(局部变量、成员变量、静态变量)和方法,重载重写

变量(局部变量、成员变量、静态变量)和方法,重载重写

时间:2023-09-17 22:22:34浏览次数:35  
标签:静态方法 变量 静态 成员 局部变量 实例 重载

1.成员变量与局部变量的区别?

  语法形式:从语法形式上看,成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰。

  存储方式:从变量在内存中的存储方式来看,如果成员变量是使用 static 修饰的,那么这个成员变量是属于类的,如果没有使用 static 修饰,这个成员变量是属于实例的。而对象存在于堆内存,局部变量则存在于栈内存。

  生存时间:从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动生成,随着方法的调用结束而消亡。

  默认值:从变量是否有默认值来看,成员变量如果没有被赋初始值,则会自动以类型的默认值而赋值(一种情况例外:被 final 修饰的成员变量也必须显式地赋值),而局部变量则不会自动赋值。

  2.静态变量有什么作用?

  静态变量也就是被 static 关键字修饰的变量。它可以被类的所有实例共享,无论一个类创建了多少个对象,它们都共享同一份静态变量。也就是说,静态变量只会被分配一次内存,即使创建多个对象,这样可以节省内存。

  静态变量是通过类名来访问的,例如StaticVariableExample.staticVar(如果被 private关键字修饰就无法这样访问了)。通常情况下,静态变量会被 final 关键字修饰成为常量。

 

3.静态方法为什么不能调用非静态成员?

这个需要结合 JVM 的相关知识,主要原因如下:

  (1)静态方法是属于类的,在类加载的时候就会分配内存,可以通过类名直接访问。而非静态成员属于实例对象,只有在对象实例化之后才存在,需要通过类的实例对象去访问。

  (2)在类的非静态成员不存在的时候静态方法就已经存在了,此时调用在内存中还不存在的非静态成员,属于非法操作。

 

4.静态方法和实例方法有何不同?

(1)调用方式

  在外部调用静态方法时,可以使用 类名.方法名 的方式,也可以使用 对象.方法名 的方式,而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象

public class Person {
    public void method() {...}
    public static void staicMethod(){...}
public static void main(String[] args) { Person person = new Person(); person.method();// 调用实例方法 Person.staicMethod()// 调用静态方法 } }

(2)访问类成员是否存在限制

  静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),不允许访问实例成员(即实例成员变量和实例方法),而实例方法不存在这个限制。

 

5.重载和重写有什么区别?

  重载就是同样的一个方法能够根据输入参数的不同,做出不同的处理

  重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,就要覆盖父类方法

     

标签:静态方法,变量,静态,成员,局部变量,实例,重载
From: https://www.cnblogs.com/cjhtxdy/p/17709948.html

相关文章

  • springboot中配置类型转换,设置开启矩阵变量
    2023-09-17packagecom.hh.springboot05.config;importcom.hh.springboot05.bean.Pet;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.core.convert.converter.Conver......
  • 复习课6 变量的作用域与生命周期
    一.导入我们之前讲了局部变量与全局变量的区别,而作用域其实变量在程序的哪一段代码中能起到作用,哪里不能起到作用的一个概念,所以我们在讲作用域的时候很大一部分都是与上一篇文章相关的,所以如果没有看过上一篇文章建议先回看,那我们正式开始!二.作用域(局部变量)我们先来看一段简单的代......
  • 方法重载
       ......
  • RUST 每日一省:全局变量
    Rust中允许存在全局变量。它们一般有两种:常数和静态值。常量        我们使用关键字const来创建常量。由于常量未使用关键字let声明,因此在创建它们时必须指定类型。常量只能进行简单赋值,并且没有固定的内存地址,无论它们在何处使用都会被内联。        常量不......
  • Visual Studio 2019调试时不显示变量信息
    具体操作: 测试:  完美解决。......
  • 变量and输入输出
    变量and输出概念:变量,本质上是一个装东西的盒子,而且只能装一个值一、1.变量的命名规则变量的名字由字母,数字,下划线_组成,不能以数字开头,不能以关键字命名,且区分大小写变量的定义格式:变量名=值=赋值符号==等于a=1b=2.1c='hhh'3.变量的类型str字符型int整型,float......
  • Bash-变量(自定义/预定义/环境/位置参数)
    变量设置规则变量名称可由字母、数字和下划线组成,但不能以数字开头(与python命名规则一致)Bash中,变量的默认类型都是字符串型,如果要数值运算,则必须指定变量为数值型变量由=连接值,等号左右两侧不能为空变量的值如果有空格,需要用单引号或双引号包含变量的值可以使用'\'转义符......
  • spring依赖注入单例模式下(默认都是单例),类变量(实例变量)线程安全问题
    java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。Java的变量类型有:   成员变量类中的变量(独立于方法之外的变量)   局部变量类的方法中的变量。而java类的成员变量又有俩种:   静态变量(类变量):独立于方法之外的变量,用static修饰。   实例变......
  • 02什么是变量
    1什么是变量变量:一种会变化的状态,这个状态可以描述世间万物2Python中定义变量name='Yting'#变量名赋值符号变量值print(name)Ytingprint('Yting')Ytingx=10y=19height=1803定义变量名的命名规范变量名得具有某种意义变量名只能使用字母、......
  • less-变量
    @width:100px;//定义变量@default-border:1pxsolidblack;//变量名,变量值都可以被定义为变量//变量名被定义为变量后,使用时需要加@{}引用@bacc:background-color;.box{width:@width;height:@width/2;@{bacc}:limegreen;border-radius:4px;borde......