作者: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)的更多相关文章

  1. Java中的构造函数——通过示例学习Java编程(14)

      作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=25 构造函数是用来初始化新创建的对象的代码块. ...

  2. Java中的数据类型——通过示例学习Java编程(5)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=15 数据类型用来定义变量可以采用的值,例如,如果变 ...

  3. 学习笔记--Java中的变量

    Java中的变量 /** * 关于 Java 语言当中的变量: * * 1. 什么是变量? * - 变量的本质上来说是内存空间,这块空间有(数据类型.名字.字面值) * - 变量包括三部分:数据类型. ...

  4. Java中静态变量与实例变量

    知识回顾 上一篇总结了java中成员变量和局部变量的区别,这一篇将总结静态变量和实例变量的一些特性和区别. 示例代码 package Variable; public class VariableDe ...

  5. 谈谈java中静态变量与静态方法在有继承关系的两个类中调用

    谈谈java中静态变量与静态方法在有继承关系的两个类中调用 学习的中如果遇到不明白或者不清楚的的时候,就是自己做些测试,自己去试试,这次我就做一个关于静态变量和静态方法在有继承关系的两个类中的问题测试 ...

  6. java中打印变量地址

    在java中打印变量的地址 这个代码是在startoverflow上看到的,跟大家分享一下. import sun.misc.Unsafe; import java.lang.reflect.Fiel ...

  7. Java中的变量与变量的作用域

    关于Java中的变量及变量的作用域 关于Java中的变量及变量的作用域 0. 变量的概念 在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据.系统分配的内存单元要使用一个标记符来标 ...

  8. Java中关于变量的几种情况

    Java中关于变量的几种情况 1.继承时变量的引用关系 class Animals { int age = 10; void enjoy() { System.out.println("An ...

  9. Java中静态变量的声明位置

    Java中静态变量只能是成员变量,局部方法中的局部变量除final外不能有任何其他修饰符,例如: public class Test { static String x = "1" ...

随机推荐

  1. 「HNOI2004」「LuoguP2292」L语言(AC自动机

    题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...

  2. 微信小程序内嵌网页能力开放 小程序支持内嵌网页文档说明

    为了方便开发者灵活配置微信小程序,张小龙现在开放了小程序的内嵌网页功能,这是一个非常大的惊喜啊,以后意味着你只要开放一个手机端网站,就可以制作一个小程序了哦.操作方法1.开发者登录微信小程序后台,选择 ...

  3. AndroidStudio删除项目

    右键左上角的 项目名 右键 > delete 磁盘里的文件还需要手动删除

  4. Tool:Power Designer

    ylbtech-Tool:Power Designer 1.返回顶部 1. PowerDesigner最初由Xiao-Yun Wang(王晓昀)在SDP Technologies公司开发完成.Powe ...

  5. ++i和i++的效率孰优孰劣

    在内建数据类型的情况下,效率没有区别: 在自定义数据类型的情况下,++i效率更高! 分析: (自定义数据类型的情况下) ++i返回对象的引用: i++总是要创建一个临时对象,在退出函数时还要销毁它,而 ...

  6. js事件触发器fireEvent和dispatchEvent

    转自:https://www.cnblogs.com/tiger95/p/6962059.html 事件触发器就是用来触发某个元素下的某个事件,IE下fireEvent方法,高级浏览器(chrome, ...

  7. 2.1-2.2 HBase数据存储

    一.HBase数据检索流程 一篇介绍HBase数据读写流程的解析的博文:http://hbasefly.com/2016/12/21/hbase-getorscan/?wsfatm=uqvhl3 1. ...

  8. 使用vs2019进行Linux远程开发

    通常,当我们开发Linux程序时有两种方案: 在Linux上直接编写程序并进行运行测试和调试 在Windows或Mac OS X上借助工具进行远程开发 虽然我自己是在Linux环境上直接进行开发的,但 ...

  9. Linux命令之清空当前文件

    vi进入文件 英文状态下按下  / 输入  %d 执行 清空当前文件 over!O(∩_∩)O哈哈~

  10. 解决 unity 生成 android apk read Resources

    http://www.cnblogs.com/solq/archive/2012/05/21/2511522.html TextAsset t = (TextAsset)Resources.Load( ...