Java概述

168 阅读10分钟

Java概述

大家好呀,我是小笙!

Java诞生

Java(英式发音[ˈʤɑːvə],美式发音[ˈʤɑvə])是一种广泛使用的计算机编程语言.

  1. 嵌入式系统的发展,c/c++在不同平台上的开发需要不同的编译器,然而创建编译器"费时费力"
  2. 开发者研究开发一种可移植,跨平台的计算机语言
  3. 1991 Oak的出现 ~~> 1995 更名为Java

开发Java语言的初衷

Java之所以被开发,是要达到以下五个目的:

初衷 <==> 语言特点

  • 应当使用面向对象程序设计方法学 <==> 面向对象
  • 应当允许同一程序在不同的计算机平台执行 <==> 平台无关性
  • 应当包括内建的对计算机网络的支持 <==> 分布式
  • 应当被设计成安全地执行远端代码 <==> 安全性
  • 应当易于使用,并借鉴以前那些面向对象语言(如C++)的长处。 <==> 简单性,健壮性,高性能

java语言特点

概述图

Java语言特点

1. 面向对象

Java 是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的支持。使用 Java 语言开发程序,需要采用面向对象的思想设计程序和编写代码。

2. 平台无关性

平台无关性的具体表现在Java 是“一次编写,到处运行“的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。

image-20211211145530665

3. 简单性

Java 语言的语法与 C 语言和 C++ 语言很相近,使得很多程序员学起来很容易。对 Java 来说,它舍弃了很多 C++ 中难以理解的特性,如操作符的重载和多继承等,而且 Java 语言不使用指针,加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。

4. 编译与解释并存

Java 程序在 Java 平台运行时会被编译成字节码文件,然后可以在有 Java 环境的操作系统上运行。在运行文件时,Java 的解释器对这些字节码进行解释执行,执行过程中需要加入的类在连接阶段被载入到运行环境中。

Java即是编译型的,也是解释型语言,总的来说Java更接近解释型语言(补充:解释型语言:javascript,PHP,Java 编译型语言:c/c++)

解释型语言和编译型语言的区别:

解释性语言,编译后的代码,不能直接被机器执行,需要解释器来执行 ; 编译性语言,编译后的代码,可以直接被机器执行,c/c++

5. 多线程

Java 语言是多线程的,这也是 Java 语言的一大特性,Java 支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的 run() 方法,要执行的方法就写在 run() 方法体内。

6. 分布式

Java 语言支持 Internet 应用的开发,在 Java 的基本应用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包括 URL、URLConnection、Socket 等。Java 的 RIM 机制也是开发分布式应用的重要手段。

7. 健壮性

Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。

8. 高性能

Java 的高性能主要是相对其他高级脚本语言来说的,随着 JIT(Just in Time)的发展,Java 的运行速度也越来越高。

9. 安全性

Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防止恶意代码的攻击。除了 Java 语言具有许多的安全特性以外,Java 还对通过网络下载的类增加一个安全防范机制,分配不同的名字空间以防替代本地的同名类,并包含安全管理机制。

Java虚拟机(JVM)

JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据 内存 寄存器。

image.png

JDK JRE JVM 关系(重点)

image-20211212195742515

编译与解释

image-20211215170531770

在dos窗口运行 如 helloJava.java 的文件

// 编译 java
javac helloJava.java
// 解释 helloJava.class
java helloJava // 这里只需要类名,切记非 java helloJava.class

源文件中代码注意事项

  • 一个源文件中最多只能有一个被public修饰的类(可以没有),而非public修饰的类可以有无数个

  • 如果一个源文件中有被public修饰的类,则该类的名字必须和文件名相同

  • 主方法(程序入口 main)可以放在非public修饰的类

  • 一个源文件中含有多个类,通过编译会生成对应个数的字节码文件(字节码文件的名字 <==> 类名)

    image-20211215173945096

  • 如果一个源文件中的类与类之间没有存在联系,可以在每一个类中使用主方法,由于最后生成不同的字节码文件,我们只需要通过java.exe工具将各个字节码加载到JVM虚拟机中进行解释执行

    class java{
        public static void main(String[] args){
            System.out.println("helloworld~");
        }
    }
    class person{
        public static void main(String[] args){
            System.out.println("person~");
        }
    }
    class animal{
        public static void main(String[] args){
            System.out.println("animal~");
        }
    }
    ​
    // 运行结果
    C:\Users\Ushop\Desktop\mess\textJava>java java
    helloworld~
    C:\Users\Ushop\Desktop\mess\textJava>java person
    person~
    C:\Users\Ushop\Desktop\mess\textJava>java animal
    animal~
    

转义字符

概述:\ 开头 表示接下这个字符是转义字符 比如:\n 中的n不在是字母n的含义

