您的位置:首页 > 编程语言 > Java开发

第一阶段:Java初级 ------- Java编程基础

2011-05-04 14:41 381 查看
由于我已经自学过C和一些其他编程相关的基础知识,所以在看这两集视频的时候,吸收的

很快。除了语言外,其他都是一样的,所以主要就是通过和C的比较来学习,用C的东西学JAVA,用

JAVA的东西复习C。下面就列出这些不一样的吧。

基 本 程 序 结 构

JAVA:

class classname

{
public static void main(String [] args)
{
}
}

C :

int main(void)
{
return 0 ;
}

相比之下,JAVA面向对象,C面向过程、结构。而类是面向对象的相关知识,运行JAVA的程序

是运行一个类的具体对象。而C则是把问题转化成不同等级层次,模块,然后逐步执行以完成整个问题。

JAVA的MAIN要放在一个CLASS里才能运行,但是是没有返回值的,刚开始很奇怪。但是想了一

下也的确应该这样,JAVA的MAIN是属于当前的CLASS的,它是这个CLASS的一个内容,它自己在CLASS里了,CLASS自己很清楚MAIN的情况,所以不需要它的返回值,因为CLASS又不调用MAIN,而是直接控制运行MAIN。CLASS对MAIN是控制运行,而非调用关系,所以不需要返回值。就像一个函数里面有一些非函数调用语句一样,这个函数直接控制运行这些语句;而不是通过接口之类的来调用它们。

在C里,MAIN则是面向操作系统的,是会被操作系统调用的,所以它要向操作系统返回一个状态值。

操作系统调用的不是CLASS里的MAIN,而JVM,在我的电脑上就是JAVA.EXE。所以JAVA运行

环境会向操作系统返回一个值。我也试了下,的确是这样的。



还可以看出,一个可以编译通过的最基本的JAVA结构是: class class_name{}

因为JAVA的MAIN直接被CLASS定义运行,C的MAIN直接被操作系统调用。所以有一个区别就是:

含MAIN的C源文件能编译通过的,那么相应的EXE一定能运行,只是BUG也会随着运行。

JAVA源文件能编译通过的,相应的CLASS文件则不一定能运行,如果CLASS里没有定义MAIN,就不能

运行相应的CLASS文件。

--------------------------------------------------------------------------------------------------------------------------------------

注 释

JAVA比C多了一种注释: /** */. 可以进行多行注释,这和/* */ 是一样的。但是它有个
专门的用途,用来生成JAVA程序文档的。老师说留着以后讲,我先试了试,但是看不到效果。不知道生
成的文档在哪里找不到。。。ihou再说吧。。。

---------------------------------------------------------------------------------------------------------

标 识 符

JAVA比C多了一个美元符号:$。应该是个特殊符号,有专用的地方。
---------------------------------------------------------------------------------------------------------

输 出 格 式

C: printf("x+y=/n",x+y); -----> x+y=计算x+y然后回车换行。

JAVA: print("x+y="+(x+y)+"/n"); ---> x+y=计算x+y然后回车换行。

println在最后比print多输出一个'/n'。

这里的+既有加法运算又有字符串连接的功能。使用和解读时要注意。

相比之下,我觉得各有好处, C的话要输出的字符串和内容分别集中,而JAVA则散开,
并且很连贯,JAVA要更符合人们直接表达想法。C要注意内容数量上和类型的匹配,而JAVA
则不用担心。在表达格式上我喜欢C,但是在表达方式上我喜欢JAVA。

像这样的格式上的不同点,以后肯定还有很多,要慢慢记。以后在切换两种语言的时候可不
要搞混了。

---------------------------------------------------------------------------------------------------------

数据类型的大小

C:char 1字节 。

short <= int <= long<=long long

&& short<long && int<long long; 整数各类型不是固定的,要看编译器。

NULL; 空指针。

JAVA:byte 1字节,为整形 . char 2字节,字符,整形。

short ---2 ; int --- 4 ; long --- 8 ;

float -----4 ; double -----8 ; 采用的是IEEE 754 移150码。数据范围和移
127码是一样的。

boolean : ture , false 1字节。

null; 空数据。

char: C用的是ASCII编码, JAVA用的是unicode编码.

