1.书写
命名规范
c语言用下画线连接词,java采用驼峰命名法。
get_name
getName
驼峰命名法:第一个单词首字母不大写,其他单词首字母大写。
命名只是书写规范,没有其他特殊含义。一般要求各个语言遵守各自的命名规范。
函数与数组的区别
一个花括号{}区别,一个[]区别
1.花括号的位置
//c:
void function()
{
//内容
}
//java:
public void function(){
//内容
}
- 数组的[]位置
//c
int arr[] = {1,2,3};
//java
//常用写法
int[] arr = {1,2,3};
//c的写法,支持但是不建议
int arr[] = {1,2,3};
2.相似
主入口
int main()
public static void main(String[] args)
(idea简写psvm)
导包方式
#include<xxx.h>
import xxx;
常量的写法
无论c还是java常量都统一要求大写,但只是建议而已。
//c常量:
#define MAX 100 (后面不要写分号;,define相当于word里的查找替换,也会将;替换过去)
const int MAX = 100;
java常量:
public static final int MAX = 100; (idea可简写 psf
)
java预留了c里面的
const
,goto
关键字,但是一点用也没有,仅仅是语法会高亮。
printf
与println
输出语句
c:
printf("",);
java:
System.out.println(); //可理解ln为换行 '\n'
java也有无ln的写法 ---> print(); 就是少个换行
printf();
java也支持c语言里面的printf
,用法一致
struct与class
struct与class差不多,不同点也就是默认权限
struct默认权限public
class默认权限 比私有private松一点,比public严格(java的默认权限是 在同一个包里可以访问 )
string 与 char[]
char[] 是c的字符串。本质是一个字符数组,可使用下标调用修改每一个字符。
char[] s = "123456";
String 是java的字符串。是一个常量,不可修改,我们进行的每一次操作都是创建了一个新的字符串。
String s = "123456";
随机值的获取
c:
//c
#include<time.h>
srand((unsigned)time(NULL));//设置随机种子
int result =rand() % 100 + 1;//举例获取1-100的随机值
java:
//第一种
Random r = new Random();
int result = r.nextInt(100)+1;//举例获取1-100的随机值
//第二种(Math.random()随机值为0-1)
java Math.random()
int result = (int)(Math.random()*100)+1//举例获取1-100的随机值
3.区别
对于c语言的部分编译器上,下面这段代码可能出错
for(int i = 0; i < 10; i++){
//内容
}
这是因为:c98不支持把变量声明写在循环的初始化部分,所以注意使用老版的编译器时要把变量定义写在外面
int i;
for(i = 0; i < 10; i++){
//内容
}
java去掉了c语言中麻烦的goto
,取而代之的是给循环打上标签来跳出多层循环
java可用标签(名字自定)快速跳出多层循环:
loop:
for(int i = 0;i<10;i++){
for(int j = 0; j<10;j++){
System.out.println(1);
break loop;
}
}
//程序的执行结果是`1`
跨平台性
c : .c
---> .exe
java: .java
----> .class
---> jvm
换平台时,如果是c需要重新写代码
而java只需要重新换个jvm
虚拟机,而虚拟机jvm
是不需要我们写的,所以提高了代码的跨平台使用
long与long long
longlong long int short
c里面的long和long long:
long 4/8 (32位系统上位4字节,64位系统上是8字节)
long long 8
java删去了 long 4/8 和 long long 8
直接就用一个8字节的long。确保了跨平台时不会发生内存的转变,而且由于内存长度确定,提高了代码的安全性
bool与boolean
c: 0 !0
java : true false
c: 0是假 ,非0是真
java: true是真 ,false是假
java里不存在“0是假 ,非0是真”的概念,boolean类型不能与任何类型进行类型转换。
类型转换
java是强类型的语言(比c强)。
有时候c语言里允许的转换类型(隐式转换),
在java里面却不被允许。注意区分
逗号运算符,
见文档最后-->
c 和 java 的回收
c语言的申请空间以及回收:
#include<stdlib.h>//这个是必须引用的头文件,不引用会报告一个错误(而且这个错误的提示完全没用)
int* a = (int*) malloc(sizeof(int));//申请
free(a);//释放
java只需要用new创建就行,不需要回收,回收由java自动进行。(所以一般java占用空间多)
System.gc()//建议回收,仅仅建议,而且你不建议他也会自动回收,所以这个等于没用
报错信息,如下标越界
c不会提示下标越界,会直接把里面空间的数据拿出,由于不确定是什么数据,所以最终的结果是个随机值
java下标越界会直接提示异常,不允许越界访问
java比c的报错提示好,出现问题方便解决。
问题-逗号运算符
结论:逗号运算符的结果就是最后一个逗号上的内容。 1,2,3,4,5
的结果就是5,原因如下:
(上面的代码才是,
运算符的结果)
解释一下问题,这个是运算符的优先级导致的,由于=
的优先级高于,
所以想得到1, 2, 3, 4, 5
的结果,得先让,
运算符计算,然后再赋值给a
网友评论