一、基本结构

一个C语言程序:

#include <stdio.h>int main(){printf("Hello world\n");return 0;
}

一个java程序:

    public class HelloWorld{public static void main(String[] args) {System.out.println("Hello world");}}

(一)头文件相关

C通过#include的方式引用头文件,会把所包含的内容在编译时添加到程序文件中。

Java通过使用import导入某些类,例如import java.lang.String; 表示导入了String类,而它是属于java.lang这个包的。

(二)main函数

C语言的int main()函数是无参函数,最后要返回0。

Java由类和方法组成。类中带有一个或多个方法。方法必须在类的内部声明。

二、注释

(一)C语言注释

C语言风格的注释、多行注释:/*注释内容*/(不推荐)

C++风格的注释、单行注释://注释内容(用的最多)

(二)Java注释

Java注释包括了C语言的两种注释风格,还添加了文档注释。

文档注释:/**文档注释*/(常见于方法和类之上描述方法和类的作用),可以被javadoc工具解析,生成一套以网页文件形式体现的程序说明文档。

三、数据类型:

Java相比于C语言增加了字节型变量byte和布尔型变量boolean

(一)字节型变量byte

byte b = 10;
System.out.println(b);

注意事项:

1.byte在任何系统下都占1个字节

2.byte的范围是:-128~127

(二)布尔型变量

boolean b = true;
System.out.println(b);
b = false;
System.out.println(b);

注意事项:

1.boolean类型的变量只有两种取值,true表示真,false表示假.。

2.Java的boolean类型和int不能相互转换,不存在1表示true,0表示false这样的用法。

(三)字符型变量char也有一定的不同

1.Java中使用单引号+单个字母的形式表示字符字面值。

2.计算机中的字符本质上是一个整数。在C语言中使用ASCII表示字符,而Java中使用Unicode表示字符。因此一个字符占用两个字节,表示的字符种类更多,包括中文。

char ch='呵';
System.out.println(ch);

四、类型转换以及类型提升

(一)类型转换

Java相比于C语言对数据类型有着更严格的要求。由大转小是如果没有进行强制类型转换,C语言只会报错,Java却无法编译。

(二)类型提升:byte与byte的运算

byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);

此时编译器会报错:Test.java:5:错误:不兼容的类型:从int转换到byte可能会有损失。

byte和byte都是相同类型,但是出现编译报错。原因是:虽然a和b都是byte,但是计算a+b会先将a和b都提升成int,再进行计算,得到的结果也是int,这是赋给c,就会出现上述错误。

由于计算机的CPU通常是按照4个字节为单位从内存中读写数据。为了硬件上实现方便,诸如byte和short这种低于4个字节的类型,会先提升成int,再参与计算。

五、标识符以及常用关键字

(一)C语言

C语言标识符有如下规则:

