chapter02_Java语言的语法基础1_词法规则_数据类型_变量和常量_类型转换 - 副本.ppt_第1页
chapter02_Java语言的语法基础1_词法规则_数据类型_变量和常量_类型转换 - 副本.ppt_第2页
chapter02_Java语言的语法基础1_词法规则_数据类型_变量和常量_类型转换 - 副本.ppt_第3页
chapter02_Java语言的语法基础1_词法规则_数据类型_变量和常量_类型转换 - 副本.ppt_第4页
chapter02_Java语言的语法基础1_词法规则_数据类型_变量和常量_类型转换 - 副本.ppt_第5页
免费预览已结束,剩余60页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Lvjia ,第2章 Java语言的语法基础,复习:Java的平台无关性,JDK、JRE、JVM和集成开发环境(IDE),第2章 Java语言的语法基础,词法规则 数据类型 变量和常量 运算符和表达式 语句 数组和字符串,2.1词法规则,2.1.1标识符(identifier) 2.1.2 关键字(keyword)和保留字(reserved word) 2.1.3 分隔符(separator) 2.1.4 注释符(comment),2.1.1标识符(identifier),用途:类名、变量名、常量名、方法名 使用国际标准字符集Unicode Unicode字符集每个字符是16位二进制 规则 以

2、字母、下划线_、美元符$开头,后面可以是字母、下划线、美元符、数字(09); 不能使用java的关键字(keyword)和保留字(reserved word); 标识符区分大小写; 标识符长度不限 见名知意:名字的力量是巨大的,2.1.2 关键字(keyword)和保留字(reserved word),关键字(keyword):对Java编译器有特殊的含义,它们可标识数据类型名或程序构造名。 Java编程语言中使用的关键字 数据类型: boolean int long short byte float double char class interface 值:true false null

3、流程控制: if else do while for switch case default break continue return try catch finally 修饰符:public protected private final void static strictfp abstract transient synchronized volatile native 动作:package import throw throws extends implements this super instanceof new,保留字(reserved word),保留字:特殊的关键字,现有J

4、ava版本尚未使用 但以后版本可能会作为关键字使用。 Java保留字:goto const 值得我们注意的地方: (1)所有的关键字和保留字都必须小写(true,false,null) (2)无sizeof运算符,所有数据类型的长度和表示是固定的,并且数据长度与平台无关,不是象在C语言中那样数据类型的长度根据不同的平台而变化; (3)goto和const不是可以使用的关键字,例子:没有goto的麻烦,public class NoneGoto public static void main(String args) int breakPoint=Integer.parseInt(args0);

5、 for(int i=0;i100;i+) System.out.println(i:=+i); for(int j=0;j100;j+) if(j=breakPoint) System.out.println(break point:+j); break; ,java NoneGoto 8,例子输出,i:=0 break point:8 i:=1 break point:8 i:=2 break point:8 i:=3 break point:8 。 。,举例:有效和非法的标识符,下面是几个有效的标识符: identifier thisone UserName User_name _sys

6、tem_varl $max main 下面是几个非法的变量名: 3max (变量名不能以数字开头) room# (包含非法字符“#”) class (“class”为关键字) goto (“go”为保留字),2.1.3 分隔符(separator),空白符 空格、换行符、制表符 分号 表示语句结束 或用于for循环语句中 逗号 变量之间的分隔 冒号 switch循环中的case语句 标号语句 花括号 类体、方法体、复合语句(for/while/switch/if),例子:没有goto,也可以跳转,public class NoneGoto02 public static void main(S

7、tring args) int breakPoint = Integer.parseInt(args0); a1: for (int i = 0; i 100; i+) System.out.println(i:= + i); for (int j = 0; j 100; j+) if (j = breakPoint) System.out.println(break point: + j); break a1; ,i:=0 break point:8,java NoneGoto 8,2.1.4 注释符(与C+基本一致),行注释符 / 多行 /* */ 文档注释符 /* */,C的数据类型,基

