第一阶段: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的就肯定绝对是个程序员。
没有哪个语言比哪个语言好。只是每个语言都有自己的特性。不同的特性在不同的情况下
所表现的优劣不一样而已。
变的程序语言,不变的是程序员和程序员的思想。
很快。除了语言外,其他都是一样的,所以主要就是通过和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的就肯定绝对是个程序员。
没有哪个语言比哪个语言好。只是每个语言都有自己的特性。不同的特性在不同的情况下
所表现的优劣不一样而已。
变的程序语言,不变的是程序员和程序员的思想。
相关文章推荐
- 黑马程序员--第一阶段2.java编程基础--第4天
- Java高并发编程之第一阶段,多线程基础深入浅出
- Java高并发编程之第一阶段,多线程基础深入浅出
- 黑马程序员--第一阶段2.java编程基础--第2天
- 黑马程序员--第一阶段2.java编程基础--第2天
- 黑马程序员--第一阶段2.java编程基础--第3天
- 黑马程序员--第一阶段2.java编程基础--第3天
- 第一阶段:Java初级 ------- 面向对象基础
- 黑马程序员--第一阶段2.java编程基础--第4天
- 第一阶段锻炼基础编程能力
- 第一阶段:Java初级 ------- GUI
- Java基础第一阶段——02_Java语言基础_关键字&变量&运算
- 第一阶段-入门详细图文讲解tensorflow1.4 -(三)TensorFlow 编程基础知识
- Java第一阶段-Java基础入门
- Java基础第一阶段——01_Java语言概述&HelloWorld
- 启途第一阶段 JAVA基础 单机版画图板开发与改装
- java基础第一阶段的学习总结。
- 第二阶段:Java初级 ------- 网络编程
- Java基础第一阶段——03_Java语言基础_运算符&if&while&switch&for语句
- Java基础第一阶段——05_Java语言基础_数组操作&排序&查找