java入门(1)--介绍

阵营

人们在认识事物的时候,很喜欢贴标签、归类、划阵营。越是阅历多就越会这样。

这也不完全是什么坏事,至少可以把事物间作个对比、归纳。

java到底是一种什么样的语言呢?

首先,她是一门高级语言。这是与机器语言、汇编语言相比较而言的。

也就是说,她主要还是为了方便人的理解与阅读,并不是优先考虑机器的执行效率。

其次,我们总喜欢把高级语言划分为“编译型”与“解释型”。比如,c是编译型的:

因为我们需要先用编译器把源代码转换为机器能懂的可执行代码,然后去执行。

注意,这个可执行代码是与机器和操作系统密切相关的。windows下的可执行程序,拿到苹果电脑上,根本无法运行。

比如:python就是解释型的,也被称为“脚本语言”。

python源码不需要编译,而是在需要执行的时候,用解释器一边翻译一边执行,这当然会有点慢,但获得了强大的动态能力。

Java呢? 二者皆非。

Java采用了当时还比较新潮的思路(在今天当然不足为奇了):

她把源码不进行彻底的编译,而是编译到半山腰,形成一种运行在理想的或说假想的机器上的代码。

因为这台机器是假想的,因而也就不会有windows, Linux,或是x86, power pc 等软硬件上区别。

这台假想的机器,在不同的真实机器上,可以通过不同的软件模拟出来。被称为“虚拟机”

 

这样大费周折所换来的好处是:跨平台。

具体地说,可以把java产生的这种中间产品(字节码)拷贝到任何主流的操作系统上都能执行。

这就是java提出的口号,所谓:一次编写,到处运行。

你有可能会不服气,说c语言的源码不也可以到处拷贝并编译运行吗?

python的源码不也可以到处运行的吗?

这可不一样,别人传播的是源码,java传播的是字节码。开发者一般不愿意自已的源码直接给用户的。

另外,java这样做也提高了代码的运行效率。因为编译器可以使用各种优化技术,程序规模越大越有优势。

当然,比起c语言的彻底编译,执行效率上还不如c,但由此获得的其它优势足以弥补此不足。

加上其它方面的改进,使得java从诞生后就一路走红,连续霸占TIOBE开发语言流行度的榜首。

所以,无论你学过什么语言,都应该至少了解java。

安装方法

可以从网上下载java语言的对应操作系统的安装包。

如果是windows系统,可以选择那种可执行文件自动安装的,也可以只下载zip包,解开就可以了。

全自动安装过程很简单,网上资料铺天盖地,这里就不重复介绍。

需要强调的是,它与直接解压的那种安装方法比,多做了两件事:

1. 为path环境变量增加了java虚拟机的位置信息。

2. 注册了一个java update程序,能时不时提示你更新java包。

如果你对windows注册表深恶痛绝,最好直接解压文件。抛开这些不算,java是“纯绿色软件”,它并不依赖注册表就能很好地干活。

java安装虽然容易,还有一件值得一提:

当下,我们的机器大都是64位的处理器,java可以选32位的,也可以选64位的。

这个你要想清楚,因为有的软件对java虚拟机版本有要求。

比如,eclipse32位版本的就只认32位java虚拟机,不对就会报错。

实际上,我们安装的java是两套产品:JDK和JRE

JRE是java运行时环境,有了它就可以执行无论谁给你的 *.class文件。这个是给java最终用户用的。

JDK是包含了编译器等在内的一套开发工具包,是给java开发者用的。

JDK中包含了JRE。

问: 安装了JDK还要再安装JRE吗?

答:不用,因为包含了。

问:可以安装多个版本的JDK吗?

答:可以。用的时候指明用哪个。如果不指明,path中认定哪个就是哪个。

问:jdk的路径是应该加在path前边还是后边?

答:都可以,系统能找到就行。但为了防止夜长梦多,还是加在前边更靠谱些。

 小试牛刀

安装好了JDK,会用记事本,会用cmd。咱们可以开发java了。

首先用记事本写一个纯文本文件,名字可叫 MyA.java

其中的内容如下:

1 public class MyA
2 {
3     public static void main(String[] args){
4         System.out.println("hello....java");
5     }
6 }