public static void main(String[] args){
    /* 
        转义字符  俗称:改变意思的字符
        \t : 一个制表符,起到对齐的功能 类似于tab的作用
        \ : 一个\   文件路径通常表示是 C:\Users\Ushop\Desktop\mess\textJava
        \n : 换行符
        " : 一个"
        ' : 一个'
        \r : 一个回车,将光标移动到该行最前面,可能会引起覆盖的反作用 通常使用手法是: \r\n  == \n
                 例如"罗念笙like dog\r张洛融 ==> 显示内容:"张洛融"
    */
    System.out.println("罗念笙\tlove\t张洛融");   // 运行结果: 罗念笙    love    张洛融
    System.out.println("\");                    // 运行结果: \
    System.out.println("罗念笙\nlove\n张洛融");   // 运行结果:罗念笙 换行  love  换行 张洛融
    System.out.println(""");                    // 运行结果: "
    System.out.println("'");                     // 运行结果:'   
    System.out.println("罗念笙 like dog\r张洛融");  // 运行结果:张洛融
}

三种注释

单行注释 && 多行注释

注释的内容 不会被虚拟机JVM解释执行

// 单行注释
/* 
   多
   行
   注
   释
 */

文档注释

注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档

image-20211216211455670

代码实现说明

/**
  * 文档注释
  * @author 罗念笙   -- 文档注释中的注解
  * @version 1.0    
  */
public class hello{
    public static void main(String[] args){
        System.out.println("helloworld~");
    }
}
/*
    笙式讲解:(下面的两行命令的区别如下图)
            javadoc  doc文件                生成的网页文件存放自己的文件目录             文档注释的java文件
        1.  javadoc   -d       C:\Users\Ushop\Desktop\mess\textJava\javadoc      hello.java
            javadoc  doc文件                生成的网页文件存放自己的文件目录          java文件中的文档注释中所用注解(带@)  文档注释的java文件
        2.  javadoc    -d      C:\Users\Ushop\Desktop\mess\textJava\javadoc2   -author -version                  hello.java
        
        我使用的编码类型是GB2312  在dos命令中无出现乱码的问题
        如果你使用IDEA编译器,默认是utf-8,添加  -encoding utf-8  (放在注解的位置前后)  java代码采用的是utf-8字符编码编写的
        添加 -charset utf-8       java doc html文件为utf-8字符编码
        
        为什么要说明是utf-8,java的编码不都是以utf-8为主的嘛?
        因为我是用的是dos命令窗口,要想显示中文得遵守GBK编码
*/

image-20220328103509320

javadoc 标签(文档注解)

javadoc 工具软件识别以下标签:

标签描述示例
@author标识一个类的作者@author description
@deprecated指名一个过期的类或成员@deprecated description
{@docRoot}指明当前文档根目录的路径Directory Path
@exception标志一个类抛出的异常@exception exception-name explanation
{@inheritDoc}从直接父类继承的注释Inherits a comment from the immediate surperclass.
{@link}插入一个到另一个主题的链接{@link name text}
{@linkplain}插入一个到另一个主题的链接,但是该链接显示纯文本字体Inserts an in-line link to another topic.
@param说明一个方法的参数@param parameter-name explanation
@return说明返回值类型@return explanation
@see指定一个到另一个主题的链接@see anchor
@serial说明一个序列化属性@serial description
@serialData说明通过writeObject( ) 和 writeExternal( )方法写的数据@serialData description
@serialField说明一个ObjectStreamField组件@serialField name type description
@since标记当引入一个特定的变化时@since release
@throws和 @exception标签一样.The @throws tag has the same meaning as the @exception tag.
{@value}显示常量的值,该常量必须是static属性。Displays the value of a constant, which must be a static field.
@version指定类的版本@version info

Java开发规范

  1. 编码格式

    统一都是用utf-8编码格式

  2. 名字命名方式(重要!!!)

    • 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词
    • 类名:首字母大写,采用驼峰式风格 例外:DO / BO / DTO / VO / AO / PO / UID 等
    • 方法名、参数名、成员变量、局部变量都统一首字母小写,同样采用驼峰式风格
    • 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚
    • 抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾
    • 枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开
  3. 次行风格和行尾风格

    public void method(){
        // 行尾风格 推荐
    }
    ​
    public void method2()
    {
        // 次行风格
    }
    

DOS命令操作

  • 讲解相对路径 VS 绝对路径(重要!!!)

  • DOS命令(大小写一样效果)

    1. 更改当前目录

      切换成其他盘(改变根目录)
      cd (chang directory) 盘符号
      例子:切换到E盘 cd: /D e:  或者 e:
      ​
      切换成当前盘的其他目录
      例子:cd 绝对路径 或者 相对路径
      ​
      切换到当前的根目录
      例子:cd\
      ​
      切换到上一级目录
      例子:cd ..
      
    2. 对文件夹的操作

      创建文件夹(目录)
      例子: md 文件名 (make directory)
      ​
      删除文件夹(目录)
      例子:rd 文件名 (remove directory)
      ​
      复制文件到指定文件夹(目录)
      例子: copy 复制的文件名 文件夹所在绝对路径 或者 相对路径
      ​
      移动文件到指定文件夹(目录)
      例子: move 移动的文件名 文件夹所在绝对路径 或者 相对路径
      
    3. 查看当前文件(目录)

      查看当前目录的文件
      dir (directory)
      例子:
      dir (查看当前目录)  
      dir 绝对路径 或者 相对路径 (查看指定目录下的文件)
      ​
      以一种树状图的形式展示文件结构
      用tree 代替 dir
      例子:
      tree (查看当前目录的树状图结构)
      tree 绝对路径 或者 相对路径 (查看指定目录的树状图结构)
      
    4. 其他命令

      帮助查看相关命令的使用
      例子:help cd 
      ​
      清屏
      例子:cls (clean screen)
      ​
      退出
      例子:exit