JAVA学习-java基础讲义01

一 java语言

1.1 java语言介绍

1.1.1 什么是java

Java是一门面向对象编程语言,1995年诞生于Sun公司(Stanford University Network),在2009年被Oracle公司收购。
Java语言不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此 Java语言具有功能强大和简单易用两个特征。Java语言还拥有全球最大的软件开发团队和极其成熟的软件生态圈。

1.1.2 java之父

詹姆斯·高斯林(James Gosling)1955年5月19日出生于加拿大,1977年获得了加拿大卡尔加里大
学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,
设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun公司,1990年,与Patrick,Naughton和
Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。
2009年四月,Sun被Oracle公司并购。高斯林于2010年四月时宣布从Oracle司离职。
2011年3月29日,高斯林在个人博客上宣布将加入Google。
2011年8月30日,仅仅加入Google数月之后的高斯林就在个人博客上宣布离开Google,加盟一家从
事海洋机器人研究的创业公司Liquid Robotics,担任首席软件架构师。
在2011年5月建立的Scala公司Typesafe Inc.,高斯林被聘请为公司顾问。

1.1.3 java语言发展史

Java一开始的名称不叫Java而叫Oak,在申请注册商标时,发现Oak已经被人使用了,再想了一系列
名字之后,最终使用了提议者在喝一杯Java咖啡时无意提到的Java词语。

Java语言诞生于20世纪90年代,在1991年成立了一个称为Green的项目小组,这个小组由詹姆斯·
高斯林(James Gosling)领导在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,
专攻计算机在家电产品上的嵌入式应用。大幅度提升消费类电子产品(如电视机顶盒、面包烤箱、移动
电话等)的智能化程度。

SUN公司介绍
成立到上市
Sun Microsystems是IT及互联网技术服务公司Sun Microsystems 创建于1982年。Sum和这个名字其
实是斯坦福大学校园网(Stanford University Network)的首字母缩写。主要产品是工作站及服务器。
1986年在美国成功上市。1992年sun推出了市场上第一台多处理器台式机SPARCstation 10 system,并
于1993年进入财富500强。

一年时间跌入低谷
2001年的sun公司,不仅人数规模、市场股值、办公面积远不能和八十年代相比(能人都走了,办公
楼也卖了,股票一落千丈),而且彻底退出了 IT 领域霸主之争。太阳公司从 1982 年成立到 2000 年达
到顶峰用了近二十年时间,而走下坡路只用了一年,足以令经营者为戒。

甲骨文(Oracle)收购
2009年4月20日甲骨文以现金收购Sun微系统公司,交易价格达74亿美元。该协议达成后,IBM公司
放弃了收购网络设备制造商。IBM公司此前表示愿意以每股9.40美元购买Sun公司的股票,但收购谈判破
裂后,IBM公司于2009年5月初取消独家谈判权,IBM并撤回其报价。

1.2 java语言的特点

简单性
语法简单快速上手、避免了复杂的指针、多继承等,java程序员无需手动内存管理且提供丰富的类
库等。

面向对象
支持面向对象的特点如:封装、继承、多态能让编写java程序拥有更多的复用性和灵活性,避免面向
过程思维所带来的编程复杂性。

分布式
Java包括支持HTTP和FTP等基于TCP/IP协议,针对网络协议进行封装让java应用访问网络对象时像
访问本地对象一样方便。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

健壮性
Java语言检查程序错误分为编译时错误和运行时错误,错误尽可能在编译期间检查发现,避免了运
行时发生。避免多继承、指针、手动内存管理等都是进一步避免不必要的问题发生。

安全性
Java 编译器和虚拟机强制实施的内置的语言安全特性:强大的数据类型管理、编译时检查、自动内
存管理、字节码验证、安全的类加载等。

可移植性
Java与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做
了明确的说明。例如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数,32位整数,
也可能是编译器提供商指定的其他大小。在Java中对数据类型固定大小,具备良好的可移植性。

跨平台
Java程序(write once, run anywhere)号称一次编写到处运行,Java程序编译完成后可以在
Windows、Linux、MAC等系统运行。

高性能
Java程序字节码可以在运行时动态、快速、高效地翻译成对应运行这个应用特定CPU的机器语言。

多线程
Java语言支持多线程让程序可以分为多个小任务并发或并行执行,让程序可以有更好的交互性能和
实时控制性能。另一方面可以提高对CPU的利用率。

结构中立
Java的字节码实现了结构中立,与计算机结构无关。编译器生成一个体系结构中立的目标文件格式
(字节码),精心设计的字节码不仅可以很容易地在任何机器上解释执行,而且还可以迅速地翻译成本
地机器的代码。

