Java
大约 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)
- 使用方法:API文档的三个窗格
- 左上方显示了可使用的所有包,选择后对左下方的类进行一个筛选
- 左下方显示了所有类,选择后右侧的文档进行该类的文档显示
- 右侧显示选择类的文档,再点击里面的方法可以看到更详细的信息
- 下面Method Summary的筛选Tab分别为:全部方法、静态方法、实例方法、具体方法、弃用方法
- Oracle官网 Java语言规范
- 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 编程思想》我觉得不好
学习资料
视频
(我主要跟书学,视频主要用来跳着看点理解不了的东西、查漏补缺。但这个视频确实很可以,可以当主要参考,很细)
- 【Bilibili】黑马程序员Java零基础视频教程,这个视频PPT的MG动画非常赞,还有内存图分析,很细
学习书籍
- 《Java 核心编程 卷1 基础知识(原书第10版)》(主要参考)
- 第10版2016年出版。针对Java 8打造,有了大幅的修订和更新,以反映Java 8增补、删改的内容
- 第11版2019年出版
- 《Java 编程思想》
《Java 核心编程 卷1 基础知识(原书第10版)》目录大章
- Java程序设计概述
- Java程序设计环境
- Java的基本程序设计结构
- 对象与类
- 继承
- 接口、lambda表达式与内部类
- 异常、断言和日志
- 泛型程序设计
- 集合
- 图形程序设计
- 事件处理
- Swing用户界面实践
- 部署Java应用程序
- 并发
语言风格、书写风格
语言简介、特点、简史
简史
- 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提供了一种“函数式”编程方式
语言标准、新增特性、版本变迁
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 作者
*/