Java中的变量——通过示例学习Java编程(4)
作者:CHAITANYA SINGH
来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=14&cid=
变量是用来存放可以更改的值的容器。例如,当我写int i = 10; 这里变量名是i,它与值10相关联,int i是表示该变量i可以存放整数值的数据类型。 我们将在下一个教程中介绍数据类型。 在本教程中,我们只讨论变量。
如何在Java中声明变量
要声明变量,请遵循以下语法:
|
1
|
data_type variable_name = value; |
这里的data_type表示数据类型,variable_name代表变量名字,value代表具体的数值。这个语句data_type variable_name的意思就是声明(宣布)一个叫variable_name的变量,这个变量的数据类型是data_type。后面的variable_name = value表示把数值value放到variable_name这个变量里面。在java编程中,您也可以先声明变量,然后再将值赋值给它,这样下面的两条语句可以起到和上面的一条语句一样的作用:
|
1
2
|
data_type variable_name;variable_name = value; |
我们看这个例子:
|
1
|
int num; |
这里num是变量名(变量命名一定要贴近变量的作用,这里num是数字这个单词number的头三个字母,表示用来存放数字),int是整数型数据类型,这条语句的意思就是声明或宣布一个类型为整数型(int)的变量num。数据类型有很多种,最常见的是int(整数,如10,120,130,等等)和char(字符,如'A','B',等等)。int表示整数,是integer(整数)的前三个字母,char表示字符,是character(字符)的前二个字母。具体的各种数据类型我们在后续的教程里面还会有详细的讨论,所以不要太担心它,只需了解到int num的意思就是声明一个数据类型是int的变量num,这个num变量里面只能保存整数值。
类似地,我们可以在声明变量时将值赋值,如下所示:
|
1
2
|
char ch = 'A';int number = 100; |
或者我们可以这样做:
|
1
2
3
4
5
|
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),都是通用的。 例如,如果我创建一个类的三个对象并访问这个类的静态变量,那么对这个类所有的三个对象来说,结果都是一样的。如果通过某个对象改变了静态变量的值,那么在这个类所有的三个对象看来,这个静态变量的值都改变了。
静态变量示例
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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); }} |
输出文字:
|
1
2
3
4
5
6
|
class or static variable(类或静态变量)class or static variable(类或静态变量)class or static variable(类或静态变量)Changed Text(这是更新后的文字)Changed Text(这是更新后的文字)Changed Text(这是更新后的文字) |
正如您所看到的,所有三个语句都显示相同的输出结果,而不管通过哪个实例访问它。这就是为什么我们可以访问静态变量而不使用这样的对象:
|
1
|
System.out.println(myClassVar); |
请注意,只有静态变量才能像这样访问。例如,这种访问方法不适用于局部变量。
实例变量(Instance variable)
类的每个实例(对象)都有自己的实例变量副本。 与静态变量不同,实例变量拥有自己独立的实例变量副本。 我们在下面的程序中使用对象obj2更改了实例变量值,当我们使用所有三个对象显示变量时,只有obj2值被更改,其他二个对象的值保持不变。 这表明它们有自己的实例变量副本。
实例变量示例
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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); }} |
输出文字:
|
1
2
3
4
5
6
|
instance variable(这是实例变量)instance variable(这是实例变量)instance variable(这是实例变量)instance variable(这是实例变量)Changed Text(这是更新后的文字)instance variable(这是实例变量) |
局部变量(Local variable)
在类的方法中声明的变量叫做局部变量,它们的使用范围仅限于方法内部的代码,这意味着您不能在方法之外的地方写代码来更改或访问在方法中声明的局部变量的值。
在本例中,为了演示局部变量的作用域,我声明了与局部变量同名的实例变量,来看看有什么效果。
局部变量示例
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class VariableExample { // instance variable public String myVar="instance variable(这是实例变量)"; public void myMethod(){ // local variable String myVar = "Inside Method(进入方法内,这是局部变量)"; System.out.println(myVar); } public static void main(String args[]){ // Creating object VariableExample 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); }} |
输出文字:
|
1
2
3
|
Calling Method(开始调用方法)Inside Method(进入方法内,这是局部变量)instance variable(这是实例变量) |
注意在方法之外的代码语句是不能更改和访问方法之内声明的局部变量的,如果我在类的代码中没有声明实例变量myVar,只在类的某个方法中声明了局部变量myVar,那么语句System.out.println(obj.myVar)就会引发编译报错。
Java中的变量——通过示例学习Java编程(4)的更多相关文章
- Java中的构造函数——通过示例学习Java编程(14)
作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=25 构造函数是用来初始化新创建的对象的代码块. ...
- Java中的数据类型——通过示例学习Java编程(5)
作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=15 数据类型用来定义变量可以采用的值,例如,如果变 ...
- 学习笔记--Java中的变量
Java中的变量 /** * 关于 Java 语言当中的变量: * * 1. 什么是变量? * - 变量的本质上来说是内存空间,这块空间有(数据类型.名字.字面值) * - 变量包括三部分:数据类型. ...
- Java中静态变量与实例变量
知识回顾 上一篇总结了java中成员变量和局部变量的区别,这一篇将总结静态变量和实例变量的一些特性和区别. 示例代码 package Variable; public class VariableDe ...
- 谈谈java中静态变量与静态方法在有继承关系的两个类中调用
谈谈java中静态变量与静态方法在有继承关系的两个类中调用 学习的中如果遇到不明白或者不清楚的的时候,就是自己做些测试,自己去试试,这次我就做一个关于静态变量和静态方法在有继承关系的两个类中的问题测试 ...
- java中打印变量地址
在java中打印变量的地址 这个代码是在startoverflow上看到的,跟大家分享一下. import sun.misc.Unsafe; import java.lang.reflect.Fiel ...
- Java中的变量与变量的作用域
关于Java中的变量及变量的作用域 关于Java中的变量及变量的作用域 0. 变量的概念 在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据.系统分配的内存单元要使用一个标记符来标 ...
- Java中关于变量的几种情况
Java中关于变量的几种情况 1.继承时变量的引用关系 class Animals { int age = 10; void enjoy() { System.out.println("An ...
- Java中静态变量的声明位置
Java中静态变量只能是成员变量,局部方法中的局部变量除final外不能有任何其他修饰符,例如: public class Test { static String x = "1" ...
随机推荐
- Linux 命令行 Tricks
区分文件和目录: ls -F ls -F -R:递归显示目录 仅改变文件的修改时间,而不修改文件的内容: touch filename: 使用 file 命令查看文件类型: ASCII text di ...
- SPOJcot2 Count on a tree II (树上莫队)
You are given a tree with N nodes. The tree nodes are numbered from 1 to N. Each node has an integer ...
- [AH2017/HNOI2017]抛硬币
传送门 这个题的暴力比较好想--然后用一些组合的知识就可以变成正解了. 首先我们考虑a=b的情况.我们把扔出来的硬币看成是一个01序列,那么对于一个b获胜的序列,他在每一位都按位异或1之后必然是一个a ...
- 解决js 运算 精度缺失
github地址: https://github.com/MikeMcl/big.js
- 合并多个cv::Mat类型,即合并多个图片的接口
1. cv::Mat get_merage_image(cv::Mat cur_frame) { cv::Mat image_one=cur_frame; cv::Mat image_two=cur_ ...
- 将DotNetBar添加到工具箱中
一.首先得安装DotNetBar; 二.在工具箱的空白处右击=====>添加选项卡(图一)======>命名为DotNetBar(图二) 图一 图二 三.右击DotNetBar====== ...
- SSE2 Intrinsics各函数介绍
http://blog.csdn.net/fengbingchun/article/details/18460199
- python GUI尝鲜(但当涉猎,见往事耳)
第一步:简单的窗口和内容 import tkinter as tk window = tk.Tk() # 窗口obj对象 window.title('my TK') # 窗口名字 window.geo ...
- 启动Android模拟器问题集锦
1.新建AVD时,报错“no CPU/ABI system image available for this target”, 解决:在SDK Manager中下载System Image 2.Sys ...
- 为什么用思科里面的设备第一次ping的时候总会丢一个包呢?
大家搞计算机的不用讲,肯定都玩过网络吧? 比如一些思科,华为,华三这些模拟器,你们总会当你第一次用某个设备去ping某个设备的时候第一包总会被丢弃. 但我相信很多人都不知道为啥 会丢弃. 今天小 ...