8、本数据类型 构造数据类型 指针数据类型,C99的数据类型,2.2 Java的数据类型(重点),Java是一种强类型语言(strongly typed language) primitive:基本数据类型 reference:引用数据类型(复合数据类型),2.2.1 Java的基本数据类型,基本数据类型(primitive data types),整型可以用十、八和十六进制表示 默认十进制 以0开头为八进制 以0 x或0X开头的为十六进制 一个整数的缺省是int型 均为有符号数(和C不同) 若为长整型需在数后加或 L(l) 例子 int i = 178; long j= 8864L; (8864

9、l),整型:byte(8)、short(16)、int(32)、long(64),例子:用溢出的方法求最大的int值,package j2se.chapter02; public class TestMaxNumberic public static void main(String args) int i=0; int old=i; for(;) old=i; i+; if(i=old) break; System.out.println(old); ,2147483647,浮点型:float、double,注意点 默认类型是double 十进制表示,必须有小数点 科学计数法:小数e指数,指

10、数必须为整数 数后加f或F为float,加d或D为double 例子 double d1 = 37.266; double d3 = 26.77e3; float f = 87.363F; /float f=87.363f,例子:浮点数的问题,package j2se.chapter02; public class TestFloat1 public static void main(String args) System.out.println(10 / 3.0); System.out.println(1.4*1.5=2.1); ,3.3333333333333335 false,Syst

11、em.out.println(1.4*1.5-2.11E-10);,注意点 在Java语言中,汉字与英文字母均占16位 字符型常量需用单引号()引起来(例如:a) 举例: char c = d; 转义字符(),如: n:换行符 r :表示回车 :表示反斜杠字符 :表示单引号,字符型:char,例子:转义字符,class Test public static void main(String args) System.out.println(“javan语言); System.out.println(javat语言); System.out.println(java语言); System.out

12、.println(java语言); System.out.println(java语言”); ,java 语言 java语言 java语言 java语言 java语言,布尔型:boolean,注意点 只有true和false两种取值 不允许数值类型自动转为布尔型 例子 boolean b1 = true; boolean b2 = false;,例子,System.out.println(a=+a); System.out.println(b=+b); System.out.println(c=+c); System.out.println(d=+d); System.out.println(

13、e=+e); System.out.println(f=+f); System.out.println(g=+g); System.out.println(h=+h); ,public class SimpleTypes public static void main(String args) byte a=0 x44; short b=044; int c=1000000; long d=0 xfffL; char e=A; float f=0.45F; double g=0.7E-5; boolean h=true;,a=68 b=36 c=1000000 d=4095 e=A f=0.4

14、5 g=7.0E-6 h=true,引用数据类型(reference data types),数组(array) 类(class) 接口(interface),2.3 变量和常量,2.3.1 变量 变量 在程序执行过程中,值可以变化的 它的定义包括变量名、变量类型、变量值和变量作用域 变量是最基本的程序存储单元,使用变量名来访问 变量类型 整型变量 浮点型变量 布尔型变量 字符型变量 引用类型变量,例子,int a,b,c; /这是整形变量声明 a=45; /这是整形变量赋值 char c; /这是字符变量声明 c=y; /这是字符变量赋值,可用的程序存储器,复习:C/C+程序内存模型,Jav

15、a的存储区域,寄存器(register):在CPU内部,开发人员不能通过代码来控制寄存器的分配,由编译器来管理 内存(memory) 栈(stack):变量的值 堆(heap):引用类型指向的内容(存放用new产生的数据) 代码区(code):代码 数据区(data):常量和类属性 外存储器 如流对象,是要发送到另外一台机器上的 持久化的对象,存放在磁盘上,Java程序的执行原理,举例: java TestClass param1 param2 整个程序的入口:主类(HelloWorld)的main方法 执行过程 顺序执行 调用类或者对象的方法,JVM的运行时内存情况,Java变量值:内存中栈

16、内内容 基本数据类型的值:实际值 引用数据类型的值:指向堆的地址 值理解相关问题 变量的默认值 变量赋值 参数传递,(1)变量值,例子:什么是java变量值,package lj.j2se.chapter02; public class VariableValue public static void main(String args) int pri1=123,pri2=123; Integer ref1=new Integer(123); Integer ref2=new Integer(123); System.out.println(pri1=pri2); System.out.pri

17、ntln(ref1=ref2); ,true false,Java变量的默认值,举例: boolean a;等价boolean a=false; int b; 等价int b=0; char c; 等价char c=u0000; A d; 等价 A d=null;,Java变量赋值,基本类型的赋值 int a=22384; int b=a; 引用类型的赋值 A a=new A() A b=a;,变量的初始化,变量的初始化(初始赋值) int a; int a=1; B b; B b=new B(); 什么时候允许使用变量的默认值 只有基本数据类型作为一个类的成员使用时 数组创建时如果没有立即初