到网上去搜了一下,但是搜不到一张像ASCII码那样的表格来记忆计算机字符。唉,下来再慢慢
找吧。

---------------------------------------------------------------------------------------------------------

JAVA 不允许在同一个函数里重复定义同一个变量,C里可以,只要作用域不矛盾就可以。但是最好尽量避免!

---------------------------------------------------------------------------------------------------------

看基础视频2的时候直接就把我给郁闷了。。一开始老师就讲“讲完了JAVA运算符”。。。。我汗,压根
就没讲啊。运算符什么的,就留在以后的生活中慢慢了解,现在也不必去找资料背。还是继续看视频吧。
后面还有好多视频啊····

---------------------------------------------------------------------------------------------------------

break && continue

java 的break如果带标记就等价于C里的 GOTO 标记。带continue的标记估计也是一样的。

---------------------------------------------------------------------------------------------------------

老师的“||”,老师在讲浮点数比较的时候,是这样用3.14举例的:

if( x>3.14 || x<3.15 ) ;

我觉得老师是写错了,其实老师是想告诉我们我们要比较一个浮点数的时候,要主要精度
问题。所以在比比较的时候要给一个精度区间。像这样的精度误差区间就是(3.14,3.15).
误差值为小于0.01,只要在这个区间都是3.14.
如果用老师上面的语句。给个10000那也大于3.14,那就糟糕了。所以"||",应该换成是
"&&",只是老师打错了而已。

---------------------------------------------------------------------------------------------------------

数 组

java: int[] arr = new [100] ; ----- 全部初始化为 0 ;

C : int arr[100] ; ----- 没初始化。

int* arr = (int*) malloc( sizeof(int) * 100 ) ; ------ 没有初始化。

int* arr = (int*) calloc ( 100 , sizeof(int) ) ; ------ 所有内存位初始化为。
二维
A: 一维长度。 B:二维长度。X:未知长度。
JAVA: int[][] arr = new[A][B] ; ------ 初始化为0值 .
int[][] arr ; ---- null 指针

arr = new int[A][] ; ---- null 指针首地址 .
arr[0] = new int[X]; ------ 指向一个一维数组 .
........
arr[A-1] = new int[X]; ------ 指向一个一维数组 .

arr[0][X]..........arr[0][X-1] ------ 初始化为0值。
arr[1][X]..........arr[1][X-1] ------ 初始化为0值。
.......
arr[A-1][X]..........arr[A-1][X-1] ------ 初始化为0值。

C : int arr[A][B] ; ------- bits = ?

int** arr ; ----- 野指针,二级

arr = (int**) mallco( sieof(int*) * A ) ----- 野指针数组首地址

arr[0] = (int*) mallco( sieof(int) * X ) ; ------ 指针,一级
arr[1] = (int*) mallco( sieof(int) * X ) ; ------ 指针,一级
......................
arr[A-1] = (int*) mallco( sieof(int) * X ) ; ------ 指针,一级

arr[0][X]..........arr[0][X-1] 全部未初始化。
arr[1][X]..........arr[1][X-1] 全部未初始化。
.......
arr[A-1][X]..........arr[A-1][X-1] 全部未初始化。
如果上面换成calloc就全部把位初始化为0.

JAVA的NEW就像是C的CALLOC。或许实际实现都是一样的效果吧。

不过要注意的是,C要自己释放申请的内存,JAVA是不用管的。有垃圾回收器呢。JAVA申请的
是堆内存,而C在上面第一种方法申请的是桟内存。

JAVA编译器会帮组程序员检查数组下标越界的情况,C不会。

-------------------------------------------------------------------------------------

到了这里,JAVA的基本语法教程就看完了。首先JAVA的跨平台真的很厉害,个人觉得很强大!!!

但是JAVA吃掉了很多程序员犯错误的机会,很多程序员可能反的错误都会被JAVA帮忙找出来所以对程序员来说,少了犯错,差错,改错,积累错误经验的机会。以前听说JAVA很娇气。看过后觉得的确如此。真的很娇气。

我觉得如果精通JAVA的人是个程序员,那么精通C的就肯定绝对是个程序员。

没有哪个语言比哪个语言好。只是每个语言都有自己的特性。不同的特性在不同的情况下
所表现的优劣不一样而已。

变的程序语言,不变的是程序员和程序员的思想。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: