成员变量和局部变量的区别_Java 变量类型

02a8d9c2cd7b2f4e4f3739b85f558690.gif点击上方“蓝字”带你去看小星星

今天主要学习Java变量类型,主要是局部变量、实例变量和类变量(静态变量)。

Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:

type identifier [ = value][, identifier [= value] ...] ;

格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。

以下列出了一些变量的声明实例。注意有些包含了初始化过程。

int a, b, c;         // 声明三个int型整数:a、 b、c

int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值

byte z = 22;         // 声明并初始化 z

String s = "runoob";  // 声明并初始化字符串 s

double pi = 3.14159; // 声明了双精度浮点型变量 pi

char x = 'x';        // 声明变量 x 的值是字符 'x'。

Java语言支持的变量类型有:

类变量:独立于方法之外的变量,用 static 修饰。

实例变量:独立于方法之外的变量,不过没有 static 修饰。

局部变量:类的方法中的变量。

public class Variable{

    static int allClicks=0;    // 类变量

    String str="hello world";  // 实例变量

    public void method(){

        int i =0;  // 局部变量

    }

}

3d611c4309952a5bfa3a37051a26ade9.gif

Java局部变量 

方法中或者某局部块中声明定义的变量或方法的参数被称为局部变量,局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

1.局部变量在方法体内里面的变量;

2.局部变量使用前必须初始化值;

3.局部变量没有默认初始化值;

4.局部变量的作用域是从定义开始到定义它的代码块结束;

备注:局部变量调用前没有初始化,所以编译的时候就会报错

1.在以下实例中age是一个局部变量。定义在pupAge()方法中,它的作用域就限制在这个方法中。

package com.runoob.test;

public class Test{ 

   public void pupAge(){

      int age = 0;

      age = age + 7;

      System.out.println("小狗的年龄是: " + age);

   }

   public static void main(String[] args){

      Test test = new Test();

      test.pupAge();

   }

}

运行结果为:

小狗的年龄是:7

2.在下面的例子中 age 变量没有初始化,所以在编译时会出错:

package com.runoob.test;

 public class Test{ 

   public void pupAge(){

      int age;

      age = age + 7;

      System.out.println("小狗的年龄是 : " + age);

   }

   public static void main(String[] args){

      Test test = new Test();

      test.pupAge();

   }

}

运行结果为:

Test.java:4:variable number might not have been initialized(变量的数目可能没有被初始化)

age = age + 7;

         ^

1 error

6772e3a32bb20cb4d93a0ac15fee779f.gifJava实例变量 

1.实例变量是类实例化后,系统为其创建的一个类的实例变量的拷贝,它们可以修改实例变量的值,而不会影响其他的实例;而类变量只有一个拷贝,修改它的值将影响所有的实例。

2.实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;

3.从属于类,由类生成对象时,才分配存储空间,各对象间的实例变量互不干扰,能通过对象的引用来访问实例变量。

import java.io.*;

public class Employee{

   // 这个实例变量对子类可见

   public String name;

   // 私有变量,仅在该类可见

   private double salary;

   //在构造器中对name赋值

   public Employee (String empName){

      name = empName;

   }

   //设定salary的值

   public void setSalary(double empSal){

      salary = empSal;

   }  

   // 打印信息

   public void printEmp(){

      System.out.println("名字 : " + name );

      System.out.println("薪水 : " + salary);

   }

   public static void main(String[] args){

      Employee empOne = new Employee("RUNOOB");

      empOne.setSalary(1000.0);

      empOne.printEmp();

   }

}

运行结果为:

$ javac Employee.java 

$ java Employee

名字 : RUNOOB

薪水 : 1000.0

6772e3a32bb20cb4d93a0ac15fee779f.gifJava类变量(静态变量) 

1.类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;

2.类变量则是用static声明,系统为每个类变量分配一次存储空间。即所有的实例共享一个类变量。

3.类变量(即静态变量)是全局变量

4.比较特殊的实例变量,用static修饰的,一个类共用这个变量,所有由这类生成的对象都共用这个变量,类装载时就分配存储空间。一个对象修改了变量,则所以对象中这个变量的值都会发生改变。

