Java学习笔记系列01 - 基础入门

1.Java语言简述

        1991年Sun公司(Stanford University Network,斯坦福大学网络公司)的James Gosling等人开始开发名称为Oak的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;1995年将Oak语言更名为Java,2009年甲骨文公司宣布收购Sun。


        随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言,是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。

        开源:免费+源代码公开+修改


2.Java5.0之后的三大技术框架

        J2EE(Java 2 Platform Enterprise Edition)企业版
        该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发。
        J2SE(Java 2 Platform Standard Edition)标准版
        完成桌面应用程序的开发,是其它两者的基础.
        J2ME(Java 2 Platform Micro Edition)小型版
        开发电子消费产品和嵌入式设备,如手机中的程序。

3.什么是跨平台性?原理是什么?JVM

        Java语言的跨平台性,是通过虚拟机JVM(JavaVirtual Machine Java)来实现的,所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。
        总结:Java 程序之所以能够实现跨平台运行,是因为它根本就不直接运行在任何底层平台上,Java 程序是通过java 虚拟机在系统平台上运行的,只要该系统可以安装对应平台的java虚拟机,该系统就可以运行java程序。
        注意:Java 虚拟机是不跨平台的,关键是该平台是否能安装相应的虚拟机。

Java学习笔记系列01 - 基础入门


4.Jre 和Jdk 的区别

        JRE:(Java Runtime Environment)Java程序的运行环境。包含java运行的所需的核心类库+JVM(java虚拟机),如果想要运行一个开发好的Java程序,计算机中只需要安
装JRE 即可。
        JDK:(Java Development Kit Java)Java开发工具包。JDK是提供给Java开发人员使用的,其中包含java的开发工具和JRE。所以安装了JDK,就不用在单独安装JRE了。
        其中的开发工具:编译工具(javac.exe),运行工具(java.exe),打包工具(jar.exe)等
        简单而言:使用JDK开发完成的java程序,交给JRE去运行。


5.Java 程序运行机制

Java学习笔记系列01 - 基础入门

        编译: javac 文件名.文件后缀名
        运行: java 类名


        java是分两部分的:一个是编译,一个是运行。
        javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
        java:负责运行的部分。会启动jvm.加载运行时所需的类库,并对class文件进行执行。一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数。


6.配置环境变量

        让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。


        环境变量path配置:
        1.永久配置方式:JAVA_HOME=%安装路径%\Java\jdk
                                        path=%JAVA_HOME%\bin
        2.临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
        特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。


        classpath的配置:
        让指定的class文件在任意目录都可以被访问。
        注意:在定义classpath环境变量时,需要注意的情况。如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;如果指定了classpath,那么会在指定的目录下查找要运行的类文件。


        还会在当前目录找吗?两种情况:
        1.classpath的值结尾处有分号,在classpath配置路径中没有找到运行的类,会在当前目录再找一次。
        2.如果classpath的值结果出没有分号,在classpath配置路径中没有找到运行的类,不会再当前目录找;即使当前目录下有,也不会运行。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
        技巧:在最左边配置一个.
        这样做的好处就是能够先在当前目录下查找并执行。


7.代码注释:单行//,多行/* */,文档注释/** */

        1.单行注释//
        //后到本行结束的所有字符会被编译器忽略;
        2.多行注释/* */
        /* */之间的所有字符会被编译器忽略
        3.文档注释/** */
        在/** */之间的所有字符会被编译器忽略,java特有的(用于生成文档);

        总结:多行和文档注释都不能嵌套使用。


8.Java 中的标识符

        可简单理解为在Java程序中为了增强阅读性自定义起的名字。比如:类名,方法名,变量名等。


        命名规则:1.由英文大小写字母(a-z_A-Z)、数字(0-9)、下划线(_)、$组成
                            注意:此处的字母还可以是中文,日文等
                            2.严格区分大小写
                            3.不能以数字开头,不能使用java中的关键字和保留字
        包名:多单词组成时所有字母都小写。例:xxxyyyzzz
        类名接口名:多单词组成时,所有单词的首字母大写。例:XxxYyyZzz
        变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。例:xxxYyyZzz
        常量名:所有字母都大写,多单词组成时每个单词用下划线连接。例:XXX_YYY_ZZZ


9.Java 中的常量和变量

        常量:在程序的运行过程中,其值是不可以发生改变的量;常量可以直接被输出。
                    分为两大类:字面常量,自定义常量。
        变量的概念:程序的运行过程中,在指定范围内发生改变的量。在内存中占据着某一个存储区域空间,用于存储常量数据;只要是数据不确定的时候,就定义变量。
        作用:方便于运算,因为有些数据不确定,所以确定该数据的名词和存储空间。
        特点:变量空间可以重复使用。
        格式:数据类型 变量名 = 初始化值;
        作用域:作用域从变量定义的位置开始,到该变量所在的那对大括号结束。
        生命周期:变量从定义的位置开始就在内存中活了,变量到达它所在的作用域的时候就在内存中消失了。

10. 方法(函数)

        方法(函数):方法是一组为了实现特定功能的代码块的集合。
        方法特点:1.它可以实现独立的功能
                              2.必须定义在类里面
                              3.它只有被调用才会执行
                              4.它可以被重复使用
                              5.方法结束后方法里的对象失去引用

        方法的作用:1.用于定义功能,结构化代码
                                  2.用于封装代码提高代码的复用性,减少代码重复
        方法的定义格式:
        修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){
                执行语句;
                return 返回值;
        }
        当函数没有具体的返回值时,返回的返回值类型用void关键字表示。
        如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。
        return的作用:结束函数,结束功能。


        方法其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:
        1.明确该功能运算后的结果.明确返回值类型。
        2.明确在实现该功能过程中是否有未知内容参与运算,确定参数列表。

        注意:函数中只能调用函数,不能定义函数。


        重载的定义:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了;重载只看参数列表,和返回值类型没关系。


        方法在书写时要注意两点:
        1.逻辑严谨:方法实现的一个完整的功能,所以在书写时要考虑到各种可能的情况,并对每种情况做出恰当的处理。
        2.通用性强(可重复利用):方法实现的是一种功能,在实际实现时,可以根据需要,使方法具备一定的通用性,除非必要,否则不要写专用的方法。在Java语言中,恰当的使用方法,将使程序更加优雅,便于阅读和使用。

11.数组初始化的两种方式

        静态初始化:初始化时由我们自己指定每个数组元素的初始值,由系统决定需要的数组长度。
        格式:元素类型[] 变量名 = new 元素类型[]{元素1,元素2...};
        简化语法:元素类型[] 变量名 = {元素1,元素2...};


        动态初始化:初始化时由我们指定数组的长度,由系统为数组元素分配初始值。
        格式:元素类型[] 变量名 = new 元素类型[元素的个数];


        总结:不能静态和动态初始化同时使用,也就是说不能同时指定数组的长度和元素。