成员变量和局部变量的区别_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,一经查实,立即删除!

相关文章

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

【云图】如何制作附近实体店的地图?-微信微博支付宝 原文:【云图】如何制作附近实体店的地图?-微信微博支付宝 摘要: 附近连锁店地图与全国连锁店地图,最大的区别就是: 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…

GitHub上创建组织

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

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

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

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

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

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

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

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

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

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

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

WinForm窗体自适应分辨率

我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观。实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可…

ping端口_干货分享:shell脚本批量telnet ip 端口

问1:亲,请教个问题,我这边有200台服务器,怎么看它是否在线呢?答:简单,下载个PingInfoView直接批量ping下,能ping通的就在线,反之离线。问2:那怎么看我这200台…

IIS 7.0 部署MVC

开发的MVC 3.0 项目,在部署服务上还是与需要花一点功夫,这里把遇到的问题罗列出来。 本文主要介绍IIS 7.5中安装配置MVC 3.0的具体办法! 部署必备: Microsoft .net FrameWork 4.0安装包 安装ASP.NET MVC 3.0 如果 Asp.NET v4.0.30…

不是有效的函数或过程名_过程和函数

VBA代码有两种组织形式,一种是过程,另一种就是函数。其实过程和函数有很多相同之处,除了使用的关键字不同之外,还有不同的是:函数有返回值,过程没有。函数可以在Access窗体,查询中像一般的Acces…

浏览器快捷键_浏览器快捷键,让你事半功倍

随着互联网时代的发展,手机、电脑已经成为人们生活中不可或缺得一部分,无论是生活还是工作。尤其是办公室族,几乎每天都要面对电脑7/8个小时,查找各种信息或者浏览新闻,浏览器无可厚非的成为了装机必备的软件&#xff…

小程序iconfont报错_【经验】开发微信小程序经验总结

一.技术要求(语言方面)有H5或H4和CSS3的书写经验,没有建议观看B站中的 渡一教育-Web前端开发(html css不算语言)。强烈推荐他们的视频,主讲人没有口音且视频质量很高,是哈尔滨理工大学毕业之后进入阿里工作的Web前端工程师 姬成老师。JavaScr…

python移动端web开发代码_移动web前端开发,前端开发工作总结,移动端页面开发-我主页-一个前端程序猿的博客...

热门推荐html/css一、escape和它们不是同一类简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。编码之后的...标签:03-22html/css场景: 在项目开发过t程中需要找到url中某个参数的值…

【BZOJ】【1086】 【SCOI2005】王室联邦

树分块 orz vfk && PoPoQQQ http://vfleaking.blog.163.com/blog/static/174807634201231684436977/http://blog.csdn.net/popoqqq/article/details/42772237 这题是要把树分成一块一块的……(感觉好像不是原来理解的树分块处理操作啊……) 每块…

红黑树和平衡二叉树的区别_面试题精选红黑树(c/c++版本)

红黑树的使用场景非常广泛,比如nginx中用来管理timer、epoll中用红黑树管理事件块(文件描述符)、Linux进程调度Completely Fair Scheduler用红黑树管理进程控制块、CSTL中map,set的底层实现全是用的红黑树。掌握红黑树的原理以及使用场景&…

linux中按行读取文件,Linux按行读取文件内容

方法1&#xff1a;while循环中执行效率最高&#xff0c;最常用的方法。function while_read_LINE_bottm(){While read LINEdoecho $LINEdone < $FILENAME}#!/bin/bashwhile read linedoecho $linedone < filename(待读取的文件)注释&#xff1a;习惯把这种方式叫做read釜…

酱油和gbt酱油哪个好_酱油越贵越好?认准瓶身这4处,轻松挑到好酱油!

买酱油这件事&#xff0c;爷叔阿姨们都不陌生。现在市面上酱油品种很多&#xff0c;除了普通的生抽、老抽以外&#xff0c;还有些别的口味&#xff0c;比如海鲜酱油、菌菇酱油等等&#xff0c;价格比普通的还高出不少&#xff0c;这些酱油真的更鲜更好吗&#xff1f;买酱油的2大…