动态性
Java的动态特性是其面向对象设计方法的拓展,它允许程序动态的装入运行过程中的所需要的类。
也可以通过网络来载入所需要的类有利于程序的扩展和升级。

二 java环境搭建相关

2.1 Java环境介绍

2.1.1 虚拟机介绍

虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。简单的
理解就是虚拟出来的一台机器,你用的笔记本电脑就是一台真实的物理机,虚拟机都是建立在物理机的
操作系统之上,虚拟机就是一个软件。

2.1.2 JVM介绍

Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运
行环境。初学者可以简单的理解为JVM就是用来执行JAVA程序的,如果没有JVM开发好的java程序无法运行。
JVM是一种规范,可以采用硬件或软件方式来实现。如果是硬件方式实现,那么这台硬件计算机只
能执行java程序。如果采用软件方式实现,那么软件是安装在操作系统基础之上的,这台机器除了可以
执行java程序以外,还能够安装执行其他的软件程序。

2.2 Java跨平台

2.2.1 跨平台

Java程序(write once, run anywhere)号称一次编写到处运行,Java程序编写完成后可以在
Windows、Linux、MAC等系统运行。
平台:
跨平台的平台指的是操作系统。

2.2.2 跨平台原理

Java语言跨平台核心依赖的是JVM,在各个不同类型的操作系统安装对应操作系统版本的JVM即
可,JVM屏蔽了不同类型操作系统的差异性。
在这里插入图片描述

2.3 java运行过程

在这里插入图片描述

2.4 JDK、JRE、JVM关系图

在这里插入图片描述

2.4.1 JRE介绍

JRE(Java Runtime Environment)Java运行环境,包含JVM标准实现及Java核心类库,是java程序最
小运行环境。

JRE可以单独下载安装,如果想要运行一个编译好的Java程序,计算机中只需要安装JRE即可。

2.4.2 JDK介绍

JDK(Java Development Kit) Java语言开发工具包,包含了JRE和Java开发工具,工具包也是java语言
开发的java程序。如果安装了JDK就不用再安装JRE。

JDK包含JRE的目的:
1.使用工具开发好程序以后方便运行测试程序。
2.JDK目录下的bin目录下有很多的exe执行文件,这些exe文件都是JDK提供的一些工具,这些工具是
采用java语言编写的java程序,为了方便使用打包为exe文件,如果没有JRE,jdk所提供的工具也无法使
用。

2.5 JDK下载安装

2.5.1 JDK下载

官网地址: jdk下载
不做详细说明,可以参考其他下载安装的流程
超详细JDK下载与安装步骤
idea下载安装

三 java基础语法

3.1 关键字介绍

什么是关键字?
就是被java语言赋予特殊含义的单词。
关键字的特点
组成关键的字母都是小写。
常见关键字
class,public,static,void … 。
关键字注意事项
goto和const是java语言的保留字。
类似于editplus这样的高级文本编辑器对关键字都是有颜色变化的。
关键字列表
在这里插入图片描述

3.2 java注释

注释介绍
用于解释说明程序的文字,有利于程序调试、后期维护和扩展等。
初学者在开发时先写程序时,先写思路再写代码。代码里面既包含程序思路、程序解释、程序代码
等,程序思路和程序说明不属于程序执行的一部分,必须进行注释。
注释分类
单行注释
格式: // 注释的文字
多行注释
格式: /* 注释的文字 /
文档注释
格式: /
* 注释的文字 */

//这是我开发的第一个java程序
class HelloWorld{
/*
main是一个主方法,是程序的入口
*/
public static void main(String[] args){
System.out.println("HelloWorld!");
    }
}

3.3 java标识符

什么是标识符

就是给类,接口,方法,变量,常量等起名字时使用的字符序列
字符序列:
多个字母组成

标识符的组成规则

英文的大小写字母(a-z,A-Z)
数字字符(0-9)
$和_

标识符注意事项

不能以数字开头
不能是java中的关键字
区分大小写

命名规则

项目名命名
全部小写
包名命名
全部小写

类名命名

//一个单词组成,单词首字母大写
//多个单词组成,每个单词首字母大写
//例如:
public class MyFirstClass{}

变量名、方法名命名

//一个单词组成,单词首字母小写
//多个单词组成,第一个单词首字母小写,后面的每个单词的首字母都要大写
//例如:
int index = 0 ;
public void toString(){}

常量名命名

/*一个单词组成,单词所有字母大写
多个单词组成,单词所有字母大写,多个单词用下划线分开。
例如:*/
public static final String GAME_COLOR = "RED";

四 常量

4.1 什么是常量

在程序运行过程中其值不会发生改变的数据就是常量。
程序运行过程:
运行时间
运行次数

4.2 常量分类

在这里插入图片描述

4.3 案例