然后,在cmd窗口,输入命令:

 javac MyA.java

如果一切顺利,会没有任何返回的信息(没有坏消息,就是好消息!)

但此时,你的目录下已经多了一个文件: MyA.class

它就是那个著名的 字节码 文件了。

然后,当然是用虚拟机去运行它了: java MyA 就可以了。

假如没有产生那个class文件,那有可能是java没有安装好或者path环境变量配置的问题。

 源码解读

第1行,定义了一个类,名字是MyA。

从形式上看,java程序就是由若干的类组成的。

在每个文件中,可以定义多个类,但只有一个主类。

这里的MyA就是一个主类,因为它以public修饰。

在类中,可以定义数据和方法。

main是主类中的一个方法。调用它的人会传入一个字符串数组。

该方法没有返回值。

这个方法是静态方法,因为以static修饰。至于什么是静态方法,我们可以在面向对象一节中再去了解。这里,可以先把它想象为类似c语言中的函数就好了。

System是系统定义的类,out是它的一个成员,println是该成员的方法。

println类似于c语言的printf,它的任务是在标准输出设备(默认就是屏幕)上输出信息。

Java程序总是从主类的main方法开始执行,也就是说,main方法会自动执行。

因为我们在控制台执行MyA.class的时候,并没有提供更多的参数,所以那个传入参数,就是args字符串数组是空的。并且我们也没有在程序中使用它。

 怎样编辑纯文本

如果不知道其它的软件,用记事本就可以顺利完成上面的任务。

但记事本太过简陋,有的时候不能满足我们的要求。

你可以使用自己更喜欢的文本编辑器,比如,许多人用的:notepad++,editplus,ultraEdit,sublimeText 等。

但绝不能使用word,因为它是富文本编辑器,要复杂得多,产生的文本是有格式的。

如果设置得当,上面介绍的那些纯文本编辑器都可以对java代码进行着色。这样看起来会更舒服一些。

当然,编译和运行程序还是要去cmd窗口中执行。除非你使用了额外的所谓“插件”,扩展了编辑器的功能。

如果你很不喜欢在cmd窗口中干活,或者你希望有代码提示或称为代码自动补全功能,可以使用更为专业的所谓IDE工具。

IDE是集成开发环境的意思,就是把源码的编辑,编译,运行,调试,打包,部署等诸多功能都集成到一个软件中。

当然这会比较庞大,比较复杂,掌握起来更有难度。

比较常用的IDE是 eclipse,myEclipse,IntelliJ IDEA,NetBeans 等,可以百度安装。

如果你是初学者,建议使用 JCreator,这个IDE十分小巧,轻便,很适合学习与实验的场合。

推荐使用Jcreator的2.0 版本,新的版本功能更多,bug也就更多,但并非我们关心的。

 常见错误

运行javac 的时候出现的错误属于编译错误,一般都是语法问题,容易解决。

比如,这个:

这是由于把String 误写为string 造成的,java像c语言一样是大小写敏感的。

再看这个:

这是由于在句子的结束位置没有分号造成的。

java也像c语言一样,每个句子都要用分号结尾,如果忘了写分号,就会被认为是与下一行同一个句子了。

再看:

这次有分号啊,怎么还错呢?

这是因为用了中文的分号的缘故。

除非是用在字符串中,其它位置的符号都应该是西文符号。

这个呢?类名是Mya,文件名却是MyA,这是不行的。

主类的名字必须与文件名完全一致。

命名的约定

虽然说,起个什么样的名字只是个人爱好问题,但遵守一些约定还是必要的。

java编码约定:

1 类名的首字母要大写。换单词的时候还要再次大写。

比如:MyGoodClass 就是合格的类名。写成mygoodclass 从语法上说也不错,但不符合约定。

2 方法的名字首字母小写。换单词的时候大写。

比如:myFirstFunc,不要写成 my_first_func,或MyFirstFunc

在前边看到的短短的源码中,有许多类名,有些是我们自己定义的,有些是系统定义的。

String, System是系统定义的类名, MyA 是我们自己定义的类。

args是变量名,main,println 是方法名。

 

posted @ 2018-03-27 11:24  可雷曼土  阅读(250)  评论(0编辑  收藏  举报