关于java:Java从零开始8Java-变量

3次阅读

共计 5471 个字符,预计需要花费 14 分钟才能阅读完成。

1. 什么是变量

在程序设计中,变量是指一个 蕴含值的存储地址 以及 对应的符号名称

从定义上来看,变量大略可分为两局部:变量的名字和变量的值,可通过变量名来拜访变量值。简略来说,变量就是存储数据的载体。

对于 Java 语言来讲,Java 是一种强类型的语言,因而变量都必须有一个类型。在 Java 代码中,变量是长这个样子的:

// = 左侧的 age 是变量名,右侧的 22 是变量值
int age = 22;

2. 创立变量

咱们曾经在下面看到了变量在代码中的样子,当初咱们来入手创立变量。

Java 语言中,咱们须要做两件事能力创立一个变量:

  1. 给变量起一个名字
  2. 定义变量的数据类型

创立变量的过程也叫 申明变量,申明变量的语法如下:

DataType 变量名;

Tips:对于数据类型,咱们将在下一大节介绍。此处只需晓得变量有类型之分即可。

申明一个变量,实例如下:

int a;

上述代码,申明了一个名字为 a,类型为 整型 的变量。

咱们能够再申明一个名字为 b,类型为 字符型 的变量,实例如下:

char b;

再申明两个整型的变量 agenumber,实例如下:

int age;
int number;

3. 给变量赋值

变量申明操作曾经通知了编译器变量的数据类型。数据类型决定了变量中能够寄存什么,不能寄存什么,上述的变量 aint 类型(整型),因而只能寄存整数。

一旦申明了一个变量,咱们就能够应用赋值语句为其赋值,实例如下:

// 变量申明语句
int a;
// 赋值语句
a = 1;

为变量调配值的语句,就称为赋值语句。须要特地揭示的是,语句中 = 的意义不同于数学中的等号,在 Java 中,= 是赋值符号。

对于变量的申明和赋值操作,咱们也能够将这两条语句合并成一条语句,实例如下:

int a = 1;

另外,如果要创立多个 类型雷同 的变量,咱们能够在一条语句中将多个变量的申明进行分组:

int a, b;
a = 1;
b = 2;

为了精简语法,还能够将变量的申明和赋值同时分组:

int a = 1, b = 2;

在作用域范畴内,变量的值可能随时拜访或从新赋值,比方:

class PrintVariable {public static void main(String[] args) {
        int a = 20;
        System.out.println("批改前变量 a =" + a);
        // 将变量 a 从新赋值为 100
        a = 100;
        System.out.println("批改后变量 a =" + a);
    }
}

运行后果:

批改前变量 a =20
批改后变量 a =100

上述代码中,申明了一个整型变量 a,且初始化值为 20,能够应用 a = 100; 这种赋值语句,对变量 a 从新赋值。

留神,在 Java 中,对变量进行从新赋值,这样的写法是谬误的:

int a = 20;
int a = 100;

编译代码,将会抛出异样:

Test.java:5: 谬误: 已在办法 main(String[])中定义了变量 a
    int a = 2;
        ^
1 个谬误

编译报错的起因很简略,第二行代码再次定义了变量 a,而变量 a 曾经在内存中存在了,不能再反复定义。这与对变量从新赋值不同。

4. 变量命名标准

对于变量的命名,每种编程语言都有本人的规定和约定,Java 语言也不例外。命名变量的规定和约定如下:

  • 变量的名称能够是任何非法的标识符,以字母,美元符号 $ 或下划线 _ 结尾。然而,依照约定俗成,变量应始终以字母结尾,不举荐应用美元符号和下划线结尾;
  • 结尾后续的字符能够是字母、数字、美元符号或下划线 。为变量抉择名称时,举荐应用残缺的英文单词,不举荐应用单词缩写,更不要应用中文拼音。这样做有利于代码的浏览和了解。另外请牢记,抉择的名称不能是 关键字 保留字
  • 变量命名辨别大小写
  • 变量命名应采纳小驼峰命名法。所谓小驼峰命名法,就是如果你抉择的名称只蕴含一个单词,那么用全副小写字母拼写该单词;如果名称蕴含多个单词,请将第二个单词起的每个单词的第一个字母都大写;
  • 如果变量存储了一个常量值,要将每个字母大写并用下划线字符分隔每个单词。比方 static final int MAX_NUM = 100。依照约定俗成,除了常量命名的状况,下划线字符永远不会在其余中央应用。

