C语言和JAVA语言的语法小区别

学习记录

记录一些学习过程的,防止后续遗忘,方便回顾


文章目录

  • 学习记录
  • 一、数据类型
  • 二、标识符
  • 三、流程控制语句
  • 四、输入输出
  • 五、switch语句
  • 六、数组


一、数据类型

C语言

基本数据类型:
整型:short2B) int(4B) long(8B)
浮点型:float4B) double8B)
字符型:char1B)

构造数据类型:
结构体(struct)、数组(arry)、共用体(union)枚举(enum)

指针数据类型(*)、空类型(void)

共用体(union)举例:
	 //比如成绩不同的表示方法  95分  A档  95.0分 union的大小与最大的数据类型相同,一次只能一个变量有值
	union{    
	int a;
	float b;
	char c;
	}

枚举(enum)举例:
	enum EN{
	a,//0
	b,//1
	c//2
};

JAVA

基本数据类型:
整型:byte(1B) short2B) int(4B) long(8B)//byte不同
浮点型:float4B) double8B)
字符型:char2B)//不同点     char a='男'
布尔型:boolean4B)
引用数据类型:
类:class
接口:interface
数组:array[]
枚举:enum
记录:record

JAVA,String为引用数据类型,俗称字符串,String s="abc"    
判断String A,B是否相同用A.equal(B)方法,不是A==B

c语言中,使用的是char arr[N]来当字符串,char  arr[]="abc",默认在字符串后面添加'\0',
不可以arr="abc"(arr为地址常量),可以使用函数操作:
  strcpy  (A,B):把B中字符复制到A中去 
  strcat  (A,B):把B拼接到A后面去
  strlen(A):计算A的长度 不包含 '\0' 
  strcmp(A,B):AB长度比较 A>B  结果大于0,反之<0,相等=0.

二、标识符

C语言

字母 数字 下划线 ,数字不可以开头。不能是关键字

JAVA

由26个英文字母大小写,0-9 ,_或 $组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。

JAVA命名规范
包名:多单词组成时所有字母都小写:xxxyyyzzz。
例如:java.lang、com.atguigu.bean
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 大驼峰
例如:HelloWorld,String,System等
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz 小驼峰
例如:age,name,bookName,main,binarySearch,getName
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
例如:MAX_VALUE,PI,DEFAULT_CAPACITY

三、流程控制语句

顺序、分支(if-else、switch-case)、循环(for、do{}while、while{})

C语言

字母数字下划线 ,数字不可以开头。不能是关键字

JAVA

由26个英文字母大小写,0-9 ,_或 $组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。

JAVA命名规范
包名:多单词组成时所有字母都小写:xxxyyyzzz。
例如:java.lang、com.atguigu.bean
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 大驼峰
例如:HelloWorld,String,System等
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz 小驼峰
例如:age,name,bookName,main,binarySearch,getName
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
例如:MAX_VALUE,PI,DEFAULT_CAPACITY

break语句用于终止某个语句块的执行
{    ……	 
	break;
	 ……
}

break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块 
	label1: {   ……        
	label2:	     {   ……
	label3:			 {   ……
				           break label2;
				           ……
					 }
			     }
			} 

四、输入输出

C语言

输出:printf("%d\n",a);
      printf("%10.2f\n",b);//占10个位置,包含小数点,小数后面占两位(.2f说明小数后面占两位,长度变化)
输入:scanf("%d%s%l%f%c",a,b,c,d,f);//除了%c都可以分离‘ ’和‘\n’  

JAVA

输出:System.out.println("samll");
输入:Scanner 变量1= new Scanner(System.in);
     数据类型  变量2=变量1.next() / nextXxx();//根据需要安排不同数据类型;可以先定义,后赋值!
     变量1.close();//关闭资源
     
