JAVA-变量声明、关键字和类型

模块三  变量声明、关键字和类型

 

模块三  变量声明、关键字和类型... 1

1. 基本语法元素... 2

1.1. ... 2

1.2. 分号... 2

1.3. 语句块(block) 2

1.4. 空白... 3

2. 标识符... 3

3. Java关键字... 4

4. 基本Java数据类型... 4

4.1. 逻辑型──boolean. 4

4.2. 字符型──char 5

4.3. 文本类──String. 5

4.4. 整数型──byte, short, int, long. 5

4.5. 浮点数──floatdouble. 6

5. 变量、声明和赋值... 6

6. 引用(Reference)类型... 7

6.1. 创建一个新类型... 7

6.2. 创建并初始化一个对象... 7

6.3. 存储器分配和布局... 8

6.4. 引用类型的赋值... 8

6.5. 值传递... 9

6.6. this引用... 10

7. Java编码约定... 10

8. 练习:使用对象... 11

8.1. 创建一个类和相应的对象... 11

8.2. 检验引用赋值... 11

9. 检查你的进度... 12

 

                                                                                                                         QQ519517915


l      本模块阐述了在Java技术中使用的基本元素,包括变量、关键字、原始类型和类类型。

完成本模块的学习后,你应该能够:

-          区分有效和无效标识符

-          识别Java技术关键字

-          列出八个原始类型

-          为数字类型和文本类型定义文字值

-          解释术语classobjectmember variablereference variable

-          为一个简单的包含原始成员变量的类创建一个类定义

-          声明类类型变量

-          使用new构造一个对象

-          描述缺省初始化

-          使用点符号访问一个对象的成员变量

-          描述一个引用变量的意义

-          描述分配类类型变量的结果

3.1 基本语法元素

3.1.1 注 释

l      注释是程序员用来标记、说明程序的。编译器会忽略注释中的内容,注释中的内容不会对程序的运行产生任何影响。Java语言允许三种风格的注释:

//  单行注释

 

          /*  多行注释 */

 

          /** 文档注释 */ 

 

3.1.2  分号

 

l      Java编程语言中,语句是一行由分号(;)终止的代码。

l      例如

               totals=a+b+c+ 

d+e+f       

 

l      与下式相同

           totals=a+b+c+

            d+e+f

3.1.3语句块(block)

l      语句块(block)也叫做复合语句。一个语句块(block)是以上括号和下括号({})为边界的语句集合;语句块也被用来组合属于某个类的语句。例如:

public class Date {

private   int day=3;

private   int month;

private   int year;

public void pri(){

 

}

public static void main(String[] a){

 

}

l      }

 

语句块可被嵌套。HelloWorldApp类由main方法构成,这个方法就是一个语句块,它是一个独立单元,单元本身可作为在类HelloWorldApp块中的一组事务之一。

下面的语句是合法的:

// a block statement

{

x = y + 1;

y = x + 1;

}

 

// an example of a block statement nested within  another block statement

while ( i < large ) {

a = a + i;

if ( a == max ) {

b = b + a;     // nested block is here

a = 0;

}

}

 

3.1.4空白

l      空白:是空格、tabs和新行的统称。

在源代码元素之间允许插入任意数量的空白。空白可以改善源代码的视觉效果,增强源代码的可读性。例如:

{

int x;

l           x = 23 * 54;

}

 

{  

    int  x

    x  =  23  +  54;

}

3.2 标识符

标识符是语言元素的名称,是我们在程序中表示变量、类或方法等等的符号。

标识符可从一个字母、下划线(_)或美元符号($)开始;随后跟随字、下划线(_)、美元符号($)或数字

可用一句话来描述:也就是说标识符由字母、下划线(_)、美元符号($)或数字组成,其中不能以数字开头

标识符是大小写区别对待的。

标识符未规定最大长度

 

    下列标识符是有效的:

idendsafdstifier

ugfdsgName

Udsaf_dsfe

_sys_varldaf

$changdsafe

 

Java技术源程序采用双字节的“统一字符编码” (Unicode)标准,而不是单字节 ASCII文本。因而,一个字母有着更广泛的定义,而不仅仅是azAZ

标识符不能是关键字但是它可包含一个关键字作为它的名字的一部分。例如,thisone是一个有效标识符,但this却不是,因为this是一个Java关键字。

3.3 Java关键字

2-1列出了使用在Java编程语言中的关键字

l      abstract    do     implements  private    throw

 boolean    double  import      protected  throws

 break      else    instanceof   public    transient

 byte       extends int         return     true

 case       false   interface    short      try

 catch      final   long        static      void

 char       finally  native      super      volatile

 class      float    new       switch     while

 continue   for     null        synchronized

 default     if      package    this

 