上面咱们对照上述规定和约定来看几个实例。

实例 1:

int $a;
int _b;
int age;

下面 3 个变量的申明都是非法的,然而依据约定俗称,不举荐 $a 这种以美元符号结尾、_b 这种以下划线结尾的命名形式。

实例 2:

publicclass VariablesNameing2 {public static void main(String[] args) {
        String Name = "Colorful";
        String name = "Colorful1";
        System.out.println("Name=" + Name);
        System.out.println("name=" + name);
    }
}

变量名辨别大小写,因而下面的 Namename 是两个不同的变量。因为只有一个单词组成,应将单词应用全副小写拼写,不举荐第 1 行 Name 这种命名形式。

实例 3:

// 申明姓和名变量
String firstName;
String lastname;

下面申明了两个变量 firstNamelastname,因为它们都是由两个单词组成,依照小驼峰命名法的约定俗成:第 2 行 lastname 变量名由两个英文单词组成,因而举荐改为 lastName

5. 常量

所谓常量,就是恒常不变的量。咱们能够将常量了解成一种非凡的变量。

与变量不同的是,一旦它被赋值后,在程序的运行过程中不容许被扭转。常量应用 final 关键字润饰:

final DataType 常量名 = 常量值;

Tips:常量的命名标准与一般变量有所不同,要将每个字母大写并用下划线字符分隔每个单词。

如果咱们尝试在代码中批改常量的值:

class ConstantTest {public static void main(String[] args) {
        // 申明并初始化常量 TOTAL_NUM
        finalint TOTAL_NUM = 200;
        // 对 TOTAL_NUM 从新赋值
        TOTAL_NUM = 20;
    }
}

编译执行代码,编译器将会报错:

ConstantTest.java:6: 谬误: 无奈为最终变量 TOTAL_NUM 调配值
        TOTAL_NUM = 20;
        ^
1 个谬误

适当地应用常量能够进步代码的安全性和可维护性。例如,咱们能够在程序中申明一个示意网站名称的常量:final String SITE_NAME = "网";,这样在所有须要用到名称的中央,都调用这个常量即可。这样既保证了其值不可批改,进步了代码的安全性,又对立了调用方的标准。

6. 变量的品种

学习变量的品种,须要你对 Java 的类和对象有肯定的理解。目前不要求齐全了解,等到前面学完面向对象相干常识后再回过头来回味。

