继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

5. Java 中的变量 【连载 5】

密叔
关注TA
已关注
手记 12
粉丝 131
获赞 175

图片描述

1. 理解 Java 中的变量

程序中需要处理数据,Java 中的变量是用来装载数据。变量类似一个盒子,我们通过这个盒子,就可以操作盒子里面的数据。

Java 中每个变量都有名称和数值。名称不会变化,但是里面的数值可以变化,像一个盒子里面可以去装不同的东西。

Java 变量中的值不一定总是数值,还可以是文本内容或者字母,还可以是其他类型的数据。

Java 中变量定义需要显示的指定存放数据类型,一旦指定,只能存储指定类型数据。当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

Java 中变量是这样定义的:

data_type variable_name = value;

比如用变量 passengers 记录公交车每个站乘客的数量。

int passengers;//声明一个名字为 passengers的变量,指定存放数据类型为整数
passengers = 0;//为 passengers 变量初始化一个整数值 0

//也可以声明变量时,就初始化值。
int passenger1 = 10;//定义变量paasenger1,并初始化值为整数10

注意:这里的 “=” 不是数学里面等于的意思,是把右边的数据,赋值给左边变量。

定义变量后,可以对变量更新为不同的值。变量只保留最后一次更新的值。

4

2. Java 中变量的命名约定

Java中变量的名字命名需要遵循一些规则:

1)变量名称中不可以有空格。比如 int pas senger = 0;是不合法的, 因为passengers中存在空格

2)变量名称可以以特殊字符开头,例如$和像和_ 像int $num = 10;是有效的定义。

3)根据Java编码标准,变量名应以小写字母开头;对于具有多个单词的冗长变量名称,可以这样做:int smallNumber; int bigNumber; (用大写字母开始第二个单词,也称为驼峰命名规则)。

4)Java 中的变量名称区分大小写,也就是int Num;int num;定义了两个不同的变量。

3. Java 变量中的类型

Java 变量中的类型分为三种:

1)静态变量(或者类变量)

2)实例变量

3)局部变量

3.1 静态变量

静态变量也被称为类变量,因为它们与类相关联,并且对于类的所有实例对象都是通用的。例如,A类中定义了一个静态变量 a,对于从 A 类的创建的任何实例对象都能够访问静态变量 a。如果通过一个实例对象改变了静态变量 a 的值,那么静态变量的改变会应用到其他所有的对象。实例说明一下:

public class StaticVariableExample {
    //定义一个静态变量
    public static String myClassVar = "class or static variable";

    public static void main(String[] args) {
        // 创建三个实例对象
        StaticVariableExample obj1 = new StaticVariableExample();
        StaticVariableExample obj2 = new StaticVariableExample();
        StaticVariableExample obj3 = new StaticVariableExample();

        //三个对象都可以访问 myClassVar ,输出 “class or static variable”
        System.out.println(obj1.myClassVar);
        System.out.println(obj2.myClassVar);
        System.out.println(obj3.myClassVar);

        //通过实例对象 obj2 改变静态变量 myClassVar的值
        obj2.myClassVar = "Change value for myClassVar";

        // 三个都会输出:"Change value for myClassVar"
        System.out.println(obj1.myClassVar);
        System.out.println(obj2.myClassVar);
        System.out.println(obj3.myClassVar);

    }
}

控制台输出:

class or static variable
class or static variable
class or static variable
Change value for myClassVar
Change value for myClassVar
Change value for myClassVar

静态变量可以理解为属于类(Class)模板的变量,不属于实例对象,但是对象可以访问。因为属于类模板,所有也可以直接访问静态变量,例如在上面实例的 main方法中可以直接这样打印输出:

System.out.println(myClassVar);

注意:只有静态变量可以这样直接访问。局部变量和实例变量不可以直接访问

3.2 实例变量

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

实例变量示例:

public class InstanceVariableExample {
    //定义实例变量
    String myInstanceVar = "instance variable";

    public static void main(String[] args) {
        //创建三个实例对象
        InstanceVariableExample obj1 = new InstanceVariableExample();
        InstanceVariableExample obj2 = new InstanceVariableExample();
        InstanceVariableExample obj3 = new InstanceVariableExample();

        //每个对象拥有实例变量副本,都输出:“instance variable”
        System.out.println(obj1.myInstanceVar);
        System.out.println(obj2.myInstanceVar);
        System.out.println(obj3.myInstanceVar);

        //obj2改变的只是自己的实例变量副本,不改变其他实例对象的实例变量
        obj2.myInstanceVar = "Change Text";

        System.out.println(obj1.myInstanceVar);
        System.out.println(obj2.myInstanceVar);
        System.out.println(obj3.myInstanceVar);

    }
}

控制台输出:

instance variable
instance variable
instance variable
instance variable
Change Text
instance variable

