@value 静态变量_Java中的变量——通过示例学习Java编程(4)

v2-8490973b680d9cf88454f13279222976_1440w.jpg?source=172ae18b

作者:CHAITANYA SINGH

来源:

通过示例学习Java编程(4):Java中的变量-方家话题​www.koofun.com

变量是用来存放可以更改的值的容器。例如,当我写int i = 10; 这里变量名是i,它与值10相关联,int i是表示该变量i可以存放整数值的数据类型。 我们将在下一个教程中介绍数据类型。 在本教程中,我们只讨论变量。

如何在Java中声明变量

要声明变量,请遵循以下语法:

1data_type variable_name = value;

这里的data_type表示数据类型,variable_name代表变量名字,value代表具体的数值。这个语句data_type variable_name的意思就是声明(宣布)一个叫variable_name的变量,这个变量的数据类型是data_type。后面的variable_name = value表示把数值value放到variable_name这个变量里面。在java编程中,您也可以先声明变量,然后再将值赋值给它,这样下面的两条语句可以起到和上面的一条语句一样的作用:

data_type variable_name;variable_name = value;

我们看这个例子:

int num;

这里num是变量名(变量命名一定要贴近变量的作用,这里num是数字这个单词number的头三个字母,表示用来存放数字),int是整数型数据类型,这条语句的意思就是声明或宣布一个类型为整数型(int)的变量num。数据类型有很多种,最常见的是int(整数,如10,120,130,等等)和char(字符,如'A','B',等等)。int表示整数,是integer(整数)的前三个字母,char表示字符,是character(字符)的前二个字母。具体的各种数据类型我们在后续的教程里面还会有详细的讨论,所以不要太担心它,只需了解到int num的意思就是声明一个数据类型是int的变量num,这个num变量里面只能保存整数值。

类似地,我们可以在声明变量时将值赋值,如下所示:char ch = 'A';int number = 100;

或者我们可以这样做:char ch;int number;...ch = 'A';number = 100;

java中的变量命名规则:

1)变量命名不能包含空格,例如:int num ber=100;因为变量名中有空格,因此无效。

2)变量名可以特殊字符(如$和_)开头。

3)根据java编码标准,变量名应该以小写字母开头,例如int数;对于有多个单词的长变量名称,可以这样做:int smallNumber;int bigNumber;(变量名里面第一个字母要小写,后面的单词的第一个字母要大写,如smallNumber变量名里面,单词small的s要小写,但后面的单词number的第一个字母N要大写)。

4)变量名在Java中要区分大小写,意思就是如果两个变量即使字母一模一样,但如果其中的字母有大小写的不同,也表示这是两个不同的变量。例如,smallN和smalln由于最后的字母一个是大写N,一个是小写n,就表示这是两个不同的变量。

Java中的变量类型,共有三种:

1)局部变量(Local variable)

2)静态(或类)变量(Static or class variable)

3)实例变量(Instance variable)

静态(或类)变量(Static or class variable)

静态变量也称为类变量,因为它们与类相关联,并且对于所有的类实例(class instance),也称为对象(object),都是通用的。 例如,如果我创建一个类的三个对象并访问这个类的静态变量,那么对这个类所有的三个对象来说,结果都是一样的。如果通过某个对象改变了静态变量的值,那么在这个类所有的三个对象看来,这个静态变量的值都改变了。

