• 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 是方法名。

  • 相关阅读:
    base加密解密工具类
    根据银行卡号判断所属银行(部分资源网上抄录)
    input autocomplete属性设计输入框自动联想(php实现)
    XFire+Spring构建Web Service经验总结
    php学习手记(持续更新)
    ios上遇到的坑(持续更新)
    随笔
    HTML5微信长按图片不会弹出菜单的解决方法
    能在编辑器里面写出的字符
    css文本两端对齐,分散对齐
  • 原文地址:https://www.cnblogs.com/gyhang/p/8656483.html
Copyright © 2020-2023  润新知