《JAVA:从入门到精通》part 2

三、常量与变量

        JAVA语言强大灵活,与C++语言语法有很多相似之处,要想熟练使用JAVA语言,就必须打下坚实的JAVA语言基础,“千里之行,始于足下”。

常量

        在JAVA语言中,主要利用关键字final来进行定义常量的,声明的语法为:


        final  数据类型  常量名称[=值]


        常量标识符和之前的变量标识符规定一样,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)等组成,标识符不能以数字开头,亦不能是JAVA中的保留关键字。此外在定义常量时,应注意以下两点:

        (1)必须要在常量声明对其进行初始化否则会出现编译错误。常量一旦初始化后,就无法再次对这个常量进行赋值。

        (2)final关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰后续学到的“对象引用”或者方法。

常量应用案例:

public class lianxi2

{

static final int year=365;

    public static void main(String args[])

   {

System.out.println("两年是:"+2*year+"天");

    }

}

运行结果:


《JAVA:从入门到精通》part 2_第1张图片

变量

        变量在之前学习过的语言中了解足够多,而且其声明方式在之前的学习中也有提到,变量的命名规则也遵循标识符的命名规则。举个案例能更好地理解。

public class lianxi2

{

public static void main(String args[])

{

int num=3;

        char ch='z';

        System.out.println(num+"是整数");

        System.out.println(ch+"是字符");

    }

}

运行结果:


《JAVA:从入门到精通》part 2_第2张图片

变量的作用范围

1.成员变量

        在类体中定义的变量为成员变量。它的作用范围为整个类,也就是说在这个类中都可以访问到定义的这个成员变量。

2.局部变量

        在一个函数(或称方法)或函数内代码块(code block)中定义的变量称为局部变量,局部变量在函数或代码块被执行时创建,在函数或代码块结束时被销毁。局部变量在进行取值操作前必须被初始化或赋值操作,否则会出现编译错误!

        下面用一个程序案例来详细说明成员变量和局部变量的区别,为了更方便说明,在该程序左边加上行号:

01    public class lianxi2

02    {

03    public static void main(String args[])

04    {

05    int outer=1;

06            {

07                int inner=2;

08                System.out.println("inner="+inner);

09                System.out.println("outer="+outer);

10            }

11            //System.out.println("inner="+inner);

12            int inner=3;

13            System.out.println("inner="+inner);

14           System.out.println("outer="+outer);

15            System.out.println("In class level,x="+x);

16        }

17    static int x=10;

18    }

运行结果:


《JAVA:从入门到精通》part 2_第3张图片

        块(block)作用范围除了用for(while)循环或方法体的左右花括号{ }来界定外,还可以直接用花括号{ }来定义“块”,如上述程序中第06行至第10行,在这个块内,inner等于2,但是出了第10行,就是出了它的作用范围,也就是出了这个块,inner的生命周期就终结了。因此如果取消第11行的注释符号“//”,就会出现编译错误,因为这行的System.out.println()方法不认识这个“陌生”的名叫inner的变量。第12行,我们重新定义并初始化了一个新的inner,但是这个inner和第06行~12行块内的inner完全没有关系。因此第13行可以正常输出,输出值变为3。

        一般来说,所有变量都遵循“先声明,后使用”的原则。这是因为变量只有“先声明”,它才能在内存中“存在”,之后才能被其他方法所“感知”并使用,但是存在于类中成员变量(不在任何方法内),它们的作用范围就是整个类范围(class level),在编译器的“内部协调”下,变量只要作为类中的数据成员被声明了,就可以在类内部的任何地方使用,无需满足“先声明,后使用”的原则。比如类成员变量x是在第17行声明的,由于它的作用范围是整个lianxi2类,所以在第15行也可以正确输出x的值。

四、数据类型

        同C语言一样,JAVA也有基本的数据类型:long(长整型64位)、int(整型32位)、short(短整型16位)、char(字符16位)、byte(字节8位)、boolean(布尔1位)、float(单精度32位)、double(双精度64位)。其中boolean相当于逻辑变量,值只有true和false两种。

        由于就数据类型定义之前了解的足够多,所以在此只学习JAVA中的一些使用规则以及记忆一些JAVA中的知识即可。

转义字符


\f:换页                    \\:反斜线                    \b:倒退一格                    \':单引号

\r:归位                    \":双引号                    \t:跳格                            \n:换行


数据类型的转换

1.自动类型转换

        在程序中已定义好了的数据类型的变量,若想转换用另一种数据类型表示时,JAVA会在下面2个条件都成立时,自动进行数据类型的转换。

        (1)转换前后的数据类型要相互兼容。需要注意的是,boolean类型不能与其他任何数据类型进行转换。

        (2)转换后的数据类型的表示范围不小于转换前的类型。

        还是借助一个案例来帮助理解:

public class lianxi

{

public static void main (String args[])

    {

        int a=156;

        float b=24.1f;

        System.out.println("a="+a+",b="+b);

        System.out.println("a/b="+(a/b));

    }

}

运行结果:

《JAVA:从入门到精通》part 2_第4张图片

        从运行的结果可以看到,当一个浮点数与一个整数运算时,运行结果会直接转换成浮点数。当表达式中变量的不同时,JAVA会自动把较小的数据类型表示范围,转换成较大的数据类型表示范围后,再作运算。也就是说,假设有一个整数和双精度浮点数作运算,JAVA会把整数转换成双精度浮点数后再做运算,运行结果也会变成双精度浮点数。

        自动数据类型转型的规律:byteshortintlongfloatdouble,按照范围由小到大实现自动转型操作。

2.强制类型转换

        强制转换语法:


        (欲转换的数据类型)变量名称


        见以下案例:

public class lianxi

{

public static void main (String args[])

    {

        int a=55;

        int b=9;

        float g,h;

        System.out.println("a="+a+",b="+b);

        g=a/b;

        System.out.println("a/b="+g+"\n");

        System.out.println("a="+a+",b="+b);

        h=(float)a/b;

        System.out.println("a/b="+h);

    }

}

运行结果:

《JAVA:从入门到精通》part 2_第5张图片

        由结果可以看到,两个整数运算结果也是整数(除法中结果取整数部分),但是由于g是浮点数,所以输出结果也为浮点数。在第二个运算中,运算前将a的数据类型强制转成了浮点型,所以运算过程中也把b自动转成浮点型再进行运算,所得结果则为带小数的浮点数。

你可能感兴趣的:(《JAVA:从入门到精通》part 2)