18、始化,系统将分配默认值 除此之外,其它变量都需要初始化。,例子,public class DefaultValue static int a; /成员变量 public static void main(String args) int b; /局部变量 System.out.println(a= + a); System.out.println(b= + b); ,/error,/correct,(2)变量作用域(scope),局部变量:属于某个方法,调用这个方法就创建这个变量 对于局部变量,必须先初始化(赋值)后使用 方法的参数可以认为是局部变量 成员变量:类体内定义变量 实例变量:属于一

19、个类的每一个对象,每次初始化一个对象就创建 类变量 :属于一个类的全体对象的共享变量,注意点,变量名的问题 可以并行定义同名变量 不能嵌套定义同名变量 技巧:变量作用域以离变量向外最近的大括号为限,向内部都有效,例子:,public class Scope public static void main(String args) int x = 25; System.out.println(x=+x); /只有x 有效 int y = 36; System.out.println(x=+x); System.out.println(y=+y); /x,y均有效 int y=5; System.

20、out.println(x=+x); /只有x有效,y“out of scope” ,x=25,x=25 y=36,x=25,同名变量:在Java里面不运行嵌套, int x=12; int x=13;/在c/c+合法,java不允许 ,作业2:,2-4:编程求解Fibonacci数列:f1=f2=1,fn=fn-1+fn-2,. 2-5:编程求出自然数101-205中的所有素数。 补充题:从命令行输入任意三个数a,b,c,按照大小进行排列,输出中间的那个数 要求 请发到我的QQ邮箱() 自己完成(过分雷同作业将无效处理),例子:什么是java变量值,package lj.j2se.chapt

21、er02; public class VariableValue public static void main(String args) int pri1=123,pri2=123; Integer ref1=new Integer(123); Integer ref2=new Integer(123); System.out.println(pri1=pri2); System.out.println(ref1=ref2); ,true false,2.3.1常量,常量:在程序执行期间值不能发生变化的数据,常量的值是固定的 区分 字面常量(literal const) :是真正的常量 最终

22、变量(final variable) :也叫符号常量,特殊的变量,(1)字面常量,整型常量:123, 浮点型常量:1.23, 字符常量:A, 布尔常量:true,false 字符串常量:“hello world” 在java里,字符串常量不是作为字符数组来处理,而是作为字符串类型(java.lang.String)的一个实例对象来处理。 举例 int a=12; String str=“hello world”;,(2). final成员变量(符号常量):值不可变的成员变量,Java语言里只有final成员变量 举例 class TestClass final int a=12; final

23、double PI=3.1415; final A a=new A(); ,2.2.2 类型转换(cast),将一种类型的数据转换为另一种类型的数据 应用场合 二元运算符的两个操作数类型不同 赋值运算符(=)左右类型不同 两种类型 隐式类型转换(自动类型转换):和C有一些差别 显式类型转换(强制类型转换),复习:C语言的类型转换,C语言的转换方法有两种:一种是自动类型转换,一种是强制类型转换。 main() float PI=3.14; int s,r=5; printf(r*r*PI=%fn,r*r*PI); s=r*r*PI; printf(s=%dn,s); ,r*r*PI=78.500

24、003 s=78,C语言自动类型转换有一些问题,例子:Java不允许丢失数据精度的自动类型转换,C程序 main() float PI=3.14159; int s,r=5; s=r*r*PI; printf(s=%dn,s); ,Java程序 public class TypeCoversion2 public static void main(String args) float PI=3.14159f; int s,r=5; s=(int)(r*r*PI); System.out.println(“s=“+s); ,复习:C语言的类型转换,main() float f=5.75; pri

25、ntf(int)f=%d,f=%fn,(int)f,f); ,(int)f=5,f=5.750000,(1)隐式类型转换(自动类型转换),如果这两种类型是兼容的,Java将执行自动类型转换 char和int互转:值为ASCII值 存储空间:宽化转换 byte(8)short(16)char(16)int(32)long(64)float(32)double(64) 碰到字符串,全部转为字符串,例子:哪些隐式类型转换是错误的,int a=10; short b=a; double c=10.1; float d=10.1; String e=a=+a+c=+c; long f=a;,(错误),(错误,C正确),自动类型转换注意点,整型、浮点型、字符型数据可以混合运算 通常,表达式中最大的数据类型是决定了表达式最终结果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论