Java和C语言对比.docx
《Java和C语言对比.docx》由会员分享,可在线阅读,更多相关《Java和C语言对比.docx(20页珍藏版)》请在冰豆网上搜索。
Java和C语言对比
C语言和的对比学习
前言
这里说写的都是我的学习笔记,然后这里的是很简单的对比学习,全部都是自己所理解的东西,而且都是很基础的,很简明的辅助自己理解学习而已。
C语言不会涉及到指针以及比指针更难更深层次的内容;也不会涉及到面向对象以及比面向对象更深层次更难的内容。
2015年12月20日
运行机制
C语言:
源代码>编译>汇编>机器码>可运行程序
源代码(*)>编译>字节码(*)>解释>程序运行
相当于:
把”鱼(源代码)”买回来>用”刀(编译器)”宰鱼>处理好的”鱼(字节码)”>用锅(,解释/运行环境虚拟机)把鱼煮熟>可以吃的鱼(可运行程序)
程序分为两种类型,一种是程序,也就是一般的桌面程序.还有一种就是程序,主要是应用(嵌入)到网页编程上的.
源文件
可运行文件
运行环境
C语言
()
虚拟机
开发环境搭建(简单入门)
C语言
6.0(直接安装直接用)
1.下载安装(开发工具包=)
2.下载(,J2=2标准版2企业版,下载是下载版本的版本可以做网页程序)
3.配置环境变量
:
C:
\\\1.8.0_45
:
\\\
或者:
\\;.;
:
\
第一个程序
C语言
1.新建一个项目
2.新建一个类
3.运行
程序(程序主体)
C语言
<>头文件
()定义主函数(程序的入口)
{
1;定义一个值为1的整型变量
(“”);输出语句
(“”);
0;函数返回值
}
语言
{定义类
([]){主方法定义在类
1;定义一个值为1的整型变量
(“”);输出语句
(a);
}
}
数据类型
C语言
数据类型
关键字
字节
示例
范围
基本整型
4(32位)()
a;1;;
-2^31~(2^31-1)
短整型
2
a;
-2^15~(2^15-1)
长整型
4
a;
-2^31~(2^31-1)
双长整型
8
a;
-2^63~(2^63-1)
无符号基本整型
4
a;
0~(2^32-1)
单精度浮点型
4
1.234f;
六位小数(6位有效数字)
双精度浮点型
8
1.234;
15位小数
长双精度浮点型
16
1.234;
19位小数
字符型
1
’m’;
*布尔型(判断用的)
;
只有和
字符串(字符数组/函数)
或
()或
[]={“”}
数据类型
关键字
字节
示例
范围
基本整型
4(32位)()
a;1;;
-2^31~(2^31-1)
短整型
2
a;
-2^15~(2^15-1)
长整型
4
a;
-2^31~(2^31-1)
双长整型
8
a;
-2^63~(2^63-1)
无符号基本整型
4
a;
0~(2^32-1)
单精度浮点型
4
1.234f;
六位小数(6位有效数字)
双精度浮点型
8
1.234;
15位小数
长双精度浮点型
16
1.234;
19位小数
字符型
2
’男’;
*布尔型(判断用的)
2
;
只有和
字符串(引用数据类型)
””;
输出语句
C语言
(“要输出的内容\转义字符格式声明百分号+格式字符这里字符的都只是例子双引号是格式控制,后面的a是输出表列说明那个就是a的值”);为了避免出错那个格式声明读的时候还是读百分号d这样好一点
例如:
1;
(“a的值是”);
那么输出的就是
a的值是1
(“这里是字符串,外面是用符号链接的数据(变量)名””这里可以连接多个字符串,在外面还可以输入表达式,不一定是变量名称”+(()10/3));
("a[""]="+());
在这句话里加号用于拼接字符串以及求和之用。
("a["这是一个字符串用加号拼接上i然后再拼接上"]="
括号里面的这里的加号表示求和
因为类型的变量加上其他任何基本类型的变量都将被当作字符串处理。
这里如果不用括号括起来就成了字符串,比如1+1就成了11而不是2
第一个加号:
拼接字符串
第二个加号:
拼接字符串
第三个加号:
拼接字符串
第四个加号:
求和
也就是说+在输出语句中,如果是表达求和的话要加上括号:
例如
12;
在输出语句里
()就是3
而就是12数据类型转换
C语言
例如想把3.2;改成
只要直接用的时候()a这样就可以了
转换语法:
(要转换的类型)变量名称;
例如:
()
{
5.75;
("\n",());
}
55.750000
自动类型转换
a1=12;
a21;
这样子a2就是12.0了
强制类型转换
a1=12.8;
a2=()a1;
这样子a2就是12了,强制转换会导致数据
常量定义
C语言
#常量名值
#50
类型常量名=值;的意思是不可更改的
例如3.14;
注意的是常量名一般是大写字符,类型不能省
运算符号
C语言和的运算符号都是一样的,只是输出语句的表达方式不一样.
还有就是使用布尔值(或)来表达对错,而C语言却是用0和非0(多数是1)来表达对错.(这里补充一个中的^b是异或,也就是有且只有一个是就是)
符号优先级也是一样的.
赋值符号也是一样的
三元运算符(?
:
)也是一样的,用法
(布尔表达式)?
表达式1:
表达式2
流程控制语句
C和的条件语句,选择语句,循环语句都是一样的:
条件语句:
(布尔表达式){
执行代码块1;
}{
执行代码块2;
}{
执行代码块3;
}
选择语句:
(表达式){你这里的表达式多数是变量名,例如3(a){
值1:
执行代码块1;
;
值2:
执行代码块2;
;
;
}
1、后面小括号中表达式的值必须是整型或字符型
2、后面的值可以是常量数值,如1、2;也可以是一个常量表达式,如2+2;但不能是变量或带有变量的表达式,如a*2
3、匹配后,执行匹配块里的程序代码,如果没有遇见会继续执行下一个的块的内容,直到遇到语句或者语句块结束
循环语句:
常用的3种循环:
、(但条件满足时,执行循环操作)
(判断条件){
循环操作
}
、(先进行一次循环操作,再判断条件是否满足,满足则执行)
{
循环操作
}(判断条件)
、(先将循环变量初始化,然后当判断循环变量条件成立时执行循环操作(体),然后让循环变量变化,再判断…)
(循环变量初始化;循环条件;循环变量变化){
循环操作
}
这里的循环变量初始化是:
变量类型变量名=值;例如0;
和
例如(1<10){
(i<5)
{;第一次是结束1的循环,直接进入2的循环,,不会执行后面的语句,如此类推
3;
}
;直接结束,跳出整个循环
}
(“结束了”);
数组
C语言
数据类型(符)数组名[元素个数n(常量表达式)];
例子a[10]这个是以为数组的定义
b[]={1,2,4}这个是以为数组的初始化,这里如果后面填了多少个数目,[]里面的书就是多少.如果是b[4]={1,,3,}的话,里面没有的数就会默认为0;
(0<=9)
{
(“”[i]);赋值语句也是有双引号””的,而且也要注意是有取地址符号&的.
}
这个是以为数组的赋值
这样就定义了一个有10个元素的一维数组a了,其中第一个元素是a[0],第九个元素是a[9],至于为什么a[0]是第一个元素,原因是这里的a[10]是表示整一个数组,而且a[10]是一个伪代码,真正用到的其实是a[0][9],这里里面的0~9其实是表示与第一个元素的偏移量(也叫索引值).例如第二个元素和第一个元素的偏移量是2-1=1所以第二个元素就是a[1]了.
1、声明数组
语法:
数据类型[]数组名;
或者数据类型数组名[];
2、分配空间
简单地说,就是指定数组中最多可存储多少个元素
语法:
数组名=数据类型[数组长度];
其中,数组长度就是数组中能存放元素的个数
例子:
{
a[];
[5];
}
或者[][5];
或者[][]{1,2,3,5}在声明数组的同时赋值不能指定长度.
或者[]{1,5,6,8};
或者a[]={5,5,7,6};
使用类操作中的数组
1排序
语法:
(数组名);
2、将数组转换为字符串
语法:
(数组名);
类的使用
中的包>类>方法(函数).<>
包里面有很多类,类里面有很多方法.<>
使用的时候先导入(包.类;)类,然后声明方法,然后使用方法
例如:
在前面的地方
;
然后就可以用中的方法了,例如(数组名)
当然,如果不导入的话,也可以直接使用
例如(数组名);
使用操作数组
并不是中的关键字,是语句的特殊简化版本,在遍历数组、集合时,更简单便捷。
从英文字面意思理解也就是“每一个”的意思
语法:
(元素类型元素变量(名):
遍历对象){
执行的代码
}
综合示例:
;导入类
{
([]){
定义一个整型数组,保存成绩信息
[]={89,72,64,58,93};
对类对数组进行排序
();
使用遍历输出数组中的元素
(){
();
}
}
}
二维数组
C语言
数据类型数组名[行数][列数];
例子:
1.a[3][3]={1,4,7,5,6,9,7,2,5}这里可以缺省成[][3],但是不可以a[3][].
2.a[3][3]={{1,2,5},{5,6,7},{5,4,6}};
3.a[3][3]={{1},{},{5}}里面缺省的值都是默认值0.
1.声明数组并分配空间
数据类型[][]数组名数据类型[行数][列数];
例如[][][3][3];
2.赋值
数组名[行的索引][列的索引]=值;
例如[0][0]=1;
二维数组静态初始格式
数据类型数组名[][]={
{第0行初值},
{第1行初值},
{第2行初值}
….,
{第n行初值}
;}
函数(C语言)/方法()
C语言有多个头文件,是库函数,也就是*,里面包含了函数声明,宏定义,函数原型.比如<>标准输入输出头文件.
头文件里面包含有多个函数,要使用这些函数必须先声明头文件.
也有类库,里面有多个包,包里面有多个方法.原理也是差不多的.
实质上两者没有本质上的区别,其实方法就是成员函数.
中,在类中创建对象,然后对象.方法();这样用,也就是说,方法是同一个,但是对象不同,…...
类具有相同或者相似特征的一类事物的统称。
对象类的某一个特例,叫做对象。
类是一个抽象的概念,对象是一个具体的个体。
一切事物都是对象。
比如说:
人,是类,一个抽象的概念.小红,就是对象,怎具体的指出哪一个.
函数()(C语言)
基础c语言程序包括:
头文件(公有知识)/主函数(程序入口)/其他函数(自定义函数)
函数就是功能,每一个函数用来实现一个特定的功能,函数名字反映其代表的功能
调用函数的步骤:
定义->声明->调用
(b)->();声明的时候里面有没有b都可以,但是一定要有分号->();如果函数是定义主函数前面的话可以不用声明.调用函数之前必须要声明或者定义函数,当然定义函数可以写在主函数后面,但是必须在调用函数之前声明该函数.
1.定义函数
a.定义无参函数
类型名函数名()
{
函数体
}
或
类型名函数名()是空的意思,表示函数没有参数
{
函数体
}
例如:
()
{
(“”);
}
b.定义有参函数
类型名函数名(形式参数表列)形式参数也叫做虚拟函数,简称形参,调用的时候函数名后面的参数就是实际参数,简称实参.可以是常量,变量或表达式.
{
函数体
}
例如()
{
z;
>;
z;这里也可以写成(z);,表示调用的时候对应返回的值什么那个.例如(5,7),那么这时候7,也就是说(5,7)的值就是7.(这里的7由函数里面运行完的时候z的值返回所得)
}
c.空函数
类型名函数名()
{}
无实际作用,只是用于编写程序开始阶段可以在将来准备扩充功能的地方
写上一个空函数,命名取将来去用的实际函数名.(其实也就是想到这个功能,但是又想不出来,或者暂时没有必要去写而已)
举个例子:
<>
()
{
(b);声明函数②
35;
(“”());调用函数③
0;
}
(b)定义函数①
{
z;
>
z;
}
方法()()
中用来解决一类问题的代码的有序组合,是一个功能模块.
语法:
访问修饰符返回值类型方法名(参数列表){
方法体;
}
其中:
1、访问修饰符:
方法允许被访问的权限范围,可以是、、甚至可以省略,其中(公共的)表示该方法可以被其他任何代码调用,其他几种修饰符的使用在后面章节中会详细讲解滴
2、返回值类型:
方法返回值的类型,如果方法不返回任何值,则返回值类型指定为;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用语句返回值
3、方法名:
定义的方法的名字,必须使用合法的标识符(通常首字母是小写字母,然后后面的单词首字母都是大写字母,这样应该是为了看起来更清晰吧)
4、参数列表:
传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开
根据方法是否带参、是否带返回值,可将方法分为四类:
Ø无参无返回值方法
Ø无参带返回值方法
Ø带参无返回值方法
Ø带参带返回值方法
方法的使用:
定义方法>创建对象(创建类的对象)>调试方法
1.定义方法:
在上一页↑
2.创建对象(类似于函数声明):
类()名对象名=类名();
3.调试方法(调用对象):
对象名.方法名();
方法重载就是多个同名,但是参数(类型/有无/顺序)不同的函数.
调用的时候,它们会根据参数的不同而用不同的函数.
的记事本编程
(安装好然后配置好环境变量后)
直接用记事本编程,以*格式保存(注意文件名要与类名一致)>进入系统操作>如果不是在C:
的话就先输入盘符(例如D:
),然后输入*文件所在盘符>输入文件所在目录>*运行编译出字节码文件*>*(*为文件名,不带后缀)>得到运行结果.