5.方法中或者某局部块中声明定义的变量或方法的参数被称为局部变量类变量又叫静态成员变量,它不需要创建对象就可以已经在内存中存在了。 

类就像一份说明书,说明这种类的实例对象的规格。而在创建实例对象的时候,内存中会为每一个实例对象的每一个非静态成员变量开辟一段内存空间,用来存储这个对象所有的非静态成员变量值。即使两个不同的实例对象是属于同一个class类,但是它们的同名非静态成员变量在内存中占用的空间是不同的。 

而静态成员变量也就是类变量不同。所有的实例对象都共用一个类变量,内存中只有一处空间是放这个类变量值的。因此,如果一个对象把类变量值改了,另外一个对象再取类变量值就是改过之后的了。

import java.io.*;

public class Employee {

    //salary是静态的私有变量

    private static double salary;

    // DEPARTMENT是一个常量

    public static final String DEPARTMENT = "开发人员";

    public static void main(String[] args){

    salary = 10000;

        System.out.println(DEPARTMENT+"平均工资:"+salary);

    }

}

运行结果为:

开发人员平均工资:10000.0

2653be012118f1058cf9c8e34e81699c.gif

参考菜鸟教程学习:https://www.runoob.com/java/java-variable-types.html

69702afe87014ea2ef8edacc754f3a4b.png精彩推荐Java基础语法Java对象和类Java基本数据类型a448d7960e53156af109229a39b2f034.png好看你就点点我1b748896c6b89cebe54d47f5c0078b3b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java gson序列化_java – Gson多态序列化

