跳至主要內容

Java

LincZero大约 8 分钟

Java

目录

编程语言

学习资料、查阅文档

进度笔记

  • 《Java 核心编程 卷1 基础知识(原书第10版)》,看的电子版
    • P57 - 7.1start
    • 略读:5.7.5、5.7.6、6.4 内部类、6.5 代理
    • 粗读第一章大纲
      • 7 异常、断言、日志
      • 8 泛型程序设计
      • 9 集合
      • 10 图形程序设计 - Swing(公孙二狗好像叫我别看来着)
      • 11 事件处理 - Awt(公孙二狗好像叫我别看来着)
      • 12 Swing用户界面组件
      • 13 部署Java应用程序
      • 14 并发
    • 粗读第二章大纲
      • 流与文件。文本、二进制、ZIP、对象流和序列化、内存映射
      • XML
      • 网络
      • 数据库编程
      • 国际化
      • 高级Swing
      • 高级AWT
      • JavaBean构件
      • 安全
      • 脚本、编译与注解处理
      • 分布式对象。客户与服务器
      • 本地方法。调用C函数、访问Windows注册表

在线API文档

  • Oracle官网_Java_API文档 (https://docs.oracle.com/javase/8/docs/api)open in new window
    • 使用方法:API文档的三个窗格
    • 左上方显示了可使用的所有包,选择后对左下方的类进行一个筛选
    • 左下方显示了所有类,选择后右侧的文档进行该类的文档显示
    • 右侧显示选择类的文档,再点击里面的方法可以看到更详细的信息
      • 下面Method Summary的筛选Tab分别为:全部方法、静态方法、实例方法、具体方法、弃用方法
  • Oracle官网 Java语言规范open in new window
  • Oracle官网的内容都是全英,有各种Packages
  • API和API帮助文档(离线)
    • JDK_API_1_6_zh_CN.CHM(注意这个是机翻)
    • 常用API:太多不举例了,java.io、java.lang 等
    • 一般使用方法:通过索引搜索关键词,例如 “Random"

学习路线

By 与公孙二狗的聊天记录

Q:学java先学什么框架?spring?我以前倒是折腾过android

A:J2SE -> Spring -> Spring Boot,同时看看数据库、消息中间件、缓存 Redis 之类的。还有一个 MyBatis

Q:java圣经是哪本

A:《Java 核心编程》,不要看里面的 Ui 编程部分 (Swing, Awt)。《Java 编程思想》我觉得不好

学习资料

视频

(我主要跟书学,视频主要用来跳着看点理解不了的东西、查漏补缺。但这个视频确实很可以,可以当主要参考,很细)

学习书籍

  • 《Java 核心编程 卷1 基础知识(原书第10版)》(主要参考)
    • 第10版2016年出版。针对Java 8打造,有了大幅的修订和更新,以反映Java 8增补、删改的内容
    • 第11版2019年出版
  • 《Java 编程思想》

《Java 核心编程 卷1 基础知识(原书第10版)》目录大章

  1. Java程序设计概述
  2. Java程序设计环境
  3. Java的基本程序设计结构
  4. 对象与类
  5. 继承
  6. 接口、lambda表达式与内部类
  7. 异常、断言和日志
  8. 泛型程序设计
  9. 集合
  10. 图形程序设计
  11. 事件处理
  12. Swing用户界面实践
  13. 部署Java应用程序
  14. 并发

语言风格、书写风格

语言简介、特点、简史

简史

  • 1991年:由Patrick Naughton和James Gosling(一个全能的计算机奇才)带领的Sun公司的工程师小组想要设计一种小型的计算机语言。这个项目被命名为“Green”。
  • 1992年:Green项目发布了它的第一个产品,称之为“*7”
  • 1996年年初,Sun发布了Java的第1个版本。
  • 1998年JavaOne会议的头号新闻是即将发布Java 1.2版。
  • 2004:5.0版是自1.1版以来第一个对Java语言做出重大改进的版本(这一版本原来被命名为1.5版,在2004年的JavaOne会议之后,版本数字升至5.0)。经历了多年的研究,这个版本添加了泛型类型(generic type)(类似于C++的模板),其挑战性在于添加这一特性并没有对虚拟机做出任何修改。
  • 2006年12月:从Sun公司发布Java 6。版本6(没有后缀.0)于2006年年末发布。同样,这个版本没有对语言方面再进行改进。但是,改进了其他性能,并增强了类库。
  • 2009年:Sun被Oracle公司收购
  • 2011年7月底:Oracle发布了Java 7正式版,其中只做了一些简单的改进
  • 2014年:Oracle终于发布了Java 8的正式版,在近20年中这个版本有了最大的改变。Java 8提供了一种“函数式”编程方式

img

语言标准、新增特性、版本变迁

Java白皮书

白皮书可以在www.oracle.com/technetwork/java/langenv-140151.html上找到

对于11个关键术语的论述请参看http://horstmann.com/corejava/java-an-overview/7Gosling.pdf

Java的设计者已经编写了颇有影响力的“白皮书”,用来解释设计的初衷以及完成的情况,并且发布了一个简短的摘要。这个摘要用下面11个关键术语进行组织:

简单性易学且小
面向对象(不解释)
分布式Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样
健壮性与C++不同:最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性
安全性虚拟机。Java适用于网络/分布式环境。为了达到这个目标,在安全方面投入了很大精力。使用Java可以构建防病毒、防篡改的系统
体系结构中立虚拟机。编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。
可移植性与C和C++不同:Java规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算都做了明确的说明
解释型Java解释器可以在任何移植了解释器的机器上执行Java字节码
高性能即时编译器。字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定CPU的机器码
多线程(不解释)
动态性(不解释)

Java语言规范

Java语言规范是描述Java语言的官方文档。可以从网站http://docs.oracle.com/javase/specs上阅读或下载

例如:根据Java语言规范,main方法必须声明为public

版本问题

三大使用平台

  • Java SE
    • Java语言的标准版,用于桌面应用的开发,是其他两个版本的基础
    • 但是Java的桌面应用不占优势,速度不够快
    • 学习目的:不是为了开发桌面应用,而是为Java EE打基础
  • Java ME
    • Java语言的小型版,用于嵌入式电子设备或者小型移动设备
    • 以前诺基亚的大班开机时会有Java的图标,就是用Java开发的。当然现在的Java也能开发安卓、鸿蒙等系统的软件
  • Java EE
    • Java语言的企业版,用于Web方向的网站开发
    • 在服务器领域,Java是最强的

Java的六大应用、与开发产品

  • 桌面应用开发。例如:各种管理软件、IDEA、Cline、PyCharm
  • 企业级应用开发(服务器)。例如:微服务、Springcloud
  • 移动应用开发。例如:鸿蒙、Android、医疗设备
  • 科学计算。例如:Matlab
  • 大数据开发。例如:Hadoop
  • 游戏开发。例如:Minecraft

HelloWorld、基础知识

基础知识

HelloWorld

FirstSample.java

public class FirstSample
{
    public static void main(String[] args) 						// 可以打psvm+tab来自动生成。公共类的main方法
    {
        System.out.println("We will not use 'Hello, World!'");	// 可以打soun+tab来自动生成
    }
}

详解版

// 文件名:源代码的文件名必须与公共类的名字相同,并用.java作为扩展名。因此,存储这段源代码的文件名必须为FirstSample.java
public class FirstSample
// public关键字: 访问修饰符(access modifier):这些修饰符用于控制程序的其他部分对这段代码的访问级别
// class关键字:表明Java程序中的全部内容都包含在类中,类是构建所有Java应用程序和applet的构建块。Java应用程序中的全部内容都必须放置在类中。
// 类名:必须字母开头,后面跟字母和数字的任意组合,一般Java类名使用大驼峰法
{	// 块
    public static void main(String[] args)
    // public: 根据Java语言规范,main方法必须声明为public
    // static void: (暂时不理会)
    // main: 入口函数,java工具执行编译后的java代码时会从main函数开始
    {
        System.out.println("We will not use 'Hello, World!'");
        // 使用了System.out对象并调用了它的println方法
        // System.out.print则不换行
    }
}

注释

和C的注释方法一样:

  • // 单行注释

  • /**/ 多行注释

  • 文档注释:可以用来自动地生成文档

/**
 * This program displays a greeting for the reader.
 * @version 1.30 2014-02-27										版本
 * @author Cay Horstmann										作者
 */