作者: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. albus就是要第一个出场(线性基)

    传送门 这个题题目描述真怪异--就不能说人话吗-- 人话:给定长为n的序列A,定义f(s)为集合s内所有元素异或值,求A的所有子集的f值从小到大排列后,q在其中第一次出现的下标对10086取模的值. ...

  2. 初学Java(一)

    基本语法: 编写Java程序时,应注意以下几点: 1.大小写敏感:java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 2.类名:对于所有的类来说,类名的首字母应该大写.如果类名由 ...

  3. C++之运算符重载(前置++和后置++)

    今天在阅读<google c++ 编程风格>的文档的时候,5.10. 前置自增和自减:有一句话引起了我的注意: 对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.,理 ...

  4. 微信小程序把玩(三十)wx.request(object) API

    这里通过干活集中营的API接口真实请求下数据.如果提示URL 域名不合法,请在 mp 后台配置后重试修改asdebug.js两行代码即可可看下面图 百牛信息技术bainiu.ltd整理发布于博客园 定 ...

  5. bzoj4589

    fwt 原理并不知道 nim游戏石子异或和=0后手赢 那么也就是求a[1]^a[2]^...^a[n]=0的方案数 这个和bzoj3992一样可以dp dp[i][j]表示前i个数异或和为j的方案数 ...

  6. debugs

    import os def get_nova_credentials_v2(): d = {} d['version'] = '2.0' d['username'] = os.environ['OS_ ...

  7. JS获取元素的offsetTop,offsetLeft等相关属性

    1. obj.clientWidth //获取元素的宽度 obj.clientHeight //元素的高度 obj.offsetLeft //元素相对于父元素的left obj.offsetTop / ...

  8. HDFS源码分析三-DataNode实现

    3. DataNode 实现( 未完待续 )

  9. 电商:html样式集合

    1. <span class="big"  style="text-decoration:line-through;">原价:¥{zlcms:art ...

  10. Laravel中使用模型对数据进行操作

    public function orm(){ //查询表的所有记录 //$user = Admin::all(); //dd($user); //查询某一条记录 //$user = Admin::fi ...