Java和c的一些不同(一)
一、基本结构
一个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的一些不同(一)相关推荐
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几
Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常
kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...
- Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid
Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...
- 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码
java开发必知必会之看源码,而看源码的第一步则是找到源码
- java基本类型转换,随记
java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...
- 科学处理java.lang.StackOverflowError: null异常
java.lang.StackOverflowError: null异常处理 在项目运行中出现StackOverflowError 首先要检查在编码中是否有明显的递归编码,比如死循环或者无限循环调用. ...
最新文章
- 问题-[ACCESS2007]怎么显示MsysObjects
- 动态规划-换钱最少货币数
- 【Qt】Qt中QJsonObject类
- 精读CSS权威指南第四版(3)
- NanoPC-T4 RK3399和PC有线本地网络传输摄像头视频python
- Unity自定义UI组件(九) 颜色拾取器(下)
- java在线查看PDF
- 高性能MySQL读书笔记(一)
- 家用路由器及NAT协议
- 删除 文件夹出现0x80070091错误提示目录不是空的.txt
- 简单差分放大器和套筒式共源共栅放大器Cadence仿真
- wegame 取消直播提醒
- 手机遇到性能BUG怎么破?
- 学习太极创客 — MQTT 第二章(一)QoS 服务质量等级
- 安装下载的python软件包——以Community Water Model (CWatM v1.04)为例
- java实现随机输出26个小写字母
- swt包下载,swt包引入(一个简单的SWT程序实例及详解)
- chrome跳转IE
- 单机率公式计算机车日产量,货运机车平均日产量
- 22.8.29 C语言作业5道