public class ConstantDemo {
public static void main(String[] args){
	//输出整数常量
	System.out.println(12345);
	//输出小数常量
	System.out.println(3.14);
	//输出字符常量
	System.out.println('A');
	//输出布尔常量
	System.out.println(true);
	//输出字符串常量
	System.out.println("HelloWorld!");
   }
}
目 录 第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用程序的运行机制 15 JVM(JAVA VIRTUAL MACHINE) 16 Java运行时环境JRE(Java Runtime Environment) 17 JAVA语言应用范围 18 第一个JAVA程序 18 JAVA开发环境搭建 18 一个典型的JAVA程序的编写和运行过程 19 第一个程序常见错误 20 第一个JAVA程序的总结和提升 20 常用Java开发工具 20 常用dos命令 21 本章笔试作业 21 本章上机操作 21 第二章(1) 编程的基本概念 22 注释 22 标识符 22 关键字/保留字 23 变量(variable) 24 常量(Constant) 25 命名规则(规范) 25 基本数据类型(primitive data type) 26 整型变量 26 浮点型 27 字符型(2个字节): 28 boolean类型 29 运算符(operator) 29 二元运算符 29 一元运算符 30 布尔逻辑表达符 30 位运算符 30 扩展运算符 31 字符串连接符 31 三目条件运算符 31 运算符优先级的问题 31 自动类型转换 32 基本类型转化时常见错误和问题 33 方法 33 简单的键盘输入和输出 33 本章思考作业 34 上机操作 34 第二章(2) 控制语句 35 顺序结构 35 选择结构 35 if单选择结构 35 if-else双选择结构 35 If-elseif-else多选择结构 36 switch多选择结构 37 循环结构 39 While和dowhile的区别 41 For循环 42 break语句和continue语句 47 语句块 48 递归结构 49 本章作业 50 本章上机操作 51 第三章 JAVA面向对象程序开发 52 编程语言发展史 52 类和对象是如何产生发展的?如何进化的? 52 面向对象思想初步(OOP初步Object Oriented Programming) 53 面向对象编程的语言的三大特征简介 56 对象和类的概念 56 类和对象初步 57 测试类的定义方式 57 简单的学生类编写示例 58 内存分析 59 属性(field,或者叫成员变量) 59 引用类型 60 类的方法 60 对象的创建和使用 60 构造器(或者叫做构造方法,constructor) 60 垃圾回收机制(Garbage Collection) 63 方法的重载(overload),构造方法的重载 63 this关键字 65 static 关键字 66 静态初始化块(经常用来初始化类,加载类信息时执行!) 67 package 68 JDK中的主要包 68 import 68 eclipse的使用 69 继承(extend, inheritance) 70 为什么需要继承?继承的作用? 70 继承介绍 70 如何实现继承? 70 继承使用要点 71 Object类 72 toString方法 72 equals方法 73 super关键字 74 方法的重写(override) 74 隐藏/封装(encapsulation) 75 为什么需要封装?封装的作用和含义? 75 使用访问控制符,实现封装 76 封装的使用细节 76 多态(polymorphism) 76 为什么需要多态? 76 如何实现多态? 77 方法绑定(method binding) 77 静态绑定 77 动态绑定 77 多态的使用要点 78 对象的转型(casting) 79 final 81 抽象类 82 抽象类的使用要点 83 接口 83 为什么需要接口? 84 如何定义接口? 84 接口的本质探讨 84 接口使用要点 85 接口的多继承 86 面向接口编程 87 OOP更多应用 87 组合 87 内部类(innerclasses) 88 字符串(java.lang.String类)的使用 90 字符串相等的判断 92 思考作业 93 上机作业 94 第四章 异常机制 95 导引问题 95 异常(Exception)的概念 96 异常分类 96 Error 97 Error和Exception的区别 97 Exception 97 异常的处理办法之一,捕获异常 99 try块 99 catch 99 finally 100 try, catch,finally ,return 执行顺序 100 异常的处理办法之二,声明异常: throws子句 101 方法重写中声明异常原则 102 异常的处理办法之三,手动抛出异常,throw子句 103 自定义异常 103 使用异常机制建议 104 总结 105 思考作业 105 上机作业 105 第五章 数组 106 数组概述和特点 106 创建数组和初始化 106 数组常见操作 108 数组的拷贝 108 数组排序 109 多维数组 110 附录(面试前复习一下!!) 111 冒泡排序 111 二分法查找 112 命令行参数的问题 113 增强for循环 114 思考作业 114 上机作业 115 第六章 常用类的使用 117 基本数据类型的包装类 117 包装类基本知识 117 包装类的用途 118 自动装箱和拆箱?autoboxing,unboxing 119 字符串相关类(String、 StringBuffer 、 StringBuilder) 120 String类的常用方法(已讲过,不再讲!) 120 StringBuffer和StringBuilder 121 String和StringBuffer和StringBuilder使用要点 123 时间处理相关类 124 Date时间类(java.util.Date) 124 DateFormat类和SimpleDateFormat类 125 Calendar日历类 126 可视化日历的编写 128 Math类 131 File类 132 File类的基本用法 132 树状结构展现文件结构 133 枚举 133 上机作业 135 第七章 容器(Collection) 136 容器的作用和概览 136 容器中的接口层次结构 136 Collection接口 137 LIST接口 137 SET接口 138 Map接口 138 Iterator接口 139 遍历集合 140 Collections工具类 141 Comparable接口 141 equals和hashcode方法 143  泛型 144 思考作业 145 上机作业 145 第八章 IO技术 146 为什么需要学习IO技术 146 基本概念 146 数据源 146 流的概念 146 第一个简单的IO流程序及深入(将文件中的数据读入) 146 Java中流的概念细分 148 Java中IO流类的体系 149 四个IO基本抽象类 150 InputStream 150 OutputStream 150 常用InputStream和OutputStream子类用法 150 FileInputStream和FileOutputStream 150 ByteArrayInutStream和ByteArrayOutputStream 154 BufferedInputStream和BufferedOutputStream 156 DataInputStream和DataOutputStream 157 ObjectInputStream和ObjectOutputStream 158 PrintStream 158 Reader 158 Writer 159 FileReader和FileWriter 159 BufferReader和BufferWriter 159 InputStreamReader和OutputStreamWriter 161 JAVA对象的序列化和反序列化 161 为什么需要序列化和反序列化 161 对象的序列化主要有两种用途 161 序列化涉及的类和接口 162 序列化/反序列化的步骤和实例 162 综合的序列化和反序列化练习 163 JAVA.IO包相关流对象用法总结(尚学堂1002班王鑫) 165 IO中其他常用类 165 File类 165 RandomAccessFile 166 思考作业 166 上机作业 166 提高课外作业 166 第九章 多线程技术 167 基本概念 167 程序 167 进程 167 线程 167 线程和进程的区别 167 进程与程序的区别 168 JAVA中如何实现多线程(重点!!) 168 通过继承Thread类实现多线程 168 通过Runnable接口实现多线程 169 线程状态和sleep/yield/join/stop/destroy方法 170 新生状态 170 就绪状态 170 运行状态 170 死亡状态 170 终止线程的典型方法(重要!!!) 171 阻塞状态(sleep/yield/join方法) 171 线程基本信息和优先级别 173 线程同步和死锁问题 175 死锁及解决方案 179 生产者/消费者模式 181 线程回顾总结 184 任务调度(补充内容,了解即可!) 184 思考作业 185 上机作业 185 第十章 网络编程 186 基本概念 186 什么是计算机网络 186 计算机网络的主要功能 186 什么是网络通信协议 186 网络通信接口 186 为什么要分层 186 通信协议的分层规定 186 数据封装 188 数据拆封 188 IP 188 端口 188 URL 189 TCP协议和UDP协议 189 区别 189 TCP协议 189 UDP协议 190 JAVA网络编程 190 InetAddress 190 InetSocketAddress 191 URL类 191 基于TCP协议的SOCKET编程和通信 193 UDP通讯的实现 201 思考作业 203 上机作业(分组完成,3人一组,周末完成) 204 第十一章 JAVA多媒体编程 205 字体 205 字体示例和效果 205 颜色 206 颜色编程示例 206 图形绘制 206 绘制各种图形示例 207 图像处理 208 加载图片示例 208 图片任意缩放并输出新图片 209 使用JMF处理音频和视频 211 JMF的下载 211 JMF的安装和配置 211 使用JMF播放音频文件 212 上机作业 213 第十二章 GUI编程之AWT 214 为什么需要GUI?GUI是什么? 214 AWT是什么? 214 AWT的优势 214 AWT的缺点 214 为什么还需要学习AWT? 215 AWT各组件的整体关系 215 组件 215 容器 216 布局管理器 218 为什么需要布局管理器? 218 FlowLayout布局管理器 218 BorderLayout布局管理器 219 CardLayout布局管理器 220 GridLayout布局管理器 220 GridBagLayout布局管理器 221 综合应用组件和容器和布局管理器 221 AWT事件处理模型 223 问题 223 事件处理模型是什么? 223 最简单的事件处理程序 224 AWT中事件处理代码编写 225 编写过程 225 处理过程 225 简化理解上面过程 225 事件和事件源对象 225 事件适配器 232 为什么需要事件适配器 232 事件监听器常见的定义形式 233 AWT其他组件 233 菜单的实现 233 特点 233 代码示例和效果 233
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立花泷的学习日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值