Java 语言定义了以下 4 种变量

  • 实例变量(见代码中 instanceVariable
  • 类变量(见代码中 classVariable
  • 局部变量(见代码中 localVariable
  • 参数(见代码中 parameterargs
publicclass KindsOfVariables {
    // 1. 实例变量
    publicint instanceVariable = 1;
    // 2. 类变量
    publicstaticint classVariable;
    
    public void demoMethod(int parameter) { // 3. 参数        
        // 4. 局部变量
        int localVariable;
    }
    
    public static void main(String[] args) {// 入口办法}
}

6.1 实例变量

实例变量在类范畴内申明。申明时不应用 static 关键字润饰,因而也称为 非动态字段

实例变量用于存储对象的状态,它的值对于类的每个实例都是惟一的,每个对象都领有本人的变量正本。只有相应的对象存在于内存中,它就占用着存储空间。

上面是一个实例变量的实例,当然,咱们还没有介绍类和对象的概念,如果你理解类和对象,能够浏览源码帮忙了解:

publicclass Student {
    // 实例变量 name
    public String name;
    // 实例变量 age
    publicint age;

    // 构造方法
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 打印学生根本信息的办法
    public void printInfo() {System.out.println("学生姓名为:" + name);
        System.out.println("学生年龄为:" + age);
    }

    public static void  main(String[] args) {
        // 实例化两个学生对象
        Student student1 = new Student("小慕", 20);
        Student student2 = new Student("小李", 18);
        // 别离调用打印学生根本信息办法,打印两个对象下的两个实例变量
        student1.printInfo();
        System.out.println("-------- 分割线 --------");
        student2.printInfo();}
}

运行后果:

学生姓名为:小慕
学生年龄为:20
-------- 分割线 --------
学生姓名为:小李
学生年龄为:18

实例变量和实例对象相干,因而须要通过 new 关键字实例化出对象,通过对象能力拜访其实例变量(也称实例属性)。上述代码中,nameage 就是用于存储其对象的属性,咱们实例化了两个学生对象,其实例变量 nameage,在每个对象实例中是惟一的。

6.2 类变量

类变量在类范畴内应用 static 关键字润饰,因而类变量又被称为 动态字段、动态变量

static 修饰符通知编译器,无论类被实例化多少次,类变量始终只有一个变量正本。只有类被加载到内存中,它就会存在。

另外,类变量能够被申明为 常量,通过应用 final 关键字以示意变量永远不会扭转。例如:public static final NAME = "慕慕",这里的 NAME 就是不会扭转的常量。再次揭示,在常量的命名标准中,要将字母全副大写。

对于类变量,咱们再来看一个实例:

publicclass Course {
  
      // 类变量 courseType
      publicstatic String courseType = "文字课程";
      // 常量 COURSE_NAME
      publicstaticfinal String COURSE_NAME = "Java 基础教程";
      
    public static void main(String[] args) {
          // 别离打印类变量和常量
          System.out.println(Course.courseType);
          System.out.println(Course.COURSE_NAME);
    }
}

运行后果:

文字课程
Java 基础教程

类变量和类相干,因而不须要应用 new 关键字实例化对象后再调用,能够间接通过 类名 + . 点运算符 + 类变量名 的形式调用。

上述代码中,courseTypeCOURSE_NAME 都应用 static 关键字润饰,它们都能够间接通过 Course. 变量名 的形式调用。

6.3 局部变量

局部变量是在办法范畴内被申明和应用的。它们没有任何关键字润饰,能够依据 变量申明的地位 来认定局部变量(即办法的左花括号和右花括号之间),因而,局部变量只能够对申明它们的办法可见。办法返回后,它们将被销毁。

main 办法中的局部变量实例:

public static void main(String[] args) {
      // 局部变量 name
      String name = "小慕";
      // 局部变量 age
      int age = 20;        
      System.out.println("姓名:" + name);
      System.out.println("年龄:" + age);
}

咱们再来看一个自定义办法中的局部变量实例:

publicclass PrintNumber {public void printer() {
          int num = 10;
          for(int i = 1; i <= num; i ++) {System.out.println(i);
        }
    }
  
}

局部变量和办法相干,因而只能在办法外部部分定义和应用,在第二个实例中没有代码正文,请思考 printer 办法中有哪几个局部变量。

6.4 参数

参数是用于传递给办法签名的变量(例如入口办法 main 中的 args),它们能够在办法中的任何地位被调用。在办法执行的期间位于内存中,办法返回后被销毁。

例如,下面实例变量的实例中,Student 类的构造方法就接管两个参数,如下为代码截取:

// Student 类构造方法
public Student(String name, int age) {  // name 和 age 就是传递给 Student 构造方法的参数
    this.name = name;
    this.age = age;
}

留神,办法体中的 this.namethis.age 指代的是 实例变量,而 nameage 是参数,它们被用于赋值给实例变量。

7. 小结

在本大节中,咱们晓得了变量是存储数据的载体,申明变量时要留神变量的命名标准,给变量赋值时要依据申明的数据类型赋值。

Java 中变量有 4 个品种,别离是:实例变量、类变量、局部变量、参数。其中变量如果应用了 final 关键字润饰,就可定义一个不可变的常量。

当然,须要再次强调的是:不要应用中文拼音来命名变量,这是很常见的但十分不好的习惯。英文根底差的童鞋能够下载一个英文词典,当你要抉择一个变量的名称时,多查阅一下单词,抉择出最合乎变量特色的单词。好的变量命名不仅让你的代码易于浏览了解,也有助于你更好地梳理理论编码中繁琐的业务逻辑。

微信公众号

正文完
 0