第二章 JAVA变量类型及语句

来源:互联网 发布:linux黑客技术 编辑:程序博客网 时间:2024/06/16 14:01

2.1 JAVA变量类型及与C++相异点

 

2.1.1 普通8种类型

                                                  ┏数值型━┳━整数型:byte shortint long
              ┏基本数据类型━━┫        ┗━浮点型:float double
              ┃                                ┣字符型:char                                         
      数据类型╋                        ┗布尔型:boolean             
              ┃                                 ┏类(class)
              ┗引用数据 类型━━╋接口(interface)
                                                   ┗数组(array)

1、变量允许使用符号“$”类中成员变量可以不用初始化,系统自动赋零,但函数或方法中的局部变量必须先定义再初始化才能使用。

2、const关键字被final取代。

   在Java中,const是作为保留字以备扩充,同样的保留字以备扩充还有goto. 

   final也可以用于声明方法或类,被声明为final的方法或类不能被继承。

3、bool的关键字被 boolean取代。只有ture、false两个值。

    boolean flag;    flag = true;

4、char被定义使用两个字节的unicode编码。全世界统一编码,两字节表示形式。

     char echar = 'a';      char cnchar = '周';     char c1 = '\u0061' ; //后面的十六进制数为unicode编码。     char c1 = '\n' ;     //转义字符

5、java中所有的数据全部都为有符号的而C++中有unsinged int 等定义。

          类型            

           字节            

byte

1

short

2

int

4

long

8

 

整数表示方式:

十进制:正常输入    16

八进数:以零开头    012

十六进制:以0X开头 0XFF

 

    

 编译器见到整型的常量,默认作int数据处理,当作long型处理时数据后加 “L”。

   long L1 = 88888888888L;// L表示常量为LONG数据类型6,常量浮点数自动处理为double类型,否则后面加f。   float   f  = 12.3f ;     // OK   double d1 =  1244.3 ;   //OK   float  f  = 123.3 ;     //NG

2.1.1 引用类型

C++中的引用与JAVA同截然不同。C++引用相同于一个变量的大名和小名,同时作同一块内存空间。

      int   a;      int  &b = a; //定义b是a的引用

函数的参数为引用类型时表示直接对传入的参数进行操作,与指针类似。

      int func( int &a, char b );//int引用,直接对传入的a进行操作

java中的引用表示除基本类型以外的所有参数类型都为引用。对象是通过引用进行操作的,更像是C++一个类实例化的过程,引用变量则为C++中指向类的指针。

 

例:已定义了Student这样一个类,有如下代码

     Student zhouqt;     //创造出一个引用,但此时还没有在堆中实例化                         //其指向没有建立,所以其值为 null     zhouqt  =  new Student; //在堆中实例化,引用完成                        //其指向建立,其值为 堆中实例后的地址

由于java里面没有显式的指针,不能 -> 来引用其成员一律采用成员运算符“.”,来进行引用运算。

    zhouqt.age;    zhouqt.GetID( );

2.1.1类型使用时注意点

 

1,boolean禁止与其它任意类型数据之间相互转换。

2,混合运算时,容量小的数据类型自动转换为容量大的数据类型,然后运算。

3,byteshort char不会互相转换,因其参与运算时自动转换为int类型。

4、强制换符使用,与C++类似。

   double d2 = 1.0, d1 = 6.2 ;   float  f1 = (float) (d1 + d2 );

5,double最好不要转换为float,会出现截断数据失真。

总结例程:

public class TestConvert {    public static void main( String arg[]) {        int i1 = 123;        int i2 = 456;        double d1 = ( i1+i2 ) *1.2;  //系统将转换为double型运算        float f1 = ( float )( ( i1+i2)*1.2 ); //需要加强制转换符        byte b1 = 67;        byte b2 = 89;        byte b3 = (byte)(b1+b2);//系统将转换为int型运算,需要强制转换符         System.out.println( b3 ); //会产失真        double d2 = 1e200;        float f2 = (float)d2;   //会产生溢出报无穷大错        System.out.println(f2);         float f3 = 1.23f;    //必须加f        long l1 = 123; //int  //类型值给long型,小给大不会出错。        long l2 = 30000000000L;//必须加L        float f = l1+l2+f3;//系统将转换为float型计算        long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)    }}

总结:小的自动转化为大的,大小转小要强制。常量的int默认运算级别,浮点常量的double默认运算级别。byte shor char 变量自动转为int。


2.3 JAVA运算符

与C一致,增加字符串连续符“+”。

使用方法:

       String S = "Helllo" +"World"; //S既为字符串"HellloWorld"

一、运算等级高,被运算两端只要有一端为字符串,则运算级升级为字符串。

       int c = 12;       System.out.println( "a + b=" + c );//c值自动转化为字符串

二、当进行打印时,无论任何类型都自动转化为字符串,进行打印。

      System.out.println(c );//打印12 

2.3条件与循环和分歧语句

与C++相同。

关键字:ifelse switch for while do while break continue void

switch语句中由于存在case xxx:是一个常值,java中常值默认等级为int,因此,switch(a )中的变量a定义为int型值。

 

2.4 java中的方法

C中叫函数,java中方法与C++中类中的成员函数类似。

功能上来说可以增加代码的复用性的有固定功能的代码段集合。

方法允行递归调用,原理来说可以重复的压入栈区,最后逐级出栈

如果该方法声明为static,则可直接使 用类名.方法名() 调用;若不为static就要实例化该类,再用 实例对象.方法名() 调用;在当前类调用当前类的方法,直接方法名()调用。与C++类中的静态成员函数极其类似。

总结:java中的方法分为

(1)静态方法 直接使用 类名.方法名 调用,要求方法要有static声明。

(2)普通方法 通过new创建对象 然后使用 对象.方法 调用 

 

 

2.5 JAVA程序特点

1、同一类型的变量任可系统上所占用的字节宽度相同。

2、没有全局变量概念,为纯面向对象语言,程序的单位为class。

3、变量的作用域以{ }为单位,以所声明的位置为起点,分类如下。


             声明的位置局部变量・成员变量

             所属于数据类型基本数据・引用数据

4、win程序是*.exe双击后执行,java程序为使用命令把 “*.class”文件调用到虚似机中运行。运行时内存按功能给定分配区域,各司其职:

         

0 0
原创粉丝点击