编程语言语法规范_第1页
编程语言语法规范_第2页
编程语言语法规范_第3页
编程语言语法规范_第4页
编程语言语法规范_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、Java基本语法:1) 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。2) 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。3) 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。4) 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。5) 主方法入口:所有的Java 程序由pub

2、lic static void main(String args)方法开始执行。Java标识符:1) 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始2) 首字符之后可以是任何字符的组合3) 关键字不能用作标识符4) 标识符是大小写敏感的5) 合法标识符举例:age、$salary、_value、_1_value6) 非法标识符举例:123abc、-salaryJava修饰符:1) 可访问修饰符 : default (switch语句中的默认分支), public, protected (表示字段只能通过类或者其子类访问或者在同一个包内的其他类), privat

3、e (表示私有字段,或者方法等,只能从类内部访问)2) 不可访问修饰符 : final (表示一个值在初始化之后就不能再改变了表示方法不能被重写,或者一个类不能有子类), abstract (抽象方法,抽象类的修饰符), strictfp(浮点数比较使用严格的规则)Java变量:1) 局部变量2) 类变量(静态变量)3) 成员变量(非静态变量)C+C+简介:1) C+ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。2) C+ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。注意:使用静态类型的编程语言是在编译时执行类型检查,

4、而不是在运行时执行类型检查。 C+ 变量在定义时分配内存,而不是在初始化时。 局部变量存储在栈中;全局变量和static变量存储在全局/静态存储区;new和malloc创建堆内存。如 int* p = new int10; new int10在执行时申请分配堆内存,但指针p存放在栈中,存放的值为堆内存的首地址。 C+中局部变量在定义时,系统不会对其初始化;但全局变量,系统会对其默认初始化。C+标识符:1) C+ 标识符是用来标识变量、函数、类、模块,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。2) C+

5、标识符内不允许出现标点字符,比如 、$ 和 %。C+ 是区分大小写的编程语言。typedef 声明:作用:为一个已有的类型取一个新的名字。语法:typedef type newName;C+常量:字面值、#define,const。C+存储类修饰符:1) auto是所有局部变量默认的存储类,auto只能用在函数内部,即auto只能修饰局部变量;2) register用于定义存储在寄存器中的局部变量,不能对其取址(&),因为它没有内存地址;3) static指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。static修饰局部变量可以在函数

6、调用之间保持局部变量的值;static修饰全局变量时,会使变量的作用域限制在声明它的文件内;4) extern提供了一个全局变量或全局函数的引用,通过extern声明,可以访问其它文件中定义的全局变量,要求这些文件必须在同一工程目录下,否则只能用#include导入;5) mutable 修饰符仅适用于类的对象。在C+中,mutable是为了突破const的限制而设置的。被mutable修饰的变量(mutable只能用于修饰类的非静态数据成员),将永远处于可变的状态,即使在一个const函数中。const的用法:1) const修饰普通变量和指针:i. const修饰变量:const

7、 type value或者 type const valueii. const修饰指针:a) 指针本身是常量不可变:type* const pointer;b) 指针所指向的内容是常量不可变:const type* pointer或者type const *pointer;c) 两者都不可变:const type* const pointer;注意:识别const到底是修饰指针还是指针所指的对象,还有一个较为简便的方法,也就是沿着*号划一条线:如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*的右侧,const就是修饰指针本身,即指针本

8、身是常量。2) const修饰函数参数:它表示在函数体中不能修改参数的值i. void function(const int Var);     /传递过来的参数在函数内不可以改变(无意义,该函数以传值的方式调用)ii. void function(const char* Var);   /参数指针所指内容为常量不可变iii. void function(char* const Var);   /参数指针本身为常量不可变(无意义,var本身代表地址也是通过传值的形式赋值的)iv. vo

9、id function(const Class& Var); /引用参数在函数内不可以改变注意:参数const通常用于参数为指针或引用的情况,若输入参数采用“值传递”方式,由于函数将自动产生临时变量用于复制该参数,该参数本就不需要保护,所以不用const修饰。3) const 修饰类对象/对象指针/对象引用:表示该对象为常量对象,其中的任何成员都不能被修改。同时,该对象的任何非const成员函数都不能被调用,因为任何非const成员函数都会有修改成员变量的企图。4) const修饰成员变量:表示该数据成员只在某个对象的生存期内是常量,而对于整个类而言是可变的。因为类可以创建多个对象,不

