人们在认识事物的时候,很喜欢贴标签、归类、划阵营。越是阅历多就越会这样。java
这也不彻底是什么坏事,至少能够把事物间做个对比、概括。python
java究竟是一种什么样的语言呢?windows
首先,她是一门高级语言。这是与机器语言、汇编语言相比较而言的。数组
也就是说,她主要仍是为了方便人的理解与阅读,并非优先考虑机器的执行效率。eclipse
其次,咱们总喜欢把高级语言划分为“编译型”与“解释型”。好比,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 是方法名。