关键字对Java技术编译器有特殊的含义,它们可标识数据类型名或程序构造(construct)名。

以下是有关关键字的重要注意事项:

-           truefalsenull为小写,而不是象在C++语言中那样为大写。

-           sizeof运算符;所有类型的长度和表示是固定的,不依赖执行

-           gotoconst不是Java编程语言中使用的关键字。

3.4基本Java数据类型

l      Java编程语言定义了八种原始数据类型

          类型      位数(bit)        默认值

逻辑   boolean    1bit                false/true

文本   char       16bit(2byte)         0(Unicode编码)

整数   byte,      8bit(1byte)          0

short,      16bit(2byte)         0

int,        32bit(4byte)         0

long        64bit(8byte)         0

浮点 double,      64bit(8byte)       0.0

float       32bit(4byte)        0.0

      注意:整数类型默认的是int,浮点型默认的是double

1.1. 逻辑型──boolean

逻辑值有两种状态,即人们经常使用的 true”和“false”。这样的值是用boolean类型来表示的。boolean有两个文字值,即truefalse

以下是一个有关boolean类型变量的声明和初始化:

boolean truth = true; //declares the variable truth

                 //as boolean type and assigns it the value true

 

l      注意:在整数类型和boolean类型之间转换计算。有些语言(特别值得强调的是CC++允许将数字值转换成逻辑值 这在Java编程语言中是允许的;boolean类型允许使用boolean值。

1.2. 字符型──char

使用char类型可表示单个字符。一个char代表一个16-bit无符号的(不分正负的)Unicode字符。一个char文字必须包含在单引号内(‘’)

l      ‘a’

‘/t’       一个制表符

‘/u????’   一个特殊的Unicode字符。????应严格按照四个16进制数字进行替换。例如: ’/u03A6’表示希腊字母“Φ”

 

l      Char类型变量的声明和初始化如下所示:

l         char ch = `A'; // declares and initializes a char variable

l         char ch1,ch2 ; // declares two char variables

1.3. 文本类──String

String不是原始类型,而是一个类(class),它被用来表示字符序列。字符本身符合Unicode标准。与CC++不同,String不能用 /0作为结束。

 

l      String的文字应用双引号封闭,如下所示:

l      “The  quick brown fox jumped over the lazy dog.”

l       

l      String类型变量的声明和初始化如下所示:

l        // declare two String variables and initialize them

l        String greeting = "Good Morning !! /n" ;

l        String err_msg = "Record Not Found !" ;

l        String str1,str2 ; // declare two String variables

1.4. 整数型──byte, short, int, long

    Java编程语言中有四种整数类型,它们分别使用关键字byte, short, intlong中的任意一个进行声明。整数类型的文字可使用十进制、八进制和16进制表示,如下所示:

 

2        十进制值是2

077      首位的0表示这是一个八进制的数值

0xBAAC  首位的0x表示这是一个16进制的数值

 

l      注意──所有Java编程语言中的整数类型都是带符号的数字。

 

整数类文字被默认为int类型。

整数类文字后面紧跟着一个字母“L”,可以强制它为long型。

例如:

2L        十进制值是2,是一个long

077L      首位的0表示这是一个八进制的数值

0xBAACL  前缀0x表示这是一个16进制的数值

 

四种整数类型的长度和范围如表3-2所示。这些长度和范围是按Java编程语言规范定义的,是不依赖于平台。

1.5. 浮点数──float和double

l      如果一个数字文字包括小数点或指数部分,则该数字文字为double型浮点数。

l      例如:   3.14

3.02E23       

l      如果一个数字文字后带有字母Ff,则该数字文字为float型浮点数。

     例如:       2.718F       

l      如果一个数字文字后带有字母Dd,则该数字文字为double型浮点数。

     例如:       123.4E-306D  

l       

l      浮点变量可用关键字floatdouble来声明。

l      Java技术规范的浮点数的格式是由电力电子工程师学会(IEEE754定义的,是独立于平台的

2. 变量、声明和赋值

l      变量用于存储信息。一个变量代表一个特殊类型的存储位置,它指向内存的某个单元,而且指明这块内存有多大。变量的值可以是基本类型,也可以是对象。

下列程序显示了如何声明及赋值整数、浮点、boolean、字符和String类型变量。

public class TestAssign {

public static void main(String args []) {

int a, b;        // declare int variables

float f = 5.89f; // declare and assign float

double d = 2.78d;   // declare and assign double

boolean b = true;// declare and assign boolean

char c;        // declare character variable

String str;       // declare String

String str1 = "good"; // declare and assign String variable

 

c = 'A';            // assign value to char variable

str = "hello ,hello"; // assign value to String variable

a = 8;

b = 800;         // assign values to int variables

}

}

3. 引用(Reference)类型

    从大的范围来讲,JAVA中的数据类型就分为两种:基本类型和引用类型。

3.1. 创建一个新类型

    为克服JAVA中数据类型的不完整,Java编程语言使用类来创建新类型。例如可以用下面的类表示人:

      class Person  {

          private double height=1.75;

      private double weight=65;

      private  String name;

      public Person(String aName)

      {

           name=aName;

}

      public Person()

{}

         }

l      关键字class是用来声明类的。Person是我们给表示人的类指定的名称

 

    一个变量可被声明为归属于类型Person,从而体重,身高部分将被隐含声明。例如:

    Person zhang, lisi;

     zhangsan = new Person ()//这两个对象为引用类型,zhangsan,lisi 分别指向了各自的对象

lisi = new Person ()//这两个变量都是引用类型的,并实际存储这些数据

 

3.2. 创建并初始化一个对象

l      当任何原始类型(boolean, byte, short,char,int,long,floatdouble类型) 的变量被声明时,作为上述操作的一部分,存储器空间也同时被分配。

l      使用非原始类型(Stringclass)的变量的声明不为对象分配存储器空间。事实上,使用class类型声明的变量不是数据本身,而是数据的引用(reference)。引用可以理解为C语言的指针(Pointer),但是不能象C语言那样计算指针。

l      在你使用引用变量之前,必须为它分配实际存储空间。这个工作是通过使用关键字new来实现的。如下所示:

      Person pangzi;

      pangzi= new Person();

    第一个语句仅为引用分配了空间,而第二个语句则通过调用对象的构造函数Person()为对象生成了一个实例。这两个操作被完成后,Person对象的内容则可通过pangzi进行访问。

l      还可以用一条语句创建并初始化一个对象:

l      Person pangzi = new Person(“danan”);

3.3.  存储器分配和布局

l      在一个方法体中,做如下声明:

l            Person liuxiang

l             liuxiang= new Person();

l      语句Person liuxiang;  仅为一个引用分配存储器

l       

        liuxiang                                             

????

 

 


0x01edaff8

在语句 liuxiang= new Person(); 关键字new意味着为对象分配存储器,并初始化:

                  liuxiang

                      

    1.75

        

            height             

    65.0

 


            weight

????

 


             name

 

3.4.  引用类型的赋值

l      Java编程语言中,一个被类声明的变量,叫做引用类型变量,这是因为它正在引用一个非原始类型,这对赋值具有重要的意义。请看下列代码片段:

     int x = 7;

     int y = x;

     String s = “Hello”;

     String t = s;

    四个变量被创建:两个原始类型 int 和两个引用类型Stringx的值是7,而这个值被复制到yx y是两个独立的变量且其中任何一个的进一步的变化都不对另外一个构成影响。

至于变量 s t,只有一个String 对象存在, 它包含了文本”Hello” s t引用这个单一的对象。

 

将变量t 重新定义, t= "World";则新的对象World被创建,而 t 引用这个对象。上述过程被描述如下:


3.5.  值传递

l        方法只能改变引用类型的值,而不能改变引用类型的地址和基本类型的值。也就是说方法只能改变堆内存中的值,而不能改变内存中的值。管是实例变量都是保存在堆内存里的。不引用类型还是基本类型。所有的引用类型的值都是保存在堆内存里的。

l      例如:

l      public  class TestReference

l      {

l            int i=5;

l            int j=6;

l            A a=new A();

l           

l            public void changeIJ(int m,int n)//试图改变基本类型的参数的值

l            {

l                 int z=0;

l               z=m;

l                  m=n;

l                  n=z;

l            }

l            public void  changeAB(A a1,A a2 )//试图改变引用类型的参数的地址

l            {

l                A a=null;

l                 a=a1;

l                 a1=a2;

l                 a2=a;

l            }

l            public void test(int c)  //试图改变基本类型的参数的值

l            {

l                 c=c+6;

l            }

l            public void testA(A a)  //试图改变引用类型参数的值

l            {

l                     a.i=100;

l            }

l           

l            public static void main(String args[])

l            {

l                 TestReference t=new TestReference(); //构造本类的一个对象

l                 int z=5;

l                 int y=6;

l                 A aa=new A(); //定义A类的一个对象aa

l                 t.testA(aa);  //改变对象aa的值

l                 System.out.println(aa.i); //输出aa的值(属性值)

l                 A bb=new A(); //再定义A类的一个对象bb

l                 t.changeIJ(z,y); //试图改变两个基本类型的值

l                 t.changeAB(aa,bb);// 试图改变两个引用类型的地址

l                 System.out.println(z);

l                 System.out.println(y);

l                 System.out.println(aa.i);

l                 System.out.println(bb.i);

l            }

l      }

l      class A

l      {

l            int i=5;

l      };

l      输出结果如下:

l      100

l      5

l      6

l      100

l      5

l      可见,方法只能改变引用类型的值,而不能改变引用类型的地址和基本类型的值。

3.6. this引用

l      this两个作用

1,            代表隐含参数的调用

2,            调用本类的其它的构造器

l      关键字this是用来指向当前对象(类实例)的。这里,this.name指的是当前对象的name字段。

1

public class Person  {

          private double height=1.75;

      private double weight=65;

      private  String name;

      public Person(String aName)

      {

           this.name=aName;//全称应该是:Person.this.name

}

      public Person()

{}

         }

l      2

 public class Person  {

          private double height=1.75;

      private double weight=65;

      private  String name;

      public Person(String aName)

      {

           this.name=aName;//全称应该是:Person.this.name

}

      public Person()

{

   this(“zhangsan”);

}

         }

l       

l       

4. Java编码约定

l      虽然任何一个合法的标识符都可以用来当作变量、类、方法等的名称,但是Java编程语言极力推荐它的编码约定:

    classes──类名应该是名词,大小写可混用,但首字母应。例如:

                class  AccountBook

                class  ComplexVariable

    interface──界面(接口)名大小写规则与类名相同

                interface  Account

    method──方法名应该是动词,大小写可混用,但首字母应。在每个方法名内,大写字母将词分隔并限制使用下划线。例如:

                balanceAccount()

                addComplex ()

Variables──所有变量都可大小写混用,但首字符应小写。词由大写字母分隔,限制用下划线,限制使用美元符号($),因为这个字符对内部类有特殊的含义

         currentCustomer

变量应该代表一定的含义,通过它可传达给读者使用它的意图。尽量避免使用单个字符, 除非是临时“即用即扔”的变量(例如,用i, j, k作为循环控制变量)

l       constant──原始常量应该全部大写并用下划线将词分隔对象常量可大小写混用。

         HEAD_COUNT

         MAXIMUM_SIZE

 

l         control structures──当语句是控制结构的一部分时,即使是单个语句也应使用括号({})将语句封闭。例如:

if  (condition)

   do something

else 

   do something else

 

spacing── 每行只写一个语句并使用四个缩进的空格使你的代码更易读。

 

l      comments──用注释来说明那些不明显的代码段落;对一般注释使用 //  分隔符, 大段的代码可使用 /*···*/分隔符。使用 /**···*/将注释形成文档,并输入给javadoc以生成HTML代码文档。

l       

l      // A comment that takes up only one line.

l      /* Comments that continue past one line and take up space on multiple lines...*/

l      /** A comment for documentation purposes.

l      @see Another class for more information

l      */

5. 练习:使用对象

 

5.1.  创建一个类和相应的对象

1.      一个点可用xy坐标描述。定义一个称为Point的类来表达上述想法。

2.      在另一个类MyPoint中声明两个Point变量,将变量称为startend;用new  Point()创建对象并分别将引用值赋予变量startend

3.      将值10赋予对象start的成员xy

4.      将值20赋予对象endx值,将值20赋予对象endy值。

5.      分别打印startend的成员值(xy)

 

5.2.   检验引用赋值

     使用你在前一个练习中MyPoint类,增加代码到main()方法,以完成下列事项:

1.      为类型Point声明一个新的变量,称之为stray。将现存变量end的引用值赋予stray

2.      打印endstray变量的成员xy的值;

3.      赋予变量stray的成员xy新的值;

4.      打印endstray的成员的值;编译并运行MyPoint类。end的值反映了stray内的变化,表明两个变量都引用了同一个Point对象;

5.      start变量的成员xy赋予新的值;

6.      打印startend的成员值; 再次编译并运行MyPoint类,start的值仍然独立于strayend的值,表明start变量仍然在引用一个Point对象,而这个对象与strayend引用的对象是不同的。

 

6. 检查你的进度

·         在源程序中使用注释

·         区分有效和无效标识符

·         识别Java技术关键字

·         列出八个原始类型

·         为数字和文本类型定义文字值

·         定义术语class, object,member,variable,referrence variable

·         为一个简单的包含原始成员变量的类创建一个类定义

·         声明类类型的变量

·         使用new构造一个对象

·         描述缺省初始化

·         使用点符号访问一个对象的成员变量

·         描述引用变量的意义

·         陈述分配类类型变量的结果

 

 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值