使用Gson 2.2.2我正在尝试序列化POJO(行为)的数组列表.我有一个适配器几乎是我在网上看到的副本:public class BehaviorAdapter implements JsonSerializer {private static final String CLASSNAME "CLASSNAME";private static final String INSTANCE …

【云图】如何制作附近实体店的地图?-微信微博支付宝

【云图】如何制作附近实体店的地图?-微信微博支付宝 原文:【云图】如何制作附近实体店的地图?-微信微博支付宝 摘要: 附近连锁店地图与全国连锁店地图,最大的区别就是: 1、附近连锁店地图需要先定位,然后搜…

php curl跨域cookie_PHP curl模拟文件上传(接口请求实现跨域文件中转)

3e2f08c0c11a8416dd107bbfc9159718.jpg客户端代码请求参数参数类型参数说明$urlstringpost提交的服务器url路径$data数组表单数据$files数组表单文件public function curl_custon_postfields($url, array $data array(), array $files array()){$curlfiles array();foreach …

oracle 分页_80分页查询,不止写法

据孔老先生说,茴香豆的茴字有四种写法,那oracle的分页查询又有多少种写法呢?分页查询,其实本质上就是topN查询的变种, 如果把topN的一部分结果集去掉,就变成了分页.topN的基本写法,两层select,第一层先order by,第二层再用rownum:select owner,object_name,object_id,rownum a…

笔记:Hadoop权威指南 第1章 初识Hadoop

大数据处理遇到问题: (1)、磁盘存储容量快速增加,但是访问速度进步不大;用户乐意使用磁盘共享访问。 (2)、硬件故障,可以使用备份解决。 (3)、分布式系统,需要可靠性。 关系数据库与MapReduce比较: (1)、磁…

php switch if,php switch 与 if else 区别

在php中switch是选择,if else也有同理,但是它们肯定是有区别的,那么我们来看看它们两者的区别在哪里呢,下面先看switch case语句吧。switch($id){case 1:return asp/;break;case 2:return phper/;break;case 3:return jsp/;break;…

python读取mat数据是字典形式如何转化为矩阵_mat2json, python读取mat成字典, 保存json...

python程序, 实现matlab的.mat格式转化为dict / json .第一个参数mat_path代表需要转化的mat路径;第二个参数, 如果需要把字典序列化成json, 添加这一参数, 代表json存放位置;返回值: 转化好的字典import osimport jsonimport scipy.io as spioimport pandas as pddef loadmat(…

GitHub上创建组织

4.3. 组织和团队 GitHub 在早期没有专门为组织提供账号,很多企业用户或大型开源组织只好使用普通用户账号作为组织的共享账号来使用。后来,GitHub推出了组织这一新的账号管理模式,满足大型开发团队的需要。 组织账号是不能用来登录的&#xf…

jquery根据value值php,表单php传值后jquery清除表单某项value问题

表单php文件我现在写了一个jquery打算每次提交后清除姓名中的内容代码如下$(function() { $(:input,#recordform) .not(:button, :submit, :reset, :hidden) .val() })请问怎么使用啊 加在哪个都无法实现提交后清除姓名求助!回复讨论(解决方案)不知道你的 js 函数 c…

python未将对象引用设置到对象的实例_在Python中使用pingarapi。服务器引发Webfault:对象引用未设置为对象的实例...

大家晚上好。我想说的是,我对wsdl、soap、suds这整件事都很陌生!尽可能多地提供信息。wsdl是这个http://api3.pingar.com/PingarAPIService.asmx?WSDL我花了好几个小时试图找出我正在使用的代码有什么问题,但最终还是一无所获。我借用了这里…

php 网站上传大小限制吗,配置PHP程序网站上传文件大小的限制!

PHP程序做的网站,上传文件大小的限制,是在PHP的配置文件中设置的。WORDPRESS网站也是PHP程序,我们会在WordPress里面的很多地方遇到文件上传大小的限制,比如在媒体库里面,上传图片;恢复数据时,上…

python元组元素抓7_Python3基础 tuple 通过拆分元组向元组中加入新的元素

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-9-23Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""def main():new_members (阳明贪…

Hypothesis, 一个很少人会用的Python测试库

在软件开发中,测试是保证代码质量和功能正确性的重要环节。为了提高测试的覆盖率和效率,开发者们创造了许多测试框架和工具。其中 Hypothesis 是一个强大且受欢迎的 Python 测试库,它利用属性基测试的思想,可以自动生成测试数据并…

用户留存 数据统计 php,位运算实现用户留存率

统计留存率之前先弄清一下留存率的概念,百度百科中是这么说的: 用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用应用的被认作是留存;这部分用户占当时新增用户的比例即是留存率,会按照每隔1单位…

php mcrypt取消,php – Mcrypt弃用后如何解密?

我已将我的php版本更新为7.1.我有使用mcrypt加密数据的功能.现在不推荐使用此功能.无论如何我都可以通过回到旧版本的php来解密数据.这是我使用的代码:public function encrypt($plaintext) {$ivSize mcrypt_get_iv_size(self::CIPHER, self::MODE);$iv mcrypt_cr…

线条边框简笔画图片大全_儿童简笔画画大全人物

由于简笔画有概括、形象、幽默、简练的特点,符合儿童生理、心理发展的需要,便于儿童接受与掌握。儿童简笔画画大全人物有哪些呢?下面由学习啦小编带来的儿童简笔画画大全人物,欢迎欣赏!儿童人物简笔画画图片大全欣赏儿童简笔画画人物图1:跳舞的小女孩简…

求两条轨迹间的hausdorff距离_题型 | 圆上有n个点到直线距离为d?

圆上有n个点到直线的距离为d圆 上到直线 的距离为 的点有( )个方法一:常规方法,画图分析由图象可以明显看出,圆在直线上方的部分内没有满足题意的点,在直线下方的部分内有两个满足题意的点。但是这样的方法…

java字符串包含连续数字,Java中包含数字的排序字符串

小编典典尝试使用此比较器,该比较器将删除所有非数字字符,然后将其余字符与数字进行比较:Collections.sort(strings, new Comparator() {public int compare(String o1, String o2) {return extractInt(o1) - extractInt(o2);}int extractInt…

MyEclipse的Debug模式

在MyEclipse中使用debug模式 1, 首先在一个java文件中设断点,然后运行,当程序走到断点处就会转到debug视图下, 2, F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over, 也就是执…

redis setnx 分布式锁_Redis 分布式锁PHP

Redis 分布式锁的作用在单机环境下,有个秒杀商品的活动,在短时间内,服务器压力和流量会陡然上升。这个就会存在并发的问题。想要解决并发需要解决一下问题1、提高系统吞吐率也就是qps 每秒处理的请求书解决问题一:采用内存型数据库…