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.Javaboolean类型和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的括号内只能是以下类型的表达式:

基本类型:bytecharshortint,注意不能是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();

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值