1、标识符必须以字母a~z、A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中,例如空格、标点符号和类型说明符(%、&、!、#、@、$)

2、标识符区分大小写字母

3、标识符的长度,c89规定31个字符以内,c99规定63个字符以内

4、C语言中的关键字,有特殊意义,不能作为标识符

C语言中定义的关键字共32个:auto、double、int、struct、break、else、long、switch、case、enum、register、typedef、char、extern、return、union、const、float、short、unsigned、continue、for、signed、void、default、goto、sizeof、volatile、do、if、while、static。

(二)Java

Java标识符有如下命名规则:

1、标识符由字母、数字、“_”、“$”组成,且首字母不能是数字;

2、不能把Java关键字作为标识符;

3、标识符没有长度限制;

4、标识符对大小写敏感。

5、自定义标识符最好取具有一定意义的字符串,便于记忆和理解。

命名建议:

1.类名:每个单词的首字母大写(大驼峰)

2.方法名与变量名:首字母小写,后面每个单词的首字母大写(小驼峰)

Java语言中定义的关键字共48个:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。

六、字符串类型

在Java中使用String类定义字符串类型,比如:

public static void main(String[] args) {String s1 = "hello";String s2 = " world";System.out.println(s1);System.out.println(s2);System.out.println(s1 + s2); // s1+s2表示:将s1和s2进行拼接
}

在有些情况下,需要将字符串和整形数字之间进行转换:

1.int转成String

int num = 10;
//方法1
String str1 = num + "";
//方法2
String str2 = String.valueOf(num);

2.String转成int

String str = "100";
int num = Integer.parseInt(str);

七、运算符

(一)取模运算

Java中%不仅可以对整形取模,也可以对double类型取模。

(二)关系运算符与逻辑运算符

与C语言1表示true,0表示false这样的用法不同,他们的计算结果其计算结果是布尔类型的true或者false。

(三)移位运算

相比于C语言的双目移位运算符:左移<<和右移>>,Java的移位操作符还包括无符号右移>>>。

右移>>的最左侧补符号位(正数补0,负数补1),而无符号右移>>>最左侧补0。

八、分支结构

(一)if语句的代码风格

C语言的常用代码风格

int x = 10;
if(x == 10)
{
//语句1
}
else
{
//语句2
}

Java的常用代码风格

int x = 10;
if(x == 10){
//语句1
} else {
//语句2
}

两种方式都是合法的,但Java中更推荐使用第二种风格,因为{放在if/else同一行,代码更紧凑。

(二)switch语句

C语言switch的括号内只能是整型表达式,而Java的switch的括号内只能是以下类型的表达式:

基本类型:byte、char、short、int,注意不能是long类型;引用类型:String常量串、枚举类型

九、输入输出

(一)输出到控制台

C语言用printf函数输出数据:

printf(format, msg);

Java用输出数据:

System.out.println(msg); // 输出一个字符串, 带换行

System.out.print(msg); // 输出一个字符串, 不带换行

System.out.printf(format, msg); // 格式化输出,与C语言的printf基本一致

(二)从键盘输入

使用Scanner读取字符串、整数、浮点数

import java . util . Scanner ; // 需要导入 util 包
Scanner sc = new Scanner ( System . in );
String name = sc . nextLine (); // 读取字符串
int age = sc . nextInt (); // 读取整型
flfloat salary = sc . nextFloat (); // 读取浮点型
sc . close (); // 注意 , 要记得调用关闭方法

(三)循环输入:

循环读取N个数字,并求取其平均值

C语言方式

int sum = 0;
int num = 0;
int tmp;
while (scanf("%d", &tmp) != EOF) {sum += tmp;num++;
}
printf("sum=%d", sum);

Java方式

import java.util.Scanner;//需要导入util包Scanner scanner = new Scanner(System.in);
int sum=0;
int num=0;
while(scanner.hasNextInt()){int tmp=scanner.nextInt();sum+=tmp;num++;
}
System.out.println("sum="+sum);
scanner.close();

Java和c的一些不同(一)相关推荐

  1. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  2. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  3. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  4. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  5. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  6. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  7. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

  8. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  9. java基本类型转换,随记

    java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...

  10. 科学处理java.lang.StackOverflowError: null异常

    java.lang.StackOverflowError: null异常处理 在项目运行中出现StackOverflowError 首先要检查在编码中是否有明显的递归编码,比如死循环或者无限循环调用. ...

最新文章

  1. 问题-[ACCESS2007]怎么显示MsysObjects
  2. 动态规划-换钱最少货币数
  3. 【Qt】Qt中QJsonObject类
  4. 精读CSS权威指南第四版(3)
  5. NanoPC-T4 RK3399和PC有线本地网络传输摄像头视频python
  6. Unity自定义UI组件(九) 颜色拾取器(下)
  7. java在线查看PDF
  8. 高性能MySQL读书笔记(一)
  9. 家用路由器及NAT协议
  10. 删除 文件夹出现0x80070091错误提示目录不是空的.txt
  11. 简单差分放大器和套筒式共源共栅放大器Cadence仿真
  12. wegame 取消直播提醒
  13. 手机遇到性能BUG怎么破?
  14. 学习太极创客 — MQTT 第二章(一)QoS 服务质量等级
  15. 安装下载的python软件包——以Community Water Model (CWatM v1.04)为例
  16. java实现随机输出26个小写字母
  17. swt包下载,swt包引入(一个简单的SWT程序实例及详解)
  18. chrome跳转IE
  19. 单机率公式计算机车日产量,货运机车平均日产量
  20. 22.8.29 C语言作业5道

热门文章

  1. 使用数据库连接池建立数据库连接
  2. 独立后台带分销功能月老办事处交友盲盒微信小程序源码新版,更好的裂变推广引流
  3. linux环境下python机器学习环境的搭建
  4. AD7606的国产替代方案—ADCS8162
  5. 大电流输出信号隔离转换模块
  6. 数组、数组的定义、对数组的理解
  7. 程序设计之学生宿舍管理系统
  8. 怎么才能快速减去皮下脂肪?
  9. 基于matlab的SMO实现
  10. 认证管理(锐捷网关篇)