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

          由于我已经自学过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的就肯定绝对是个程序员。
   没有哪个语言比哪个语言好。只是每个语言都有自己的特性。不同的特性在不同的情况下
所表现的优劣不一样而已。
   变的程序语言,不变的是程序员和程序员的思想。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值