第一章 java 语言概述
Java基础是学习JavaEE、大数据、Android开发的基石!
举例:Spring - Rest(Spring MVC)
#核心代码:
public Model getPieData(Model model) {
List<Count> counts = countRepository.findALL();
JSQNarray result = new JSQNArray();
for (Count count:counts) {
JSQNObject o = new JSQNObject();
a.put("name",count.getProvince());
o.put("value",count.getSum);
}
model.addAttribute(s:"data".result);
}
举例:Spark(语言数据库开发) - Spark Streaming (实时计算)
#核心代码:
public void call(Iterator<ConsumerRecord<String, String>> consumerRecords) {
KafKaProducer<String,String> kafkaproducer = new KafkaProducer<``>(props);
while(consumerRecords.hasNext()) {
ConsumerRecord<String,String> record = consoumerRecords.next();
String[] params = record value().split(regex:",");
Sring geo = "["+params.length-2] +","+params[params.length-1"]";
kafkaproducer.send(new ProducerRecord<String,String>(topicBroadcast.getValue(), geo));
System.out.println(geo);
}
kafkaprodeucer.close();
}
Java 基础知识图解
Java基础课程体系
第一章 Java语言概述 第十章 泛型
第二章 基本语法 第十一章 IO流
第三章 数组 第十二章 多线程
"第四章 面向对象编程(上)" 第十三章 Java常用类
"第五章 面向对象编程(中)" 第十四章 Java反射机制
"第六章 面向对象编程(下)" 第十五章 网络编程
第七章 异常处理 第十六章 Lambda表达式与Stream API
第八章 枚举类&注解 第十七章 Java 9 & 10 & 11新特性
第九章 Java集合
实训项目:
1.家庭收支记账软件
2.客户信息 管理软件
3.开发团队人员调度软件
附加项目:
1.银行业务管理软件
2.单机考试管理软件
目录
1.软件开发介绍 5.常见问题及解决方法
2.计算机编程语言介绍 6.注解(Comment)
3.Java语言概述 7.Java API文档
4.运行机制及运行过程 8.良好的编程风格
5.Java的环境搭建 9.常用的Java开发工具
6.开发体验-Hello World
1.1 软件开发介绍
- 软件开发
软件,及一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件和应用软件之分。
- 人机交互方式
图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作。
命令行方式(Command Line Interface CUI):需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。
Pascal之父Nicklaus Wirth:“Algorithms+Data Structures=Programs”
1.1.1 常用的DOS命令:
dir:列出当前目录下的文件以及文件夹
md:创建目录
rd:删除目录
cd:退回上一级目录
cd\:退回到根目录
del:删除文件
exit:退出dos命令行
补充:echo javase 1.doc
1.1.2 常用快捷键
<- ->:移动光标
上箭头 下箭头:调阅历史操作命令
Delete和Backspace:删除字符
1.2 计算机编程语言介绍
#什么是计算机语言
语言:使人与人之间用于沟通的一种方式。例如:中国人与中国人用普通话沟通。而中国人要和英国人交流,就要学习英语。
#计算机语言:人与计算机交流的方式
如果人要与计算机交流,那么就要学习计算机语言。
计算机语言有很多种。如:C,C++,Java,PHP,Kotlin,Python,Scala等。
1.2.1 第一代语言
- 计器语言。指令以二进制代码形式存在
1.2.2 第二代语言
- 汇编语言。使用助记符表示一条机器指令。
1.2.3 第三代语言:高级语言
- C、Pascal、Fortran面向过程的语言
- C++面向过程/面向对象 (兼具两项特点)
- Java跨平台的纯面向对象的语言
- NET跨语言的平台
- Python、Scala...
1.从Java语言的市场需求来看
- https://www.tiobe.com/tiobe-index/
- TIOBE是一个流行编程语言排行。每月更新。排名权重基于世界范围内工程师书量,和第三方供用商数量。Google Bing Yahoo!Wikpedia Amazon YouTube和百度这些主流的搜索引擎,也将作为排名权重的参考指标。声明:TIOBE排名即无关最好的编程语言,也无关被书写了最多行代码的编程语言。
1.3 Java语言概述
- 是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。
- 是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在web浏览器中运行。这些Java程序被称为Java小程序(applet)。Apple使用现代的图形银行拒界面与web用户进行交互。Apple内嵌在HTML代码中。
- 随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。
后台开发:Java、PHP、Python、GO、Node.js
1.3.1 Java简史
- 1991年 Green项目,开发语言最初命名为Oak(橡树)
- 1994年,开发组意识到Oak非常适合于互联网
- 1996年,发布JDK1.0.约8.3万个网页应用Java技术来制作
- 1997年,发布JDK1.1,JavaOne会议召开,创当时全球同类会议规模之最
- 1998年,发布JDK1.2,同年发布企业平台J2EE
- 1999年,Java分成J2SE、J2EE和J2ME,JSP/Servlet技术诞生
- 2004年,
发布里程碑式版本:JDK1.5,为突出此版本的重要性,更名为JDK5.0
- 2005年,J3SE->JavaSE,J2EE->JavaEE,J2ME->JavaME
- 2009年,Oracle公司收购SUN,交易74亿美元
- 2011年,发布JDK7.0
2014年,发布JDK8.0,是继JDK5.0以来变化最大的版本
- 2017年,发布JDK9.0.最大限度实现模块化
- 2018年3月,发布JDK0.0,版本号也称为18.3
- 2018年9月,发布JDK11.0,版本号也称为18.9
1.3.2 Java技术体系平台
1.3.3 Java在各领域的应用
-
从Java的应用领域来分,Java语言的应用方向主要表现在一下几个方面:
**企业级应用**:主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及他的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。 **Android平台应用**:Android应用程序使用Java语言编写。Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实。 **大数据平台开发**:各类框架有Hadoop,spark,storm,flink等,就这类技术生态圈来讲,还有各种中间件去flume,kafka,sqoop等等,这些框架以及工具大多数使用Java编写而成,但提供诸如Java,Scala,Python,R等各种语言API供编程。 移动领域应用:主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。
1.3.4 Java语言的诞生
Java之父James Gosling团队在开发"Green"项目时,发现C缺少垃圾回收系统,还有可移植的安全性、分布程序设计和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。
Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是 "类C语言"发展和衍生的产物。比如Java语言的变量声明,操作符形式,参数传递,流程控制等方面和C语言、C++语言完全相同。但同时,Java是一个 "纯粹的面向对象" 的程序设计语言,它继承了C++语言面向对象技术的核心。Java`舍弃了C语言中容易引起错误的指针`(以引用取代)、运算重载(operator overloading)、多重继承(以接口取代)等特性,`增加了垃圾回收功能`用于回收不再被引用的对象所占据的内存空间。JDK1.5又引入泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱
1.4 Java程序运行机制及运行过程
#Java语言的特点
>特点一:"面向对象"
√ 两个基本概念: 类、对象
√ 三大特点: 封装、继承、多态
>特点二:"健壮性"
√ 吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制
>特点三:"跨平台性"
√ 跨平台性: 通过Java语言编写的应用程序在不同的系统平台上都可以运行。 "write once,Run Anywhere"
√ 原理: 只要在需要运行Java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。由JVM来负责Java程序在系统中的运行。
1.4.1 Java语言的特点:跨平台性
因为有了JVM,同一个Java程序在三个不同的操作系统中都可以执行。这样实现了Java程序的跨平台性。
1. Java两个核心机制
> Java虚拟机(Java Virtal Machine)
> 垃圾收集机制(Garbage Collection)
2. 核心机制——Java虚拟机
`+ JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。`
+ 对于不同额平台,有不同的的虚拟机。
+ 只有某平台提供了对应的Java虚拟机,Java程序才可在此平台运行
+ Java虚拟机机制屏蔽了底层运行平台的差别,实现 了 "一次编译,到处运行"
3. 核心机制——垃圾回收
-
不在使用的内存空间应回收——垃圾回收。
在C/C++等语言中,由程序员负责无用内存。Java语言消除了程序员回收无用内存空间的责任: 他提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
-
垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
-
Java程序还会出现内存泄露和内存溢出问题吗? Yes!
(Java自动回收还是溢出,跟写的程序有关,有时会导致不能自动回收)
1.5 Java语言的环境搭建(8、9、10、11是包含关系)
1.明确什么是JDK,JRE
2.下载JDK
3.安装JDK
4.配置环境变量
> path:Windows系统执行命令时要搜寻的路径。
5.验证是否成功:Javac Java
6.选择合适的文件编辑器或 IDE 开发
1.5.1 什么是JDK,JRE
简单而言,使用JDK的开发工具完成的Java程序,交给JRE去运行。
JDK、JRE、JVM 的关系
-
- JDK = JRE + 开发工具集(例如Javac编译工具等)
- JRE = JVM + Java SE 标准类库
官方图:
1.5.2 下载并安装JDK (文档 JDK 8 的安装与配置)
- 官方网址:
- www.oracle.com
- java.sun.com
- 安装JDK
- 傻瓜式安装,下一步即可。
-建议:安装路径不要有中文或者空格等特殊符号。
- 如果操作系统是64位的,软件尽量选择支持64位的(除非软件本身不区分)。
- 当提示安装 JRE 时,正常在JDK安装时已经装过了,但是为了后续使用Eclipse等开发工具不报错,建议也根据提示安装JRE。
1.5.3 配置环境变量path
- 在dos命令中敲入Javac,出现错误提示:
- 错误原因:当前执行的程序在当前目录下如果不存在,Windows系统会在系统已有的一个名为path的的环境变量指定的目录中查找,如果仍未找到,会出现以上的错误提示。所以进入到 jdk 安装路径 \bin 目录下,执行 javac,会看到 javac参数提示信息。
path:windows操作执行时,所要搜寻的路径
目的,希望 E:\Java\jdk1.8.0_192 路径下的命令可以在任何文件路径下执行
1.6 开发体验一 HelloWorld
- 创建 code\day01 目录下新建文本文件命名为 HelloWorld.java
#编辑 HelloWorld.java 文件
class HelloChina {
}
- 步骤:
1.将 Java 代码编写到扩展名为 .java的文件中。
2.通过 .javac 命令对该 java 文件进行编译。
3.通过 java 命令对生成的 class 文件进行运行。
- 执行 HelloWorld.java 文件
C:\Users\31365>E:
E:\>cd code\day01
E:\code\day01>javac HelloWorld.java #执行完后会出现 HelloChina.class 字节码文件
E:\code\day01>java HelloChina
#编写 HelloWorld.java 文件
class HelloChina {
public static void main(String[] args) {
}
}
#执行源文件 HelloWorld.java 和字节码文件 HelloChina.class
E:\code\day01>javac HelloWorld.java #会把原本的覆盖掉
E:\code\day01>java HelloChina
#编写原文件 HelloWorld.java
class HelloChina {
public static void main(String[] args) {
System. out. println("Hello,World!");
}
}
#执行源文件 HelloWorld.java 和字节码文件 HelloChina.class
E:\code\day01>javac HelloWorld.java
E:\code\day01>java HelloChina
Hello,World!
- 安装 EditPlus
- 设置打开方式为小红书 EditPlus
- 设置字体
- 配置自定义工具 javac java 是一样的配置
常见问题及解决方法
D:\>javac Test1.java
javac: 找不到文件:Test1.java
用法:javac <options> <source files>
-help 用于列出可能的选项
- 源文件名不存在或者写错
- 当前路径错误
- 后缀名隐藏问题
D:\>java Test1
错误:找不到或无法加载主类 Test1
- 类文件名写错:尤其文件名不一致时,要小心
- 类文件不在当前路径下,或者不在classpath指定路径下
D:\>javac Test.java
Test.java:1: 错误:类Test1是公共的,应在名为 Test1.java 的文件中声明 public ‘class Test1<
1 个错误
- 声明为public的类应与文件名一致,否知编译失败
D:\>javac Test.java
Test.java:3: 错误:需要';'
System.out.printnl<"hello">
1 个错误
- 编译失败,注意错误出现的行数,再到源代码中指定位置改错
1.7 注释(Comment)
- 用于注解说明解释程序的文字就是注释。
- Java中额注释类型:
单行注释
多行注释
文档注释(java特有) - 提高了代码的阅读性;调试程序的重要方法。
- 注释是一个程序员必须具有的良好编程习惯。
- 将自己的思想通过注释先整理出来,再用代码去体现
#新建一个 java 文件
class HelloJava{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
#执行源文件 HelloJava.java 和字节码文件 HelloJava.class
E:\code\day01>javac HelloJava.java
E:\code\day01>java HelloJava
Hello World!
-----------------------注释解释说明------------------------------
/*
1. java规范的三种注释方式
单行注释
多行注释
文档注释(java特有)
2. 单行注释和多行注释的作用:
① 对所写的程序进行解释说明,增强可能性。方便自己,方便别人。
② 调试所写的代码
3. 特点:单行注释和多行注释,注释了的内容不参与编译。
换句话说,编译以后生成的.class结尾的字节码文件中不包含注释掉的信息
*/
class HelloJava{
/*
多行注释:如下的main方法是程序的入口!
main的格式是固定的!
*/
public static void main(String[] args) {
//单行注释:如下的语句表示输出到控制台
System.out.println("Hello World!");
}
}
- 文档注释(Java特有)
格式:/**
@author 指定Java程序的作者
@version 指定源文件的版本
*/ - 注释内容可以被 JDK 提供的工具 Javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
- 操作方式
E:\code\day01>javadoc -d myHello -author -version HelloJava.java
/*
1. java规范的三种注释方式
单行注释
多行注释
文档注释(java特有)
2. 单行注释和多行注释的作用:
① 对所写的程序进行解释说明,增强可能性。方便自己,方便别人。
② 调试所写的代码
3. 特点:单行注释和多行注释,注释了的内容不参与编译。
换句话说,编译以后生成的.class结尾的字节码文件中不包含注释掉的信息
4. 文档注释的使用:
注释内容可以被JDK提供的工具Javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档。
5. 多行注释不可以嵌套使用
*/
/**
文档注释
@author shkstart
@version v1.0
这是我的第一个java程序!非常的开心!
*/
public class HelloJava{
/*
多行注释:如下的main方法是程序的入口!
main的格式是固定的!
*/
/**
如下的方式是main(),作用:程序的入口。
*/
public static void main(String[] args) {
//单行注释:如下的语句表示输出到控制台
System.out.println("Hello World!");
}
}
#操作方式
E:\code\day01>javadoc -d myHello -author -version HelloJava.java
- 小笑话
1.8 Java API 文档
- API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口。
- Java语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的 API 文档,用于告诉开发者如何使用这些类,以及这些类里包含
- http://www.oracle.com/technetwork/java/javase/downloads/index.html
Additional Resources-Java SE 8 Documentation 下载。 - 详见:JDK8的下载-安装-配置.doc
#新建一个 java 文件名为 Hello
class Hello{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
- java 程序总结
/*
对第一个java程序进行总结
1. java程序编写-编译-运行的过程
编写:我们将编写的java代码保存在以“.java”结尾的源文件中
编译:使用javac.exe命令编译我们的java源文件。格式:javac 源文件名.java
运行:使用java.exe命令解释运行我们的字节码文件。格式:java 类名
2. 在一个java源文件中可以声明多个class。但是,只能最多有一个类声明为public的。
而且要求声明为public的类的类名必须与源文件名相同。
3. 程序的入口是main()方法。格式是固定的。
4. 输出语句:
System.out.println():先输出数据,然后换行
System.out.print():只输出数据,不换行
5. 每一行执行语句都以";"结束。
6. 编译过程:编译以后,会生成一个或多个字节码文件。字节码文件的文件名与java源文件中的类名相同。
*/
class Hello{
public static void main(String[] args) {//public static void main(String a[]) {//arguments;参数
System.out.println("Hello World!");
System.out.println();//换行
}
}
1.9 良好的编程风格
- 正确的注释和注释风格
使用文档注释来注释整个类或整个方法。
如果注释方法中的某个步骤,使用单行或多行注释。 - 正确的缩进和空白
使用一次tab操作,实现缩进
运算符两边习惯性各加一个空格。比如:2 + 4 * 5. - 块的风格
Java API 源代码选择了行尾风格
1.11 常用的 Java开发工具(Integrated Development Environment)
- 文本编辑工具:
记事本
UltraEdit
Editplus
TextPad
NotePad - Java集成开发环境(IDE Integrated Development Environment):
JBuilder
NetBeans
Eclipse
MyEclipse
IntelliJ IDEA - JBuilder
- NetBeans
- Eclipse IBM开发的
- MyEclipse
- IntelliJ IDEA