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

作者: 密叔 | 来源:发表于2017-12-17 08:53 被阅读16次
    从零开始学Java封面5.jpg

    1. 理解 Java 中的变量

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

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

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

    1.jpg

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

    2.jpg

    Java 中变量是这样定义的:

    data_type variable_name = value;
    

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

    int passengers;//声明一个名字为 passengers的变量,指定存放数据类型为整数
    passengers = 0;//为 passengers 变量初始化一个整数值 0
    
    //也可以声明变量时,就初始化值。
    int passenger1 = 10;//定义变量paasenger1,并初始化值为整数10
    

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

    3.jpg

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

    [图片上传失败...(image-40991f-1513471949877)]

    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
    

    相关文章

      网友评论

        本文标题: 5. Java 中的变量 【连载 5】

        本文链接:https://www.haomeiwen.com/subject/imhywxtx.html