10、同的对象其const数据成员的值可以不同,所以不能在类定义中初始化const数据成员(类对象未被创建时,编译器不知道const数据成员的值),而只能在类的构造函数的初始化列表中初始化。5) const修饰成员函数:表示const修饰的成员函数不能改变类的成员变量,也就不能调用非const成员函数。一般把const写在成员函数的最后,如void function()const。6) const常量与define宏定义的区别:i. 编译器的处理方式不同:define宏是在预处理阶段展开;const常量是在编译运行阶段使用。ii. 类型和安全检查不同:define宏没有类型,不做任何类型检查,仅仅是

11、展开;const常量有具体类型,在编译阶段会执行类型检查。iii. 存储方式不同:define宏仅仅是展开,在什么地方使用,就在什么地方展开,不分配内存;const常量会在内存中分配(可以是堆也可以是栈)。volatile关键字:volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。精确地说就是,优化器在用到这个变量时必须每次都从内存中读取这个变量的值,而不是使用保存在寄存器里的备份。运算符:1. :表示补码运算符,用于各

12、位取反,但没有 = 赋值运算符;2. :表示异或运算符;3. 条件运算符:var = (var1 比较运算符 var2)? var3 :var4;4. 逗号运算符:var = (表达式1,表达式2,)整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值;5. 点(.)运算符:点运算符应用于实际的对象;箭头(->)运算符:箭头运算符与一个指向对象的指针一起使用;点运算符和箭头运算符用于访问引用类、结构和共用体的成员。Switch语句:1. 语法:switch (expression)case constant-expression:statement(s);break;case co

13、nstant-expression:statement(s);break;default :statement(s);2. 规则:i. switch 语句中的 expression 必须是一个int、char或enum。 ii. 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。iii. case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。iv. 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执

14、行,直到遇到 break 语句为止。v. 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。vi. 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。vii. 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。

15、default case 中的 break 语句不是必需的。Printf和Scanf函数的用法:1. Printf函数:i. 原型:printf("格式化字符串", <变量列表>);ii. 格式化字符串:格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式。iii. 格式化字符串格式:%标志输出最小宽度.精度长度格式化字符串类型。1. 标志:+表示输出符号(正号或负号);-表示结果左对齐,右边填空格;空格表示输出

16、为正时冠以空格,输出为负时冠以负号;# 对c, d, s, u类无影响,对o类输出时加前缀o,对x类输出时加前缀Ox。2. 输出最小宽度:用十进制整数来表示输出的最少位数。a) 若实际位数多于定义的宽度:则按实际位数输出。b) 若实际位数少于定义的宽度:则右对齐,左边留空。c) 表示宽度的数字以负号开始,左对齐,右边留空。d) 表示宽度的数字以0开始,则右对齐,左边补0。e) 表示宽度的数字既有负号又有0,左对齐,右边留空。3. 精度:精度格式符以“.”开头,后跟十进制整数(针对浮点数和字符串)。意义是:a) 如果输出数字,则表示小数的位数;若实际位数大于所定义的精度数,则四舍五入。若不足则补

17、0;b) 如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。不足按实际字符个数输出。4. 长度:长度格式符为h、l两种,h表示按短整型量输出,l表示按长整型量输出。5. 格式化字符串类型:格式字符意义d以十进制形式输出带符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀0)x,X以十六进制形式输出无符号整数(不输出前缀Ox)u以十进制形式输出无符号整数f以小数形式输出单、双精度实数e,E以指数形式输出单、双精度实数g,G以%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串(char数组类型,因为c语言没有String类型

18、)2. Scanf函数:i. 原型:scanf("格式化字符串", <地址表>)ii. 格式化字符串:a) 格式化说明符:与printf()函数中的格式化字符串类型基本相同。b) 空白符:空白字符会是scanf()函数在读操作时略去输入的一个或多个空白字符c) 非空白符:一个非空白字符会使scanf()函数在读操作时剔除掉与这个非空白字符相同的字符。iii. 地址表:需要读入的所有变量的地址,而不是变量名。各地址之间用逗号隔开。a) 如果是一般的变量,通常要在变量名前加上"&";但输出时是用变量名。b) 如果是数组,用数组名就代表了该

