当前位置: 首页 > 后端技术 > Java

Java从零开始(八)Java变量

时间:2023-04-01 16:41:41 Java

1.什么是变量在编程中,变量是指包含一个值和对应的符号名的存储地址。从定义上看,一个变量大致可以分为两部分:变量名和变量值,通过变量名可以访问到变量值。简单的说,变量就是存储数据的载体。对于Java语言来说,Java是强类型语言,所以变量必须有类型。在Java代码中,变量是这样的://=左边的age是变量名,右边的22是变量值intage=22;2.创建变量我们已经在上面的代码中看到了变量看,现在让我们手动创建变量。在Java语言中,我们需要做两件事来创建一个变量:给变量一个名字和定义变量的数据类型。创建变量的过程也称为声明变量。声明变量的语法如下:DataType变量名;Tips:关于数据类型,我们将在下一小节介绍。这里只需要知道变量有类型即可。声明一个变量,例子如下:inta;上面的代码声明了一个名称为a且类型为整数的变量。我们可以声明另外一个变量,名字为b,类型为character,例子如下:charb;并声明两个整型变量age和number,示例如下:intage;整数;3.给变量赋值变量声明操作已经告诉编译器变量的数据类型。数据类型决定了变量中可以存储什么,不能存储什么。上面的变量a是int类型(整数类型),所以只能存储整数。变量声明后,我们可以使用赋值语句为其赋值,示例如下://变量声明语句inta;//赋值语句a=1;为变量赋值的语句称为赋值语句。需要特别提醒的是,语句中=的含义与数学中的等号不同。在Java中,=是一个赋值符号。对于变量声明和赋值操作,我们也可以将这两条语句合并为一条语句,例子如下:inta=1;另外,如果我们想创建多个相同类型的变量,可以将多个变量组合在一个语句中,变量声明分组:inta,b;一=1;b=2;为了简化语法,变量声明和赋值也可以同时分组:inta=1,b=2;在范围内,变量的值可以随时被访问或重新赋值,例如:classPrintVariable{publicstaticvoidmain(String[]args){inta=20;System.out.println("修改前的变量a="+a);//将变量a重新赋值给100a=100;System.out.println("修改变量a="+a);}}运行结果:修改前,变量a=20修改后,变量a=100上面代码中声明了一个整型变量a,初值为20,可以使用赋值语句a=100;重新分配变量a。请注意,在Java中,重新分配变量是错误的:inta=20;整数=100;编译代码,会抛出异常:Test.java:5:Error:AlreadyinmethodmainThevariableaisdefinedin(String[])inta=2;^1errors编译错误的原因很简单。第二行代码又定义了变量a,变量a已经存在于内存中,所以不能再定义。这与重新分配变量不同。4.变量命名约定对于变量命名,每种编程语言都有自己的规则和约定,Java语言也不例外。变量命名的规则和约定如下:变量名可以是任何合法的标识符,以字母、美元符号$或下划线_开头。但是,按照惯例,变量应始终以字母开头,不推荐使用美元符号和下划线;开头后面的字符可以是字母、数字、美元符号或下划线。为变量取名时,建议使用完整的英文单词,不要使用缩写,更不要使用汉语拼音。这样做有助于代码阅读和理解。此外,请记住,所选名称不能是关键字或保留字;变量命名区分大小写;变量命名应使用小驼峰命名法。所谓驼峰命名法,就是如果你选择的名字只有一个单词,就把这个单词全小写拼写;如果名称包含多个单词,请将每个单词的第一个字母从第二个单词开始大写;如果变量存储常量值,则将每个字母大写并用下划线字符分隔每个单词。例如staticfinalintMAX_NUM=100。按照惯例,除常量名称外,下划线字符绝不会在任何地方使用。让我们看几个违反上述规则和约定的例子。示例1:int$a;诠释_b;年龄;以上三个变量的声明都是合法的,但是按照惯例,不推荐以$a这样的美元符号开头和_b这样的下划线开头的命名方式。示例2:publicclassVariablesNameing2{publicstaticvoidmain(String[]args){StringName="Colorful";字符串名称="Colorful1";System.out.println("姓名="+姓名);System.out.println("name="+name);}}变量名是区分大小写的,所以上面的Name和name是两个不同的变量。由于只有一个单词,单词要全部小写,不推荐第一行Name的命名方式。示例3://声明名字和姓氏变量StringfirstName;Stringlastname;上面声明了firstName和lastname这两个变量,由于是由两个单词组成,按照小驼峰命名的约定:第二行lastname变量name由两个英文单词组成,所以建议改成lastName。5.常数所谓常数,就是一个常数。我们可以把常量理解为一种特殊的变量。与变量不同的是,它一旦被赋值,在程序运行过程中是不允许改变的。常量用final关键字修饰:finalDataType常量名=常量值;Tips:常量的命名约定与普通变量不同。每个字母都应该大写,每个单词应该用下划线分隔。如果我们尝试在代码中修改常量的值:classConstantTest{publicstaticvoidmain(String[]args){//声明并初始化常量TOTAL_NUMfinalintTOTAL_NUM=200;//重新分配TOTAL_NUMTOTAL_NUM=20;}}compile执行代码,编译器会报错:ConstantTest.java:6:Error:cannotassignthevalueTOTAL_NUM=20tothefinalvariableTOTAL_NUM;^1个错误正确使用常量可以提高代码的安全性和可维护性。比如我们可以在程序中声明一个表示网站名称的常量:finalStringSITE_NAME="web";,这样在所有需要这个名称的地方都可以调用这个常量。这样既保证了它的值不能被修改,提高了代码的安全性,又统一了调用者的规范。6.变量的类型要学习变量的类型,需要对Java的类和对象有一定的了解。目前不需要完全理解,等以后学习了面向对象的相关知识再回过头来。Java语言定义了以下四种变量:实例变量(见代码中的instanceVariable)类变量(见代码中的classVariable)局部变量(见代码中的localVariable)参数(见代码中的parameter和args)publicclassKindsOfVariables{//1.实例变量publicintinstanceVariable=1;//2.类变量publicstaticintclassVariable;publicvoiddemoMethod(intparameter){//3.参数//4.局部变量intlocalVariable;}publicstaticvoidmain(String[]args){//入口方法}}6.1实例变量实例变量在类范围内声明。static关键字不用于修饰声明,因此也称为非静态字段。实例变量用于存储对象的状态。它的值对于类的每个实例都是唯一的,每个对象都有自己的变量副本。只要对应的对象在内存中存在,它就占用存储空间。以下是实例变量的示例。当然,我们还没有介绍类和对象的概念。如果你了解类和对象,可以阅读源码帮助理解:publicclassStudent{//实例变量名publicStringname;//实例变量agepublicintage;//构造方法publicStudent(Stringname,intage){this.name=name;这个。年龄=年龄;}//打印学生基本信息的方法publicvoidprintInfo(){System.out.println("学生姓名:"+name);System.out.println("学生年龄:"+age);}publicstaticvoidmain(String[]args){//实例化两个学生对象Studentstudent1=newStudent("小木",20);Studentstudent2=newStudent("小李",18);//分别调用打印学生基本信息的方法,打印两个对象下的两个实例变量student1.printInfo();System.out.println("--------分割线--------");student2.printInfo();}}运行结果:学生姓名:小木学生年龄:20--------分割线--------学生姓名为:小李,学生年龄为:18实例变量相关为实例对象,所以需要通过new关键字来实例化对象,对象可以通过对象访问其实例变量(也称为实例属性)。在上面的代码中,name和age是用来存储它的对象的属性。我们实例化了两个学生对象,它们的实例变量name和age在每个对象实例中都是唯一的。6.2类变量类变量在类作用域内用static关键字修饰,所以类变量又称为静态字段、静态变量。static修饰符告诉编译器无论类被实例化多少次,类变量永远只有一份变量副本。只要类被加载到内存中,它就存在。此外,可以使用final关键字将类变量声明为常量,以指示该变量永远不会改变。例如:publicstaticfinalNAME="Mumu",这里的NAME是一个常量,不会改变。再次提醒,在常量的命名约定中,所有字母都应该大写。对于类变量,再看一个例子:publicclassCourse{//类变量courseTypepublicstaticStringcourseType="TextCourse";//常量COURSE_NAMEpublicstaticfinalStringCOURSE_NAME="JavaBasics";publicstaticvoidmain(String[]args){//分别打印类变量和常量调用前需要使用new关键字实例化对象。可以直接通过类名+调用。点运算符+类变量名。上面代码中,courseType和COURSE_NAME都用static关键字修饰,可以直接通过Course调用。变量名。6.3局部变量局部变量在方法范围内声明和使用。它们没有任何关键字修饰,可以根据变量声明的位置(即方法的左大括号和右大括号之间)来识别局部变量。因此,局部变量只能对声明它们的方法可见。它们在方法返回后被销毁。main方法中的局部变量实例:publicstaticvoidmain(String[]args){//局部变量名Stringname="小木";//局部变量ageintage=20;System.out.println("姓名:"+name);System.out.println("Age:"+age);}让我们看一下自定义方法中的局部变量实例:publicclassPrintNumber{publicvoidprinter(){intnum=10;for(inti=1;i<=num;i++){System.out.println(i);}}}局部变量是和方法相关的,所以只能在方法内部定义和使用,在第二个实例中没有代码注释,请想想打印机方法中有哪些局部变量。6.4参数参数是用来传递给方法签名的变量(比如入口方法main中的args),可以在方法的任何地方调用。它在方法执行期间驻留在内存中,并在方法返回后销毁。比如上面实例变量的例子,Student类的构造函数接收两个参数,截取代码如下://Student类构造函数publicStudent(Stringname,intage){//name和age传递给Student构造方法的参数this.name=name;this.age=age;}注意方法体中的this.name和this.age指的是实例变量,而name和age是参数,用于给实例变量赋值。7.小结在这一节中,我们知道了变量是存储数据的载体。在声明变量的时候一定要注意变量的命名规范,在给变量赋值的时候一定要按照声明的数据类型来赋值。Java中有四种类型的变量:实例变量、类变量、局部变量和参数。如果用final关键字修饰变量,则可以定义一个不可变常量。当然,需要再次强调:不要用汉语拼音来命名变量,这是一个很常见但很不好的习惯。英语基础不好的童鞋可以下载一本英文词典。当你要选择一个变量的名称时,查找单词并选择最符合变量特征的单词。好的变量命名不仅能让你的代码易读易懂,还能帮助你更好地梳理实际编码中繁琐的业务逻辑。微信公众号