首页 > 编程语言 >Java知识6 局部变量、成员变量和类变量的区别【多测师】

Java知识6 局部变量、成员变量和类变量的区别【多测师】

时间:2022-10-26 12:35:31浏览次数:47  
标签:多测师 变量 构造方法 People 对象 Java public 构造函数

一、局部变量、成员变量、类变量
静态变量:由static修饰的变量为静态变量 本质为全局变量
成员变量、类变量区别:
1、成员变量随着对象创建存在 对象回收而释放
2、静态变量随着类加载而存在 类消失而消失

3、成员变量只能被对象调用
4、静态变量可以被对象和类调用

5、成员变量也称实例变量、数据存储在堆内存的对象中 称对象的特有数据
6、静态变量也称类变量、数据存储在方法区 称对象的共享数据

7、类变量声明在类中、方法体之外 但必须声明为static类型
8、静态方法不能使用this 因为this代表对象

举例如下:
局部变量:在方法、构造方法、语句块中定义的变量。其声明和初始化在方法中实现,在方法结束后自动销毁
public class ClassName{
public void printNumber(){
int a;
}
// 其他代码
}

成员变量:定义在类中,方法体之外。变量在创建对象时实例化。成员变量可被类中的方法、构造方法以及特定类的语句块访问。
public class ClassName{
int a;
public void printNumber(){
// 其他代码
}
}

类变量:定义在类中,方法体之外,但必须要有 static 来声明变量类型。静态成员属于整个类,可通过对象名或类名来调用。
public class ClassName{
static int a;
public void printNumber(){
// 其他代码
}
}

二、类构造方法
1、构造方法名字和类相同 没有返回值
2、不能直接调用构造方法 要通过new关键字来自动调用、从而创建类的实例
3、Java类必须要有构造方法 如果没有Java编译器会自动提供不带参数的构造方法
4、New关键字的作用:为对象分配内存空间 引起对象构造方法的调用
5、使用java类实例化一个对象的时候,如果在类中不显式的声明其构造函数,则会使用一个默认的构造函数来初始化对象。
实例:
//一个没有显式声明构造函数的类
public class People{
int age = 23;
public void getAge(){
System.out.print("the age is "+age);
}
}

//用这个类来实例化一个对象
People xiaoMing = new People(); // People() 是People类的默认构造函数,它什么也不干
xiaoMing.getAge();//打印年龄

可以在声明类的时候显式的声明一个构造函数:
//一个带显式构造函数的类
public class People{
int age = 23;
public void getAge(){
System.out.print("the age is "+ age);
}
// 显式声明一个带参数的构造函数,用于初始化年龄
public People(int a){
this.age = a;
}
}

//用这个类来实例化一个对象
People xiaoMing = new People(20); // 使用带参数的构造函数来实例化对象
xiaoMing.getAge(); // 打印出来的年龄变为20

三、成员变量与局部变量的区别
1、声明位置不同
成员变量也就是属性,在类中声明的。
局部变量,在方法中声明或代码块中声明。

2、初始值不同
成员变量如果没有赋值则是有默认值的,数据类型不同则默认值不同。
局部变量是没有默认值,也就是说必须先声明,再赋值,最后才使用。

3、在一个类中,局部变量可以与成员变量同名,但是局部变量优先,如果非要访问成员变量的属性,则必须使用 this.color
this 代表当前这个对象,也就是当前谁调用这个方法则这个对象就是谁。
对象与引用的区别
对象是具体的一个实例,如:new Student(); new 表示创建一个对象,并在堆内存中开辟一块空间。
用名称是存放的对象的地址。

 



标签:多测师,变量,构造方法,People,对象,Java,public,构造函数
From: https://blog.51cto.com/u_15846941/5797794

相关文章

  • java知识4 变量类型【多测师】
    类变量:用static来修饰独立于方法之外publicstaticvoidmain(String[]args){StaticintallClicks=0;———类变量}实例变量:不用static修饰符修饰、独立于方法之......
  • java知识3 修饰符【多测师】
    JAVA修饰符:分为:访问修饰符和非访问修饰符访问控制修饰符:default(即缺省,什么也不写):在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。private:在同一类......
  • java知识2 类和对象【多测师】
    JAVA面向对象语言、支持以下的概念:多态继承封装抽象类对象实例方法重载对象:对象是类的一个实例、有状态和行为例如:莉斌是一个对象她的状态有:名字、中国人、黄种人行......
  • java知识1 基本语法【多测师】
    实例:publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println(“HelloWorld”);}}JAVA基础语法对象:对象是类的一个实例,有状......
  • 实际项目中工作流程【多测师】
    一)工作流程:(敏捷开发模式-大概1个月1-2个版本)1,启动点-UI交互-需求澄清-UI设计稿-SSP(批量注册用户/批量添加好友)-MS系统(token入口控制)-T1剥离-批量接口改造-开发编码-开发联......
  • ddt数据驱动介绍和使用【多测师】
    一ddt基础知识(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例,并使其显示为多个测试用例。参考文档:https://ddt.readthedocs.io/en/latest/1.ddt类装饰器,用于......
  • ddt数据驱动最简单的应用二【多测师】
    importddtimportunittestfromHTMLTestRunner_cnimportHTMLTestRunnerimportostest_data=[1,2,3]defrun(value):print(value)defsuites(testPath):discover......
  • 史上最全的app相关的面试题【多测师】
    app测试常问的问题一)web端测试和app测试的区别?答:可以从app测试场景来介绍两者的区别web端主要是在浏览器上面进行测试app端主要是在不同的手机上面进行测试然后web端测试谷......
  • ddt数据驱动最简单的应用一【多测师】
    [email protected](unittest.TestCase):test_data=[(1,2,3),(3,4,5)]@classmethoddefsetUpClass(cls):pass@cl......
  • 接口测试加密算法理解【多测师】
    问题:1.接口中有数据要进行加密,如何处理?答:(1)写个函数或者方法,把要加密的参数使用这个函数过滤一遍,等于就是说把数据丢进去,加密了之后,再通过这个加密好的数据传输过去就可以......