19、数组的首地址;输出时也是用数组名(一般用于char型数组,即字符串)。c) 如果是指针,直接用指针名本身,不要加上“*”;输出时要加“*”,但是字符串不需要加。iv. 格式化字符串的格式:%输入数据的宽度长度类型。1. 宽度:用十进制整数指定输入的宽度(即字符数)。2. 长度:长度格式符为h和l,l表示长整型数据(%ld)和双精度浮点型数据(%lf)。h表示短整型数据。3. “*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。4. 长度 长度格式符为l和h,l表示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h表示输入短整型数据。5. 类型:表示输入数据的类型。格式

20、字符意义 d 输入十进制整数 o 输入八进制整数 x 输入十六进制整数 u 输入无符号十进制整数 f或e 输入实型数(用小数形式或指数形式) c 输入单个字符 s 输入字符串v. 注意:1. Scanf()函数中没有精度控制,如scanf(“%5.2f”, &a); 是非法的。2. 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。随机函数:i. Rand()函数:a) 功能:随机数发生器b) 用法:int rand();c)

21、头文件:stdlib.h说明:用户未设定随机数种子时,系统默认的随机数种子为1。rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。ii. Srand()函数:a) 功能:初始化随机数发生器,即设置随机数种子b) 用法:void srand(unsigned int seed);c) 头文件:stdlib.h说明:如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。iii. 产生变化随机数的方法:在开始产生随机数前,调用一次srand(time(NULL)(注意:srand()一定要放在循环外面或者是循环调用的外面,否则的话得到的是相同

22、的随机数)注意:time(0|NULL)的头文件是time.hC+数组所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高地址对应最后一个元素。a) 声明数组:必须指定元素类型和元素数量。Type arrayNamearraySize;b) 初始化数组:可以逐个初始化数组,也可以使用一个初始化语句。初始化语句使用,而大括号 之间的值的数目不能大于我们在数组声明时在方括号 中指定的元素数目。如果您省略掉了数组的大小,数组的大小则为初始化语句中元素的个数注意:C、C+中没有提供直接获取数组大小的函数,只提供了strlen函数用于获取存放字符串的字符数组的长度。c) 二维数组:本质是一

23、个一维数组列表。i. 初始化:通过在括号内为每行指定值来进行初始化。如:int a34 = 0,1,2,3,4,5,6,7,8,9,10,11;d) 指向数组的指针:指向数组的指针变量可以自增,但数组名作为常量指针不能自增。但当数组作为形参时(可以不指定数组大小),数组名表示的是指针变量可以自增运算。注意:数组名可以作为常量指针。即可以使用*(ArrayName+i)访问第i个元素。e) 数组形参:C+ 不允许向函数传递一个完整的数组作为实参,但可以通过指定不带索引的数组名来传递一个指向数组的指针。形参可以是完整的数组。i. 形参函数定义:1. 方式一:type function(type *

24、param);2. 方式二:type function (type arraynamearraysize);3. 方式三:type function (type arrayname);f) 数组型返回类型:C+ 不允许返回一个完整的数组作为函数的返回值以及返回类型,但可以通过指定不带索引的数组名来返回一个指向数组的变量指针。i. 返回数组的函数定义:type * function();注意:C+ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。而且也不支持函数的嵌套定义。字符串:a) 风格字符串:字符串实际上是使用null字符0终止的一维字符数组。b) 声明和初始化:char strsize = 初始化列表(size大小是实际字符串长度+1,初始化列表的结尾是0);char str = “字符串”(不需要末尾添加0);char* str=“字符串”。但Strlen(str)得到的长度是实际字符串的长度,即不包含0.注意:cout 输出char 的数组名和指针名时调用了系统函数处理,输出的是字符串不是地址。其他类型的是地址。c) 字符串操作函数:i. strcpy(s1,s2):复制字符串s2到s1。ii. strcat(s1,s2):连接字符串s2到s

温馨提示

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

评论

0/150

提交评论