可以理解为实例对象拥有各自的实例变量,类只是定义了一个实例变量的模板。产生新的实例对象时,会从类模板拷贝实例变量给实例对象。

3.3 局部变量

什么是局部变量,顾名思义,该类型变量只在一个局部范围内有效,超出范围无效。外部就无法访问该变量。

局部变量是定义在一个类的函数里面,其作用范围被限制在该函数内部,外部无法访问该变量。

[认识 Java]() 文章中介绍过函数的概念

下面,我用一个例子来说明:

public class LocalVaribleExample {

    //定义一个实例变量 myVar
    public String myVar = "instance variable";

    public void myMethod() {
        // 定义一个局部变量,只作用在该方法内部
        String myVar = "Inside Method";
        String myVar2 = "Inside Method 2"
        System.out.println(myVar);
    }

    public static void main(String[] args) {
        //创建一个实例对象
        LocalVaribleExample obj = new LocalVaribleExample();
        System.out.println("调用函数");
        obj.myMethod();
        System.out.println(obj.myVar);
        //System.out.println(obj.myVar2);//会编译出错,外部无法访问方法内局部变量
    }
}

控制台输出:

调用函数
Inside Method
instance variable

说明:局部变量的作用范围只在方法内部

如果不声明实例变量:

public String myVar = "instance variable";

那么,main 方法中的直接调用:

System.out.println(obj.myVar);

会抛出编译错误。因为无法在myMethod外更改和访问myVar局部变量。

4. 更多练习实例

4.1 Java程序来查找一个字符的ASCII值

ASCII是用于将英文字符表示为数字的代码,英文字母的每个字母都被分配了从0到127的数字。例如,大写字母P的ASCII代码是80。

在Java编程中,我们有两种方法来查找字符的ASCII值

1)通过给int变量分配一个字符

2)通过类型转换字符值为int

public class Demo {

    public static void main(String[] args) {

        char ch = 'P';
        int asciiCode = ch;
        // 强制转换char类型为int类型
        int asciiValue = (int)ch;

        System.out.println("ASCII value of "+ch+" is: " + asciiCode);
        System.out.println("ASCII value of "+ch+" is: " + asciiValue);
    }
}

控制台输出:

ASCII value of P is: 80
ASCII value of P is: 80

4.2 Java 程序中两个数字相乘

1)控制台输入两个整数,并打印结果:

import java.util.Scanner;

public class Demo {

    public static void main(String[] args) {

        /* 读取用户的键盘输入的扫描器对象
         */
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter first number: ");

        // 读取键盘输入的数字,并赋值给变量num1
        int num1 = scan.nextInt();

        System.out.print("Enter second number: ");
        int num2 = scan.nextInt();

        // 使用后关闭扫描器
        scan.close();

        // 计算两个整数相乘的结果
        int product = num1*num2;

        //控制台打印乘法结果
        System.out.println("Output: "+product);
    }
}

控制台:

Enter first number: 20
Enter second number: 6
Output: 120

2)两个小数相乘:

这里我们使用数据类型double来表示数字,可以输入整数以及浮点数。

import java.util.Scanner;

public class Demo {

    public static void main(String[] args) {

        //读取用户的键盘输入的扫描器对象
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter first number: ");

        // 读取键盘输入的数值,并赋值给变量num1
        double num1 = scan.nextDouble();

        System.out.print("Enter second number: ");
        double num2 = scan.nextDouble();

        // 使用后关闭扫描器
        scan.close();

        // 计算两个数值相乘的结果
        double product = num1*num2;

        //控制台打印乘法结果
        System.out.println("Output: "+product);
    }
}

控制台:

Enter first number: 1.5
Enter second number: 2.5
Output: 3.75

4.3 计算三角面积

1)用户输入宽和高

import java.util.Scanner;
class AreaTriangleDemo {
   public static void main(String args[]) {   
      Scanner scanner = new Scanner(System.in);

      System.out.println("Enter the width of the Triangle:");
      double base = scanner.nextDouble();

      System.out.println("Enter the height of the Triangle:");
      double height = scanner.nextDouble();

      //Area = (width*height)/2
      double area = (base* height)/2;
      System.out.println("Area of Triangle is: " + area);      
   }
}

控制台输出:

Enter the width of the Triangle:
2
Enter the height of the Triangle:
2
Area of Triangle is: 2.0

2)程序中定义宽和高

class AreaTriangleDemo2 {
   public static void main(String args[]) {   
      double base = 20.0;
      double height = 110.5;
      double area = (base* height)/2;
      System.out.println("Area of Triangle is: " + area);      
    }
}

控制台输出:

Area of Triangle is: 1105.0
打开App,阅读手记
6人推荐
发表评论
随时随地看视频慕课网APP