关于C和Java

作者: 不返y | 来源:发表于2023-11-25 17:30 被阅读0次

1.书写

命名规范

c语言用下画线连接词,java采用驼峰命名法。

get_name getName

驼峰命名法:第一个单词首字母不大写,其他单词首字母大写。

命名只是书写规范,没有其他特殊含义。一般要求各个语言遵守各自的命名规范。

函数与数组的区别

一个花括号{}区别,一个[]区别

1.花括号的位置

//c:
void function()
{
    //内容
}
//java:
public void function(){
    //内容
}
  1. 数组的[]位置
//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里面的constgoto关键字,但是一点用也没有,仅仅是语法会高亮。

printfprintln输出语句

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

相关文章

  • java day1

    类和对象 java和C有所不同,java不需要考虑步骤,而是把所有的东西都考虑进去java'的好处: 最后是关于一...

  • Java 内存管理

    Java可以自动管理内存,比C/C++要方便的多, 但是实际Java 也会出现内存溢出的问题。 关于Java的内存...

  • JNI开发基础

    JNI与NDK Java和C/C++互相通过的接口,是Java语言提供的Java和C/C++相互沟通的机制,目的通...

  • 程序设计艺术 10.16

    集合和映射 集合与映射用c++.有关于Pat的java超时问题. std::set

  • java8 Optional【原创】

    关于java8 Optional 文档版本:v1.0版本 和C/C++不一样,java从一开始就尝试将指针彻底的包...

  • Java的String类学习

    关于String String的定义:C++、java、VB等编程语言中的字符串。 在java、C#中,Strin...

  • NDK JNI--学习笔记

    JNI 是java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,...

  • Android JNI使用(Android Studio)

    java native interface (JNI)学习java和C/C++各有优缺点,有时用C/C++实现更好...

  • JNI其实很简单(一)之HelloWorld(Android S

    JNI(Java Native Interface) 目的: ** 实现了Java和其他语言(主要是c和c++...

  • Android NDK开发学习笔记

    JNI JNI是Java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代...

网友评论

    本文标题:关于C和Java

    本文链接:https://www.haomeiwen.com/subject/gxuowdtx.html