java与c语法上的辨别是什么?
1、标识符:
C可用的标识符为数字、大小写字母、下划线,不能以数字开首;【引荐教程:C言语教程】
Java可用的标识符除了C的三种之外,多一种美圆标记($),一样不能以数字开首。【引荐进修:java课程】
2、关键字:
C中的关键字有:
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while
Java中的关键字有:
abstract boolean break byte case
catch char class continue default
do double else extends false
final finally float for if
implements import instanceof int interface
long native new null package
private protected public return short
this throw throws transient true
try static super switch synchronized
void volatile while
3、数据范例:
C中的数据范例有:
基础范例:整型(基础整型int、短整型short[int]和长整型long [int]以及有标记型[signed]、无标记型unsigned)、字符型[signed/unsigned ]char、浮点型(单精度型float、双精度型double和长双精度long double)、罗列范例
构造范例:数组范例、构造体范例、共用体范例
指针范例
空范例
注重下各范例平常所占字节数:
int:2字节
short:2字节
long:4字节
char:1字节
float:4字节
double:8字节
long double:16字节
以上存储除char范例外,其他视体系差别略有差别,但低精度的位数不能够凌驾高精度的。
Java中的数据范例:
基础范例:字符型(char)、数值型(整型(字节型byte、短整型short、整型int、长整型long)、浮点型(单精度型float、双精度型double))、布尔型(boolean(true或false))
复合范例:类、接口、数组
注重下各范例存储所占字节数:
byte:1字节
short:2字节
int:4字节
long:8字节
char:2字节(Unicode编码)
float:4字节
double:8字节
以上数据范例对应的存储空间与平台无关,固定为该值。
4、常量和变量
1)常量
Java和C中整型常量定义雷同,除长整型数据在其末端加l或L外,其他范例均直接显现数值。C中无标记常量在厥后加u或U。关于差别进制,十进制直接显现最高位不能有0,八进制以0开首,十六进制以0x或0X开首。
关于浮点范例,C和Java均只能采纳十进制示意。可运用小数情势和指数情势,指数情势示意时小数与指数之间用e或E分开。注重Java中请求单精度后要加f或F,双精度后要加d或D以示辨别。
字符型常量都是以单引号引起来的单个字符或转义字串示意。特别注重,C中字符型只能示意ASCII码从0~255的字符,Java中运用Unicode编码2字节存储单元能够示意特别字符,示意unicode编码时运用\u加4位16进制字串。
布尔范例只要Java中才有,需特别注重。
Java中常量用关键字final润饰,一经赋值不可变动;C中示意不可变动的关键字是const,其润饰的变量(注重是变量,不是常量)必须在定义时赋初值,另外用#define定义的宏常量没有范例。
2)变量
Java和C中变量的定义基础雷同,即:
数据范例变量名[ = 变量初值];
变量可赋初值也可不赋,但Java中长整型和浮点型数后要加响应辨认标志(如l、f)。
特别注重:由于编译器的差别,C说明变量要放在可执行语句之前,不然能够发生编译毛病。
5、逻辑运算符和位运算符
C和Java中都有的逻辑运算符&&
、||
、!
三种,且意义雷同,辨别在于C中运算效果为0和非0,Java中只能是ture或false。Java中还存在&、|、^(异或),&和&&、|和||的辨别在于前者黑白捷径运算符而后者是捷径运算符,即&前后都做推断,&&前为假不做背面的推断,|前后都做推断,||前为真不做背面的推断。^示意二者雷同为假。
C和Java中都有的位运算符是:&
、|
、^
、~(取反)
、<<(左移)
、>>(右移)
,意义基础雷同。负数的右移运算在C中视差别体系有所差别(多是算术右移也多是逻辑右移),而Java中>>示意的是算术右移,即最高位添补标记位。Java中逻辑右移(无标记右移)运算符是>>>,采纳补码右移,高位添0。
PS:故意的读者能够会发明,假如你定义了一个byte或许short范例的负数,如-10,采纳>>>要领举行无标记右移后输出的效果是-5,根据上面说的高位添0应该是正数。而int或long范例的就不会是负数,这是为何呢?我以为这是由于Java在举行>>>运算时采纳的最低数据范例是int范例,致使高位数据全为1(盘算机内存储的数据是以补码存储的,所以负数的byte或short范例转成int范例高位全添补1),移位时高位的末了一个1移到低位的第一位,然后截取成我们定义的数据范例(byte或short),所以我们看到的数照样负数。从这里我们能够看出,在byte和short范例的数据做>>>运算的时刻能够得不到我们想要的值,万万注重。
6、数组
C中数组的定义以下:
范例说明符数组名[常量表达式];
定义可与初始化同时举行,如:int a[10] = {0,1,2,3,4,5,6,7,8,9};
中括号内的常量能够省略。
Java中数组定义有两种体式格局:
数据范例数组名[]; //或 数据范例 []数组名;
定义和初始化可同时举行,如:int []a = {0,1,2,3,4,5,6,7,8,9};
注重:Java中数组假如在定义时没有举行初始化,在举行初始化的时刻须要先分派内存,即:
数组名 = new 数据范例[常量表达式];
也可在定义同时举行内存分派:
数据范例数组名[] = new 数据范例[常量表达式];
C和Java都不支撑变长数组,援用的时刻都是 数组名[下标]
。辨别是:
Java的下标局限为0~数组长度-1,不在该局限会抛出数组下标越界非常,而C有用局限也是0~数组长度-1,但下标超出此界不会报错。
多维数组中,数组元素都是按行分列的。
另有一点要注重:C中定义数组不举行初始化则数组元素值是不可预知的,而Java中分派内存而不举行初始化数组中是有默认值的。
7、语句
C和Java语句辨别不大,主如果:
1)要领/函数挪用时C直接挪用函数,Java挪用要领时要领名前面要加对象名。
2)C中两个嵌套的复合语句同时定义同名变量是能够的,而Java不能够。
以上就是java与c语法上的辨别是什么?的细致内容,更多请关注ki4网别的相干文章!