一. 基础常识
- 编程的本质=数据结构+算法
- 数据结构:数据结构是计算机存储、组织数据的方式
- 算法:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算 法代表着用系统的方法描述解决问题的策略机制
- 编程语言
- 编程:编程就是让计算机按自已的意图去工作;
- 语言:沟通的方式;
- 案例:中国人与中国人 以及 外国人沟通;
- 计算机语言:人和计算机交流-----人必须要学会计算机语言(java、c、c++、python...),因为我们要让计算机按照我们的需要完成特定的任务;
二. Java语言概述
2.1 编程语言发展史
- 第一代语言(打孔机——纯机器语言)
机器语言通常由数字串组成(最终被简化成01),对于人类来说,机器语言过于繁琐。 使用机器语言,人类无法编出复杂的程序。如下为一段典型的机器码:
0000,0000,000000010000 代表 LOAD A, 16 0000,0001,000000000001 代表 LOAD B, 1 0001,0001,000000010000 代表 STORE B, 16
- 第二代语言(汇编)
为了编程的方便,以及解决更加复杂的问题。程序员开始改进机器语言,使用英文缩写的助记符来表示基本的计算机操作。这些助记符构成了汇编语言的基础。如下是一些常见的 汇编语言助记符( 单词 ) 比如: LOAD 、 MOVE 之类,这样人更容易使用了。识别几百、几千个单词,感觉要比几百几千个数字,美妙多了。汇编语言相当于人类的手工业社会,需要技术极其娴熟的工匠,但是开发效率也非常低。
汇编语言虽然能编写高效率的程序,但是学习和使用都不是易事,并且很难调试。另一个复杂的问题,汇编语言以及早期的计算机语言(Basic、 Fortran 等)没有考虑结构化设计原则,而是使用goto 语句来作为程序流程控制的主要方法。这样做的后果是:一大堆混乱的调转语句使得程序几乎不可能被读懂。对于那个时代的程序员,能读懂上个月自己写的代码都成为一种挑战。
汇编语言仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。
- 第三代语言(高级语言)
从上面这个简单的加法计算,可以看出越到高级语言,越接近人的思维,人使用起来就越方便。高级语言极其易用,编程门槛和难度大大降低,大量的人员进入软件开发行业,为软件爆发性的增长提供了充足的人力资源。目前以及可预见的将来,计算机语言仍然处于“第三代高级语言”阶段。
如c/ c++ /java/python等。
2.2 java语言发展史
- 1990年年末,Sun公司预料嵌入式系统将在未来的家用电器领域大显身手,于是成立了一个“Green”计划,为下一点家电编写一个通用控制系统。JamesGosling是小组领导人
- 1995年5月23日,Sun在Sun World会议上正式发布Java语言和HotJava浏览器
- 1996年1月,Sun公司发布了Java的第一个开发工具包(JDK1.0)
- 1999年6月,Sun公司发布第二代Java的三大版本:JavaSE,JavaEE,JavaME
- 2004年9月30日18:00PM,J2SE1.5发布,是Java语言发展史上的又一里程碑事件。为了表示这个版本的重要性,J2SE 1.5正式更名为Java SE 5.0(内部版本号:1.5.0),代号“Tiger”
- 2009年4月20日,Oracle宣布将以总价值约为74亿美元收购了SUN
- 2018年9月25日,Java 11发布.
目前Java 的版本已经更新到 18 版本,但市场主流还是使用的 JDK8 和 JDK11
2.3 java语言的特点
- 面向对象:更符合人类的思维方式,扩展性更好
- 简单 :语法简单,摒弃指针和手动内存管理,提供大量类库
- 跨平台性:一次编译,到处运行
2.4 java语言的三个版本
- javaSE:标准版本:基础,桌面级应用;
- javaEE:企业版:服务器端的大网络,分布式
- javaME:微型版本:嵌入式设备,小设备;
三. Java开发环境搭建
3.1 JDK、JRE、JVM的关系
- JVM(Java Virtual Machine)就是一个虚拟的用于执行bytecode字节码的”虚拟计算机”。
- JRE(Java Runtime Environment)包含:Java虚拟机、库函数、运行Java应用程序所必须的文件。
- JDK(Java Development Kit)包含:包含JRE,以及增加编译器和调试器等用于程序开发的文件。
3.2 安装JDK(安装JDK1.8)
3.2.1 安装注意事项
- 傻瓜式安装,按步骤来就行
- 安装路径不要有空格,不要使用中文路径;
- 安装后会有两个目录:jdk + 版本号 / jre + 版本号
官网:www.oracle.com
- 查看自己电脑系统的类型
- 将网址输入到浏览器
- 选择适合自己电脑的版本进行下载
- 进行下载
-
选择你下载好的应用程序进行安装
-
采用向导式安装(无脑下一步)注意:如果你修改安装路径,这个路径不能有中文以及空格,默认的安装路径是 C:\Program Files\Java\jdk+版本号
3.2.2 配置环境变量
1)为什么配置环境变量
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows 和 DOS 操作系统中的 path 环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path 中指定的路径去找。
- 配置方法:
我的电脑 -- 属性 -- 高级系统设置 -- 环境变量 -- 系统变量 --path--java 命令所在的路径 ( 包含 bin目录)
点击确定的顺序 从----->到箭头方向:
我的电脑 <-- 属性 <-- 高级系统设置 <-- 环境变量 -- 系统变量 <--path<--java 命令所在的路径 ( 包含bin 目录 )
2)注意事项
- 我们需要关闭命令行窗口,再打开命令行窗口才能完成javac命令的测试成功
- 修改环境变量的值、删除环境变量的值一定一定一定要小心仔细
3)为什么还是会显示以前的版本
原因:是因为在Path路径中有相关的jdk,在我们当前这个的上面存在
解决方案:
- 删除path路径中的那个值
- 将你当前这个jdk的值,移动到最上面
菜单键+R 组合 里面输入cmd 回车(确定)
- 常用DOS命令
- cd 目录路径: 进入一个目录
- dir:查看本目录下的文件和子目录列表
- 监测JDK是否安装成功
- 运行java命令
- 运行javac命令
扩展: path 的作用是,当运行一个命令时,先从当前路径找,如找不到,再去 path中找;
四. 第一个java应用程序---HelloWorld
1)在你电脑的除了c盘以外的磁盘去创建一个目录(文件夹) `E:\java_2204\lesson\20221019
2)在此目录中创建一个以.java结尾的HelloWorld的java文件
- 文件的组成由 : 文件名 + 文件扩展名,如 HelloWorld.java
-
开启文件扩展名:
3) 在这个文件里面编写内容(源码 这个文件是给我们程序员看的)
public class Hello World{
public static void main(String[] args){
System.out.println("Hello World...");
}
}
4)使用javac 命令 将上面的源代码编译成字节码(.class后缀结尾的文件)
- javac 命令作用:将源代码编译成字节码
- javac 命令语法: javac 文件类型是java类型的文件(要有文件的后缀名)
- 案例 :javac HelloWorld.java
5)使用java命令,去执行我们编译后的字节码文件
- java 命令作用:执行编译后的字节码文件
- java 命令语法:java 字节码文件(后面不能有.class)
- java 命令案例: java HelloWorld
- 注意: 我们的源代码(.java) 必须先编译成字节码(.class)文件后才能运行
五. HelloWorld详解
public class HelloWorld{// 类名要和你的文件名保存一直,在一个文件中只能有一个这样的类名
//程序执行的入门 主方法
public static void main(String[] args){
//向控制台打印输出,具体输出什么内容看""里面的内容,还可以与下一行换行
System.out.println("Hello World...");//;相当于写作文中的句号
}
}
六. 注释(就是给程序员看的)
分类:
- 单行注释 ://内容
- 注意:单行注释后面写什么内容都会被注释掉,在单行注释后面,我们不能写我们使用的代码
- 多行注释: 以 /* 开头 */结尾
- 文本文档注释 以/** 开头 */结尾
- 可以使用 javadoc 文件名.java 生成文本文档
//我是单行注释
public class Demo01{
//我是单行注释
public static void main(String[] args){
//我是单行注释 变量中经常使用
//我是单行注释System.out.println("zao shang hao");
/*
* 我是多行注释
* 我是多行注释
* 我是多行注释
*
System.out.println("zao shang hao");
*/
/**
* 我是文本文档注释,习惯性给 类、方法进行说明
*/
System.out.println("zao shang hao");
}
}