静态变量示例public class StaticVarExample {public static String myClassVar="class or static variable(类或静态变量)";public static void main(String args[]){StaticVarExample obj = new StaticVarExample();StaticVarExample obj2 = new StaticVarExample();StaticVarExample obj3 = new StaticVarExample();//下面三行代码显示以下文字: "class or static variable(类或静态变量)"System.out.println(obj.myClassVar);System.out.println(obj2.myClassVar);System.out.println(obj3.myClassVar);//下面代码通过调用对象obj2来改变静态变量myClassVar的值obj2.myClassVar = "Changed Text(这是更新后的文字)";//下面三行代码都可以显示以下文字:"Changed Text(这是更新后的文字)"System.out.println(obj.myClassVar);System.out.println(obj2.myClassVar);System.out.println(obj3.myClassVar);}}

输出文字:

class or static variable(类或静态变量)class or static variable(类或静态变量)class or static variable(类或静态变量)Changed Text(这是更新后的文字)Changed Text(这是更新后的文字)Changed Text(这是更新后的文字)

正如您所看到的,所有三个语句都显示相同的输出结果,而不管通过哪个实例访问它。这就是为什么我们可以访问静态变量而不使用这样的对象:

System.out.println(myClassVar);

请注意,只有静态变量才能像这样访问。例如,这种访问方法不适用于局部变量。

实例变量(Instance variable)

类的每个实例(对象)都有自己的实例变量副本。 与静态变量不同,实例变量拥有自己独立的实例变量副本。 我们在下面的程序中使用对象obj2更改了实例变量值,当我们使用所有三个对象显示变量时,只有obj2值被更改,其他二个对象的值保持不变。 这表明它们有自己的实例变量副本。

实例变量示例public class InstanceVarExample {String myInstanceVar="instance variable(这是实例变量)";public static void main(String args[]){InstanceVarExample obj = new InstanceVarExample();InstanceVarExample obj2 = new InstanceVarExample();InstanceVarExample obj3 = new InstanceVarExample();System.out.println(obj.myInstanceVar);System.out.println(obj2.myInstanceVar);System.out.println(obj3.myInstanceVar);obj2.myInstanceVar = "Changed Text(这是更新后的文字)";System.out.println(obj.myInstanceVar);System.out.println(obj2.myInstanceVar);System.out.println(obj3.myInstanceVar);}}

输出文字:

instance variable(这是实例变量)instance variable(这是实例变量)instance variable(这是实例变量)instance variable(这是实例变量)Changed Text(这是更新后的文字)instance variable(这是实例变量)

局部变量(Local variable)

在类的方法中声明的变量叫做局部变量,它们的使用范围仅限于方法内部的代码,这意味着您不能在方法之外的地方写代码来更改或访问在方法中声明的局部变量的值。

在本例中,为了演示局部变量的作用域,我声明了与局部变量同名的实例变量,来看看有什么效果。

局部变量示例

public class VariableExample {// instance variablepublic String myVar="instance variable(这是实例变量)";public void myMethod(){// local variableString myVar = "Inside Method(进入方法内,这是局部变量)";System.out.println(myVar);}public static void main(String args[]){// Creating objectVariableExample obj = new VariableExample();/* We are calling the method, that changes the * value of myVar. We are displaying myVar again after * the method call, to demonstrate that the local * variable scope is limited to the method itself.*/System.out.println("Calling Method(开始调用方法)");obj.myMethod();System.out.println(obj.myVar);}}

输出文字:Calling Method(开始调用方法)Inside Method(进入方法内,这是局部变量)instance variable(这是实例变量)

注意在方法之外的代码语句是不能更改和访问方法之内声明的局部变量的,如果我在类的代码中没有声明实例变量myVar,只在类的某个方法中声明了局部变量myVar,那么语句System.out.println(obj.myVar)就会引发编译报错。

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

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

相关文章

nmf算法 python_NMF算法简介及python实现

[ pca算法用于原始数据维数较高时对数据进行降维 关于pca算法的学习,有一篇分析特别详细的论文http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_componen基本原理NMF,非负矩阵分解,它的目标很明确,就是将大矩阵分…

python网络爬虫_Python爬虫实战之网络小说

今天和大家分享的是python爬虫实战,由于本人最近迷上了看网络小说,学生党又穷,只能看看网络dao版小说,现在这类dao版小说网站可以说非常的多,但是所有的网站进去都可以看见一大把的广告信息,非常影响我们的…

java反射机制详解_JAVA反射机制详解_JSP/Java编程_互联网开发技术网_传播最新的编程技术_php361.com...

今天,下午在和朋友聊天的时候,聊起了反射这个话题。我们就从下面这个段简单的代码开始吧。这个代码输出什么,想必大部分的读者跟我一样,会很快地知道答案:0 1 2 3 4 5 6 7 8 9。事实也是如此:朋友这个时候就…

activity 点击后传递数据给fragment_Fragment 新特性 : Fragment Result API 使用以及源码分析

原标题: Android Fragments: Fragment Result原文地址: https://proandroiddev.com/android-fragments-fragment-result......原文作者: Husayn Hakeem今年 Google 推出了 Fragment Result API 和 Activity Results API,用来取代之前的 Activity 和 Fragment 之间通…

android卡片层叠效果_ReactNative之Android绝对布局position:#x27;absolute#x27;问题

工作中会遇到各种各样的问题,ReactNative开发也是填坑不止。比如最近在开发需求中,就遇到一个问题。在一个卡片类型的右上角添加一个删除按钮。使用了绝对布局position:absolute属性,在Android上却无法正常显示,很是烦恼。有一个相…

敏捷开发的6个实战经验

在大型企业中经常是各种软件开发模式混用,一些采用敏捷开发,一些则是采用传统的瀑布式或RUP(统一软件开发过程)。敏捷开发,相对传统软件开发模式,它主要是针对快速变化的需求,不断优化管理流程&…

java 正则匹配括号是否成对_十分钟学会正则表达式

正则表达式用处挺广的,主要用于处理字符串。正则引擎想要在计算机语言中使用正则表达式,那么这门计算机语言必须要利用正则引擎去实现相应的正则库。主要的正则引擎分为以下两类:DFA 确定性的状态机。不使用”回溯”,效率高&#…

android token机制_你真的了解16.6ms刷新机制吗?

阅读本文前,请您先点击上面的蓝色字体“Android扫地僧”,“关注”后再点击置顶公众号,优质干货,重磅资源第一时间送达。散人丶https://juejin.im/post/5ce686a46fb9a07ec754f470前言之前在整理知识的时候,看到android屏…

dfa2.java 原理_DFA编程练习2

题目: 请设计DFA, 使其接受全部含有奇数个1的串, 假定 ∑ {0, 1}.解:DFA可能出现两个个状态:qeven: 读入了偶数个1的串.qodd: 读入了奇数个1的串, 该状态也是终结状态(accept state).它们的状态转移图如下:编写程序, 运行效果如下:测试用例说明:0000不被上图的DFA接受1111不被…

fread读取整个文件_qt如何实现大文件的加载和显示

最近研究了下如何用qt的原生控件来加载和显示大文件(>1G),分享下一些摸索经验。下文源码:compilelife/loginsight​github.com文件的内存映射在开始qt部分之前,我们先了解一个概念——文件的内存映射。我们知道一般…

linux内核编译及添加系统调用(hdu)_浅谈关于Linux内核write系统调用操作的原子性

Linux系统的write调用到底是不是原子的。网上能搜出一大堆文章,基本上要么是翻译一些文献,要么就是胡扯,本文中我来结合实例来试着做一个稍微好一点的回答。先摆出结论吧。结论包含两点,即write调用不能保证什么以及write调用能保…

java 判断对象为控制_Java流程控制

Java流程控制1、Scanner对象①java.util.Scanner是Java5的新特性,可以通过Scanner类来获取用户的输入。②基本语法:1 Scanner snew Scanner(System.in);③通过next()和nextLine()方法接受用户输入,通过hasNext()和hasNextLine()方法来判断用户…

directx最终用户运行时_运维定位服务故障时,前5分钟都在忙啥?

遇到服务器故障,问题出现的原因很少可以一下就想到。我们基本上都会从以下步骤入手,这些也是绝大多数运维工程师在定位故障时前几分钟的主要排查点:一、尽可能搞清楚问题的前因后果不要一下子就扎到服务器前面,你需要先搞明白对这…

IDE--ubuntu下安装 Source insight

2013-06-03 09:05 74人阅读 评论(0) 收藏 举报 习惯了在source insight下编辑阅读源码,在linux下用vi总是用不好 ,还是在ubuntu上用回熟悉的source insight。 在ubuntu中,安装windows程序用wine,然后用wine安装windows软件即可。…

python中什么是数据驱动_利用Python如何实现数据驱动的接口自动化测试

前言 大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取。下面话不多说了,来一起看看详细的介绍吧。 1、需求 某API,GET方法,token,mobile,email三个参数 token为必填项 mo…

密码锁 java接口_从synchronized和lock区别入手聊聊java锁机制

写这篇文章之前,我去百度了一下啥叫锁,百度百科上写道:置于可启闭的器物上,以钥匙或暗码开启。确实我们一般理解的锁就是门锁,密码锁,但是在计算机科学中,锁又是啥,说实话&#xff0…

lua 给userdata设置元表_lua学习之复习汇总篇

第六日笔记1. 基础概念程序块定义在 lua 中任何一个源代码文件或在交互模式中输入的一行代码程序块可以是任意大小的程序块可以是一连串语句或一条命令也可由函数定义构成,一般将函数定义写在文件中,然后用解释器执行这个文件换行在代码中不起任何作用&a…

集群服务负载均衡------LVS

个人的理解,以一种通俗易懂的方式讲述出来,如果有哪些地方说的不正确的话,希望大家留言指出来。笔者会非是常的感谢! Cluster服务器集群,直接理解为一些单一的服务器的集合通过某种方式组合起来,为客户端提…

tomcat jsp导入java_[导入]Tomcat JSP Web 开发中的乱码问题小姐

1. 静态页面的乱码问题文件的编码和浏览器要显示的编码不一致。1) 检查文件原始的编码, 可以用记事本打开, 然后选择另存为来看;2) 给当前页面加入一个指令来建议浏览器用指定的编码来显示文件字符内容.3) 如果系统是英文XP,没装东亚字符集支持, 也会显示乱码.2. JSP 页面的乱码…

四大开源分布式存储_ipfs分布式存储行业面临着四大主要风险,你知道是哪些吗?...

为了响应国家号召、推动分布式存储技术落地、防御行业风险,中国分布式存储产业联盟启动,全国从事IPFS以及分布式存储从业者对行业风险及联盟成立的必要性达成了高度共识,目前有36家以上的IPFS分布式存储行业企业填写了联盟申请表。几位国内知…