笔者这学期在软件构造课程上首次接触Java, 需要自学。由于大一的时候学习过c语言,并且有人称java为c++ --,其语法和c语言比较类似,因此我打算对比着c语言进行学习,并在此记录学习笔记,便于随时复习,也希望能给和我情况类似的同学有一点小小帮助。初学者,如有错误,敬请指正。
刚刚我们提到了 java被一些人称作C++ --,为什么这么说呢?下面我们讨论一下C, C++和java的三种语言区别。
从编程思想来说,c是面向过程语言的典型代表,java是面向对象语言典型代表,而c++则是二者混合型的语言。
怎么理解“面向过程”和“面向对象”两种思想呢,我在网上看到一个例子,或许并不恰当,但对于初学者来说是很好理解的。
需求:把大象放进冰箱里。
面向过程:1.打开冰箱门 2.放进大象 3.关上冰箱门
面向对象:1.冰箱{容量,开门,关门} 2.大象{体积,移动}
面向过程编程时,需要编写的是打开冰箱门,放进大象,关上冰箱门三个函数,然后在main函数中依次调用三个函数以实现需求。
面向对象编程时,需要定义冰箱和大象两个类,并定义两个类对应的成员(冰箱的容量,大象的体积),对应的方法(开门,关门,移动)。 然后在main函数中,实例化冰箱,大象两个对象,再调用对应方法实现需求。
C一切采用函数的形式完成,然后在主函数main中依次调用。
C++是在C语言的基础上扩展而生的一门新语言,所以一般兼容C语言库。C++集成了类的概念,可以将所有的东西封装在类中,类中的私有成员不可被别人访问,这样就有效地解决了代码互干扰性,提高了团队工作效率。
java是汲取C++的长处而诞生的,这个语言采用完全面向对象的概念,将所有的功能封装在类中,而不像C++部分封装。同时它也删去了C++中一些难于理解和应用,以及比较危险容易出现bug的内容,如结构,联合,全局变量,指针变量,直接操作内存,多重继承等。因此java具有简洁安全,易于学习,可移植性高等特点,目前非常流行。
除了上面提到的大体差异外,java语法中还有一些跟C语言有出入的地方,在这里做一点补充。
Java和C语言数据类型相比,基本数据类型除了c语言有的整型,浮点型,字符型,还增加了布尔型(boolean,又称逻辑型)。Java不包含结构、联合和指针,但其独特的引用数据类型有着类似指针的用法。其引用数据类型有数组、类(Class)和接口(Interface)。基本数据类型是存在栈中的,而引用数据类型类似一个指向堆中一块区域的指针(指针本身也存在栈中)。
char c = -3
在Java中会报错。 Java增添了布尔型变量,它只有一位两个值,写作true或false。用于流程控制语句(如if语句,while语句)的逻辑判断,取代了C语言中其他类型变量(0为假,非0为真)的法则。这样避免了程序员失误写出while(flag=1)这样的永真循环。
需要注意的是,位运算(&,|)和逻辑运算(&&,||)均可用于布尔变量,且其运算结果常常相同。但有一点不同的是,后者存在短路现象,而前者没有。
Java中虽然也有数组,但和C语言中的数组有很大的不同:
int a[5];
int a[],b[];
int[] a,b;
注意后者只需在变量名后写一对方括号,其后所有变量均为数组。a = new int[n];//n可以是变量,数组元素初始化为0或null
a = new int[]{1,2,3};//大小为3,初始化为对应元素
int a[][] = new int[3][2];
//int b[][] = new int[][3]; Error
int c[][] = new int[3][];
c[0] = new int[4];
c[1] = new int[2];
c[2] = new int[]{1,3};
字符串虽然不是和整型,数组同级的数据类型,而是一个类,但由于我们经常用到它,我就在这里讲一下它的特殊之处:
import java.util.Scanner
package src.p1.Class1
Java中也支持switch语句。不同点在于,switch语句中的变量不仅可以是整数、字符,Java6之后还支持字符串。
例:
switch(s){case "hello":...case "java":...default:...
}
除了沿用C语言中的循环语句外,Java(5之后)还支持一种foreach循环,又称增强型for循环,可遍历一个可迭代对象的每个元素。格式如下:
for(Type element :iterable){ ... }
例子:
for(int i : set){ ... }
其等价于下面代码:
for(Iterator it = set.iterator(); it.hasNext();){int i = it.next() ...
}
这种方法类似Python中的for语句,即:
for i in set:...
在此类循环中,有两点需注意:
(关于迭代方法,我会在之后总结。)
我们知道C语言中break语句是跳出内层循环(或switch),continue是跳过内层循环剩余部分。如果想跳出外层循环该怎么办呢?
但由于goto语句会使程序流程不直观,导致可读性很差,所以一直不被推荐使用,而flag也要多定义一个变量比较麻烦。在java中,增加了break+标号的用法。即:在循环体前面增加相应标号,然后使用break+对应标号跳出对应循环。用法如下:
int i=0;
loop: while(true){switch(i){case 0:i++;break;case 1:break loop;}
}
continue语句同理。
本文发布于:2024-02-01 21:13:45,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170679322239457.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |