Java和c的一些区别,对比学习
一:import和#include
import 它不像#include一样,会将其他的java文件的内容加载进来;(我感觉这就是这两者最大的区别了)其次呢,在java的代码编写过程中,import是可有可无的,假如你不喜欢使用import,你是完全可以不使用import,然后在使用什么类的时候写完它的全名就好。
#include我感觉它在吃语言中是不能少的,假如少了它,你很多的函数就不能调用,而你自己去写的话就会很麻烦,它不像java一样有什么全名,你不写,你就不能使用。
二 :instanceof运算符
在c语言中,是没有instanceof运算符的。
Instanceof 的主要作用:
用来判断一个类是否实现了某个接口,或者判断一个实例是否属于一个类。
就像下面这个例子用来判断是否属于一个类:
String name = 'James';
boolean result = name instanceof String;
还有另外一点就是返回值 ,instanceof的返回值是 布尔型,只有true和false。
三 :final和const、#define
自我感觉final 和 const的作用差不多(我的学习还不充足,所以这样觉得吧0.0)这里主要是讲一下c中的const和#define,以前我把他们俩差别不是很大,现在做一个总结。
const和#define的区别:
1 编译器处理方式不同
define宏是在预处理阶段展开
const是常量是在编译运行阶段时使用的
2类型和安全检查不同
define宏是没有类型,不做任何类型检查,仅仅是展开
const常量有具体的类型,在编译阶段会执行类型检查
#include<bits/stdc++.h>
using namespace std;
#define m 3
#define mm m+1
#define mmm (m+1)
const int M=3;
const int MM=M+1;
int main()
{
int a,aa,A;
a=5*mm;
aa=5*mmm;
A=5*MM;
cout<<a<<endl<<aa<<endl<<A;
return 0;
//再看下面的运行结果就可以很好的看到了两者的区别
}
运行结果:
3储存方式不同
define宏仅仅是展开,有多少地方使用,就会展开多少ci,不会分配内存
const常量会在内存中分配(可以是堆也可以是栈中)
const的优点:
1const用于定义常量变量,这样这个变量在后面就不可以再改变
2,const可以节省空间,避免不必要的浪费。
3编译器可以对const进行类型安全检查,避免一些不必要的错误
#define的优点:
1宏可以定义一些函数,但是const不可以
2宏可以是代码更简洁
3使用宏可以方便代码的维护
4宏可以定义带参数的宏,做到一定程度的泛型。
#define MAX(a, b) (((a)>(b)) ? (a) : (b));
//定义了一个简单的取最大值的函数,const不行
//这里的a和b可以是int、double和float,
//这就是做了一定程度的泛型
四 :增强型for循环
语法格式:
for(String score声明语句:表达式){
//代码句子
};
声明语句:声明一个新的局部变量(和后面表达式的的类型一致),其作用域限定在循环语句块中(局部变量),它的值和此时数组元素的值相等。
表达式:表达式就是你想要访问的数组名,或者是返回值为数组的方法
普通for和增强型for的对比:
普通for的优点:可以对数组进行比较复杂的操作
增强型for优点:比较简洁,但是不能进行一些复杂的操作