《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+"天");

    }

}

运行结果:


变量

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

public class lianxi2

{

public static void main(String args[])

{

int num=3;

        char ch='z';

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

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

    }

}

运行结果:


变量的作用范围

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    }

运行结果:


        块(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会自动把较小的数据类型表示范围,转换成较大的数据类型表示范围后,再作运算。也就是说,假设有一个整数和双精度浮点数作运算,JAVA会把整数转换成双精度浮点数后再做运算,运行结果也会变成双精度浮点数。

        自动数据类型转型的规律:byte\rightarrow short\rightarrow int\rightarrow long\rightarrow float\rightarrow double,按照范围由小到大实现自动转型操作。

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);

    }

}

运行结果:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,590评论 4 12
  • Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和...
    Java小辰阅读 1,106评论 0 2
  • DAY 05 1、 public classArrayDemo { public static void mai...
    周书达阅读 654评论 0 0
  • 常量的概述和使用 A:什么是常量在程序执行的过程中其值不可以发生改变 B:Java中常量的分类字面值常量自定义常量...
    野望君阅读 614评论 0 0
  • 有时候一篇文章被几个专题收录,但是点击率却寥寥无几,这是为什么呢? 标题是一篇文案的关键,标题没有吸引力,再好的文...
    闲食酒记阅读 763评论 9 21