您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 02章数据类型和变量
©2007BrillianceTechnologyAllrightsreserved.Chap2数据类型和变量2©2007BrillianceTechnologyAllrightsreserved.议题基本数据类型引用类型变量的作用域对象的默认引用参数传递变量的初始化及默认值直接数3©2007BrillianceTechnologyAllrightsreserved.Java数据类型4©2007BrillianceTechnologyAllrightsreserved.Java基本数据类型数据类型关键字在内存中占用的字节数取值范围默认值布尔型boolean1个字节(8位)true,falsefalse字节型byte1个字节(8位)-128~1270短整型short2个字节(16位)-215~215-10整型int4个字节(32位)-231~231-10长整型long8个字节(64位)-263~263-10字符型char2个字节(16位)0~216-1‘\u0000’单精度浮点型float4个字节(32位)1.4E-45~3.4E+380.0F双精度浮点型double8个字节(64位)4.9E-324~1.7E+3080.0D5©2007BrillianceTechnologyAllrightsreserved.Java基本数据类型Java提供int,short,long,byte四种整数类型long型数据有一个后缀L,十六进制有一前缀0x八进制有一个前缀0Java提供float和double两种浮点数,后缀分别为F,f或D,dJava提供char型来表示Unicode编码表中的字符,Unicode被设计用来处理世界上所有书面语言中的字符,占两个字节。Unicode具有0到65535之间的编码,通常用“\u0000”到”\uFFFF”之间的十六进制来表示char型可以和整型转换布尔类型只有true(真)和false(假).布尔型不能和整型转换6©2007BrillianceTechnologyAllrightsreserved.数据的不同进制二进制数、八进制数、十六进制数和十进制整数之间的转换1个字节的二进制数八进制数十六进制数有符号十进制整数(byte类型)无符号十进制整数0000000000000x00000111111101770x7F1271271000000002000x80-1281281111111103770xFF-12557©2007BrillianceTechnologyAllrightsreserved.示例:基本数据类型定义publicclassSimpleTypes{publicstaticvoidmain(Stringargs[]){byteb=055;shorts=0x55ff;inti=1000000;longl=0xfffL;charc='c';floatf=0.23F;doubled=0.7E-3;booleanbool=true;System.out.println(b=+b);System.out.println(s=+s);System.out.println(i=+i);System.out.println(l=+l);System.out.println(c=+c);System.out.println(f=+f);System.out.println(d=+d);System.out.println(bool=+bool);}}8©2007BrillianceTechnologyAllrightsreserved.示例:char和整型转换publicclassSimpleTypes1{publicstaticvoidmain(String[]args){longl1=0xffffffff;longl2=0xffffffffL;intiu='\u7684';charcu='\u7684';charc1='的';inti1=c1;System.out.println(l1=+l1);System.out.println(l2=+l2);System.out.println(iu=+iu);System.out.println(cu=+cu);System.out.println(cu=+c1);System.out.println(i1=+i1);System.out.println(i1toc=+(char)i1);}}9©2007BrillianceTechnologyAllrightsreserved.议题基本数据类型引用类型变量的作用域对象的默认引用参数传递变量的初始化及默认值直接数10©2007BrillianceTechnologyAllrightsreserved.基本类型与引用类型的区别基本类型代表简单的数据类型,如整数和字符。引用类型所引用的实例能表示任意一种复杂的数据结构。基本类型仅表示数据类型,而引用类型所引用的实例除了表示复杂数据类型以外,还能包括操纵这种数据类型的行为。Java虚拟机处理引用类型变量和基本类型变量的方式是不一样的:对于基本类型的变量,Java虚拟机会为其分配数据类型实际占用的内存空间;而对于引用类型变量,它仅仅是一个指向堆区中某个实例的指针。11©2007BrillianceTechnologyAllrightsreserved.用new关键字创建对象当一个引用类型的变量被声明后,如果没有初始化,那么它不指向任何对象。Java语言用new关键字创建对象,它有以下作用:1.为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值。2.如果实例变量在声明时被显式初始化,那就把初始化值赋给实例变量。3.调用构造方法。4.返回对象的引用。12©2007BrillianceTechnologyAllrightsreserved.议题基本数据类型引用类型变量的作用域对象的默认引用参数传递变量的初始化及默认值直接数13©2007BrillianceTechnologyAllrightsreserved.变量的作用域按照作用域的不同,变量可分为以下类型–成员变量:在类中声明,它的作用域是整个类。–局部变量:在一个方法的内部或方法的一个代码块的内部声明。如果在一个方法内部声明,它的作用域是整个方法;如果在一个方法的某个代码块的内部声明,它的作用域是这个代码块。–方法参数:方法或者构造方法的参数,它的作用域是整个方法或者构造方法。–异常处理参数:异常处理参数和方法参数相似,差别在于前者是传递参数给异常处理代码块,而后者是传递参数给方法或者构造方法。14©2007BrillianceTechnologyAllrightsreserved.静态变量和实例变量的生命周期类的成员变量有两种,一种是被static关键字修饰的变量,叫类变量或静态变量;另一种是没有被static关键字修饰的变量,叫实例变量。静态变量和实例变量的区别在于:–类的静态变量在内存中只有一个,Java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名被访问。静态变量的生命周期取决于类的生命周期,当加载类的时候,静态变量被创建并分配内存,当卸载类的时候,静态变量被销毁并撤消所占内存。–类的每个实例都有相应的实例变量。每创建一个类的实例,Java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中。实例变量的生命周期取决于实例的生命周期,当创建实例的时候,实例变量被创建并分配内存,当销毁实例的时候,实例变量被销毁并撤消所占内存。15©2007BrillianceTechnologyAllrightsreserved.局部变量的生命周期当Java虚拟机(更确切地说,是Java虚拟机中的某个线程)调用一个方法时,会为这个方法中的局部变量分配内存。当Java虚拟机(更确切地说,是Java虚拟机中的某个线程)结束调用一个方法时,会结束这个方法中的局部变量的生命周期。16©2007BrillianceTechnologyAllrightsreserved.生命周期实例publicclassSample{intvar1=1;//var1是实例变量staticintvar2=2;//var2是静态变量publicintadd(){intvar3=var1+var2;//var3是局部变量returnvar3;}publicintdelete(){intvar4=var1-var2;//var4是局部变量returnvar4;}publicstaticvoidmain(Stringargs[]){newSample().add();}}17©2007BrillianceTechnologyAllrightsreserved.生命周期实例当执行“javaSample”命令时,Java虚拟机执行以下流程。1.加载Sample类,开始静态变量var2的生命周期,var2位于方法区。2.创建Sample实例,开始实例变量var1的生命周期,var1位于堆区。3.调用Sample实例的add()方法,开始局部变量var3的生命周期,var3位于Java栈区。4.执行完毕Sample实例的add()方法,结束局部变量var3的生命周期,退回到main()方法。5.执行完毕Sample类的main()方法,结束Sample实例及它的实例变量var1的生命周期,卸载Sample类,结束静态变量var2的生命周期,Java虚拟机运行结束。18©2007BrillianceTechnologyAllrightsreserved.议题基本数据类型引用类型变量的作用域对象的默认引用参数传递变量的初始化及默认值直接数19©2007BrillianceTechnologyAllrightsreserved.对象的默认引用:this当一个对象创建好后,Java虚拟机就会给它分配一个引用自身的指针:this。所有对象默认的引用名都叫this。在程序中,在以下情况下会使用this关键字。–在类的构造方法中,通过this语句调用这个类的另一个构造方法。–在一个实例方法内,局部变量或参数和实例变量同名,实例变量被屏蔽,因此采用this.owner的方式来指代实例变量。–在一个实例方法内,访问当前实例的引用。20©2007BrillianceTechnologyAllrightsreserved.议题基本数据类型引用类型变量的作用域对象的默认引用参数传递变量的初始化及默认值直接数21©2007BrillianceTechnologyAllrightsreserved.参数传递如果方法A调用方法B,那么称方法A是方法B的调用者。如果方法B的参数是基本数据类型,那么方法A向方法B传递参数的值。如果方法B的参数是对象或数组,那么方法A向方法B传递对象或数组的引用。示例:publicclassParamTester{publicintmemberVariable=0;publicstaticvoidmain(Stringargs[]){//声明或初始化4个局部变量intparam1=0;ParamTesterparam2=newParamTester();ParamTesterparam3=newParamTester();int[]param4={0};//将4个局部变量作为参数传递给changerParameter()方法changeParameter(param1,param2,param3,param4);//打印4个局部变量System.out.println(“param1=”+param1);System.out.println(“param2.memberVariable=”+param2.memberVariable);System.out.println(“param3.memberVariable=”+param3.memberVariable);System.o
本文标题:02章数据类型和变量
链接地址:https://www.777doc.com/doc-3049462 .html