键盘输入代码的四个步骤:
1. 导包:`import java.util.Scanner;`
2. 创建Scanner类型的对象:`Scanner scan = new Scanner(System.in);`
3. 调用Scanner类的相关方法(`next() / nextXxx()`),来获取指定类型的变量
4. 释放资源:`scan.close();

例如:
    Scanner scanner = new Scanner(System.in);//System.in默认代表键盘输入
        //③根据提示,调用Scanner的方法,获取不同类型的变量
        System.out.print("请输入你的网名:");
        String name = scanner.next();//.next():为String类型

        System.out.print("请输入你的年龄:");
        int age = scanner.nextInt();

        System.out.print("请输入你的体重:");
        double weight = scanner.nextDouble();

        System.out.print("你是否单身(true/false):");
        boolean isSingle = scanner.nextBoolean();

        System.out.print("请输入你的性别:");
        char gender = scanner.next().charAt(0);//先按照字符串接收,然后再取字符串的第一个字符(下标为0)

        System.out.println("你的基本情况如下:");
        System.out.println("网名:" + name + "\n年龄:" + age + "\n体重:" + weight + 
                           "\n单身:" + isSingle + "\n性别:" + gender);
        //④ 关闭资源
        scanner.close();

五、switch语句

JAVA
switch(表达式)中表达式的值必须是下述几种类型之一:
byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);
C语言
switch(表达式)中表达式的值必须是 整型 和 字符型,表达式可以是表达式 但必须是一个常量
共同点:case子句中的值必须是常量,不能是变量名或不确定的表达式值或范围;

switch(表达式){
        case 常量值1:
            语句块1;
            //break;
        case 常量值2:
            语句块2;
            //break;
        // ...
       [default:
            语句块n+1;
            break;
       ]
    }

六、数组

JAVA

2. 数组(JAVA)
    2.1静态初始化:如果数组变量的初始化和数组元素的赋值操作同时进行
        一维数组声明和静态初始化格式1:
        数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,...};
        或
        数据类型[] 数组名;
        数组名 = new 数据类型[]{元素1,元素2,元素3,...};
        注意:Java语言中声明数组时不能指定其长度(数组中元素的个数)。 例如: int a[5];
    2.2动态初始化:数组变量的初始化和数组元素的赋值操作分开进行
        数组存储的元素的数据类型[] 数组名字 = new 数组存储的元素的数据类型[长度];
        或
        数组存储的数据类型[] 数组名字;
        数组名字 = new 数组存储的数据类型[长度];
    2.3数组的长度:
        JAVA:arr.length 指明数组arr的长度(即元素个数)
        C;sizeof(arr)
    2.4 二维数组 -->每行长度可能不一致
       1 静态初始化:元素的数据类型[][] 二维数组的名称;
        2 动态初始化:
            格式1:规则二维表:每一行的列数是相同的
            int[][] arr = new int[3][2];
            
            格式2:不规则:每一行的列数不一样
            //(1)先确定总行数
            元素的数据类型[][] 二维数组名 = new 元素的数据类型[总行数][];
            //此时只是确定了总行数,每一行里面现在是null
            //(2)再确定每一行的列数,创建每一行的一维数组
            二维数组名[行下标] = new 元素的数据类型[该行的总列数];
            //此时已经new完的行的元素就有默认值了,没有new的行还是null
            //(3)再为元素赋值
            二维数组名[行下标][列下标] = 值;
            
       3 遍历规则:
            for(int i=0; i<二维数组名.length; i++){ //二维数组对象.length
                for(int j=0; j<二维数组名[i].length; j++){//二维数组行对象.length
                    System.out.print(二维数组名[i][j]);
                }

代码举例:

一维数组

 //数组的定义
        //静态定义
        int[] arr = new int[]{1, 2, 3, 4, 5};//方法一

        int[] arr1;
        arr1 = new int[]{1, 2, 3, 4, 5};//方法二:用new创建数组实体

        int[] arr2 = {1, 2, 3, 4, 5};//方法三  省略new int[]  默认为int

        int arr3[] = {1, 2, 3, 4, 5};//方法四  类似c语言

        /*错误情况:(重要tips)
        一.
        int[] arr4;
        arr4={1, 2, 3, 4, 5};//不可以这样 注意与方法三的区别
        二.
        int[] arr5=new int[5]{1, 2, 3, 4, 5};//错误 不可以int[5] 相当于动态和静态一起使用了

        */
        //动态定义:后续可以循环给每个元素赋值
        int[] arr01=new int[5];//方法一

        int[] arr02;//方法二
        arr02=new int[5];

        System.out.println("arr02的地址:"+arr02);
        System.out.println("arr02的长度:"+arr02.length);
        System.out.print("arr02的元素为:[");
        for (int i = 0; i < arr02.length; i++) {
            if (i==0){
                System.out.print(i);
            } else {
                System.out.print(" ,"+i);
            }
        }
        System.out.print("]");
        System.out.println();

        //默认值分析****(不同点)
        int[] a1=new int[5];//默认0
        System.out.println(a1[0]);
        double[] a2=new double[5];//默认0.0
        System.out.println(a2[0]);
        boolean[] a3=new boolean[5];//默认false
        System.out.println(a3[0]);
        char[] a4=new char[5];//默认0 不是‘0’
        System.out.println(a4[0]);
        String [] a5=new String[5];//默认null
        System.out.println(a5[0]);

        // 定义数组,存储3个元素
        int[] arr001 = new int[3];
        //数组索引进行赋值
        arr001[0] = 5;
        arr001[1] = 6;
        arr001[2] = 7;
        //输出3个索引上的元素值
        System.out.println(arr001[0]);//5
        System.out.println(arr001[1]);//6
        System.out.println(arr001[2]);//7
        //定义数组变量arr2,将arr的地址赋值给arr2****(不同点)
        int[] arr002 = arr001;
        arr002[1] = 9;
        System.out.println(arr002[0]);//5
        System.out.println(arr002[1]);//9
        System.out.println(arr002[2]);//7

二维数组 : 最大区别是 每行长度可能不一致!

 int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9, 10}};//声明与初始化必须在一句完成

        System.out.println(arr[0].length);//3每列长度不一样 即列数不一致     ****(不同点)

        System.out.println(arr[1].length);//3
        System.out.println(arr[2].length);//4
        int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9, 10}};

        int[][] arr2;
        arr2 = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9, 10}};
        //错误示范  不可以写int[3][3]   和一维一样,只能是int[][]
        //arr2 = new int[3][3]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9, 10}};//错误,静态初始化右边new 数据类型[][]中不能写数字
        */
        
		//举例说明:
        //1、声明一个二维数组,并且确定行数
        //因为每一行的列数不同,这里无法直接确定列数
        int[][]  arr = new int[5][];
        //2、确定每一行的列数
        for(int i=0; i<arr.length; i++){
			/*
			arr[0] 的列数是1
			arr[1] 的列数是2
			arr[2] 的列数是3
			arr[3] 的列数是4
			arr[4] 的列数是5
			*/
            arr[i] = new int[i+1];//有点类似一维数组了         *****(不同点)

        }
        //3、确定元素的值  遍历方法                             *****(重要)
        for(int i=0; i<arr.length; i++){
            for(int j=0; j<arr[i].length; j++){
                arr[i][j] = i+1;
            }
        }
        //4、遍历显示
        for(int i=0; i<arr.length; i++){
            for(int j=0; j<arr[i].length; j++){
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }

C语言

        数组(C)
        //静态初始化
        int arr[5]={1,2,3,4,5};//方法一:arr[5] 5写不写都得

        int arr1[5];//方法二
        int arr2[5]={1,2,3,4,5};
        strcpy(arr1,arr2);//不arr1={1,2,3,4,5};
        //动态定义数组
        int *p=(int *)maloc(sizeof(int)*5);//动态定义数组 p指针指向一个大小为5的地址空间

        //二维数组
        int arr[][]={{1,2},{},{3,4,5}}//此处为arr[3][3] 行列都是三
        int arr[2][2]={{1},{}}//此处为arr[2][2] 行列都是二

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/556450.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为手机无法弹出wifi上网认证页面处理

华为手机无法弹出wifi上网认证页面 连wifi后跳到上图界面卡住&#xff0c;不跳转到单位的上网认证界面。 打开手机的设置应用&#xff0c;点击上面的WLAN选项。 点击上面的更多WLAN设置选项。 关闭WLAN安全检测就可以正常弹出上网认证界面&#xff0c; 正常弹出上网认证界面&a…

【RAR技巧】rar压缩包的三种加密方法

文件压缩成rar压缩包后&#xff0c;想要保护文件内容不被他人随意解压&#xff0c;我们可以给rar压缩包设置加密&#xff0c;今天分享3种方法设置rar文件加密方法。 方法一&#xff1a;加密 最简单的加密方法&#xff0c;就是在加密文件时输入想要设置的密码&#xff0c;完成…

栈和队列-介绍与实现(超级详解-C语言)

栈 栈的介绍 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈…

Mac中隐私安全性设置-打开任何来源

文章目录 **Mac中隐私安全性设置-打开任何来源**一、目的二、打开方式 Mac中隐私安全性设置-打开任何来源 一、目的 从外部下载的软件频繁打不开&#xff0c;需要从隐私安全性中重新选择一下&#xff1b;默认Mac隐藏了任何来源 二、打开方式 打开终端&#xff0c;输入一下命…

配置BFD

目录 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置OSPF路由协议 3.配置VRRP协议 4.配置BFD 原理概述 为了减小设备故障对网络业务造成的影响&#xff0c;提高网络的可用性&#xff0c;网络设备需要能够尽快检测到与相邻设备之间的通信故障&#xff0c;以便及…

详解运算符重载——探索运算符重载的应用

前言:运算符重载是面向对象的一个重要的知识点。我们都知道内置类型可以进行一般的运算符的运算。但是如果是一个自定义类型&#xff0c; 这些运算符就无法使用了。那么为了解决这个问题&#xff0c; 我们的祖师爷就在c中添加了运算符重载的概念。 本篇主要通过实例的实现来讲述…

短视频批量采集提取软件|视频下载工具

短视频批量采集提取软件&#xff1a;高效获取视频资源 一、开发背景 在日常业务中&#xff0c;我们经常需要获取大量的短视频资源&#xff0c;以支持各种需求&#xff0c;但传统的获取方式过于繁琐&#xff0c;一一复制链接下载效率低下。基于此需求&#xff0c;我们开发了一…

rocketmq-dashboard打包测试报错

rocketmq-dashboard运行的时候没问题&#xff0c;但是打包执行测试的时候就是报错 这时候跳过测试就可以成功 报错为 There are test failures. Please refer to D:\CodeEn\rocketmq-dashboard\target\surefire-reports for the individual test results. 你只需要跳过测试就…

Wpf 使用 Prism 实战开发Day20

备忘录功能页面完善以及优化 备忘录功能基本跟前一章节的待办事项差不多一至&#xff0c;就不再做过多的笔述了 一.备忘录功能完整页面源码 MemoView.xaml <UserControl x:Class"MyToDo.Views.MemoView"xmlns"http://schemas.microsoft.com/winfx/2006/xam…

用html写一个搜索页面

<!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>搜索框设计</title><link rel"stylesheet" href"./style.css"> </head> <body> <div class"se…

TypeScript基础入门(一、常用类型)

目录 第一章 前言 1.1 介绍TypeScript 1.2 TypeScript相比Js的优势 1.3 使用TypeScript的准备工作 第二章 TypeScript的数据类型 2.1 TypeScript的常用类型 2.1.1 概述 2.1.2 TS使用JS基本数据类型 2.1.2.1 number 2.1.2.2 string 2.1.3.3 boolean 2.1.2.4 null 2…

Pytorch DistributedDataParallel(DDP)教程一:快速入门理论篇

Pytorch DistributedDataParallel&#xff08;DDP&#xff09;教程一&#xff1a;快速入门理论篇 目录 一、 写在前面二、什么是分布式并行训练1. 并行训练2. 数据并行 三、DDP的基本原理1. DDP的训练过程2. Ring-All-Reduce算法 四、如何搭建一个Pytorch DDP代码框架1. 与DDP有…

二次元AI绘画生成器免费:教你生成精美图片

二次元AI绘画生成器&#xff0c;无疑是现代技术与艺术完美结合的典范。这些工具不仅将复杂的绘画过程简化&#xff0c;更让每一个艺术爱好者的创意得以充分展现。这些生成器能够精准捕捉大家的创意精髓&#xff0c;将其转化为细腻、独特的二次元画作。无论是角色设计、场景描绘…

OpenHarmony UI动画-box2d

简介 用于游戏开发&#xff0c;使物体的运动更加真实&#xff0c;让游戏场景看起来更具交互性&#xff0c;比如愤怒的小鸟 效果展示 下载安装 ohpm install ohos/box2dOpenHarmony ohpm环境配置等更多内容&#xff0c;请参考 如何安装OpenHarmony ohpm包 使用说明 import * …

OCR图片转化为Excel文件功能在哪些平台和设备上能实现?

在现今数字化时代&#xff0c;将图片转化为Excel文件已成为许多工作者和研究者的重要需求。这种转换功能在多个平台和设备上均能实现&#xff0c;为用户提供了极大的便利。 首先&#xff0c;我们来看看在线平台方面。目前&#xff0c;市面上有许多在线工具可以将图片转换为Exc…

MoJoCo 入门教程(七)XML 参考

系列文章目录 前言 表格第二列中的符号含义如下&#xff1a; ! 必填元素&#xff0c;只能出现一次 ? 可选元素&#xff0c;只能出现一次 * 可选元素&#xff0c;可多次出现 R 可选元素&#xff0c;可递归出现多次 一、简介 本章是 MuJoCo 中使用的 MJCF 建模语言的参考手册。…

【云计算】安全组和网络ACL的区别

安全组和网络ACL的区别 ACL&#xff08;Access Control List&#xff09;和 安全组&#xff08;Security Group&#xff09;是两种不同的网络安全控制机制&#xff0c;通常用于管理云计算平台中的网络访问权限。它们在功能和实现上有一些显著的区别&#xff1a; 辨析 范围不同&…

如何把网易云ncm转换为mp3格式

大家在网易云下载音乐的时候会发现下载的音乐格式是ncm&#xff0c;这个格式只能在网易云播放器才能播放&#xff0c;无法在别的播放器上播放。今天教大家把ncm转换为更加通用的格式 打开智游剪辑&#xff08;官网: zyjj.cc&#xff09;&#xff0c;搜索ncm转mp3 这里就只需要上…

DC电源模块的未来发展方向和创新应用领域

BOSHIDA DC电源模块的未来发展方向和创新应用领域 随着科技的快速发展&#xff0c;直流&#xff08;DC&#xff09;电源模块的应用领域也在不断扩大。从传统的电子产品到新兴的清洁能源领域&#xff0c;DC电源模块正发挥着越来越重要的作用。未来&#xff0c;DC电源模块将继续…

windows docker desktop==spark环境搭建

编写文件docker-compose.yml version: 3services:spark-master:image: bde2020/spark-master:3.1.1-hadoop3.2container_name: spark-masterports:- "8080:8080"- "7077:7077"- "2220:22"volumes:- F:\spark-data\m1:/dataenvironment:- INIT_D…
最新文章