第一章:开发前言
计算机分为硬件
和软件
,一般来说。硬件就是组成计算机的可见的物理组件。我们的电脑、手机、电子设备都算一个小的计算机。而软件提供看不见的指令,这些指令控制硬件并且通过硬件完成特定任务。
常见硬件:CPU、内存、硬盘、显卡、等。见延伸学习
1、什么是软件开发
1.1、软件定义
软件就是按照特定的顺序把数据和指令组合在一起,能够完成相应功能的程序(计算机指令)。
软件分为两种:
系统软件:专门用于运行其他程序的平台。比如:Linux、Windows、MAC等
应用软件:完成相应功能的程序。比如:MS-Office,QQ,微信等,
1.2、什么是开发
开发其实就是制作软件的过程。开发既然是个过程,这个过程可以分为如下几个步骤:
①需求分析和调研、②需求设计、③编码、④测试、⑤后期维护。
1.3、什么是软件开发
从开始和客户谈需求,写需求文档,设计文档,程序员编码,项目测试,整个过程即就是软件开发。在这个过程中分工合作,完成每一个阶段的任务。
2、人机交互方式
我们想和计算机说话,就要先了解下用什么方式和计算机沟通。
和计算机交互的方式有两种:
图形界面(Graphical User Interface GUI):这种方式简单直观,使用者易于接受,容易上手操作。
命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。
若想和计算机沟通,常用的方式就是通过鼠标键盘操作图形化的界面即可完成。这种方式简单易学,大家都会。能干很多事,包括开发游戏。
3、常用dos命令
通过命令行可以和计算机进行相应的沟通,也就是说只要我们输入命令即可完成和计算机沟通的目的。那么命令都有哪些呢?常用的dos命令:
进入根目录方法: 根盘: 进入D盘,D:
cd.. : 退回到上一级目录
cd\: 退回到根目录
del : 删除文件
exit : 推出dos命令行
help: 帮助命令
cls: dos窗口中清屏可以使用
ipconfig:查看ip
ping xxxx:跟某个ip通信
起初操作电脑常用dos命令
,因为需要记住很多命令,不利于普及,后期发展成图形界面,通过鼠标点击界面的形式完成对电脑的操作,其实内部运行的还是这些命令。
软件开发完成,转化成指定运行平台可运行的执行文件,直接使用。
4、计算机语言
既然图形界面是将dos命令
封装在里面,可是这个图形界面是怎么来的呢?其实这些图形界面都是通过相应的计算机语言写出来的。那什么又是计算机语言呢?
4.1、 什么是计算机语言
首先明确什么是语言,语言是人与人之间用于沟通的一种方式。例如:中国人与中国人用中文沟通。而中国人要和韩国人交流,就要学习韩语。
计算机语言:人与计算机交流的方式。如果人要与计算机交流,那么就要学习计算机语言。计算机语言有很多种,如:C,C++,Java等。这里,我们选择其中的一种:Java语言。
4.2、java语言发展历程
1995年5月23日,Java语言诞生
1996年1月,第一个JDK–JDK1.0诞生
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术
1996年9月,约8.3万个网页应用了JAVA技术来制作
1997年2月18日,JDK1.1发布
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录
1997年9月,JavaDeveloperConnection社区成员超过十万
1998年2月,JDK1.1被下载超过2,000,000次
1998年12月8日,JAVA2企业平台J2EE发布
1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)
2000年5月8日,JDK1.3发布
2000年5月29日,JDK1.4发布
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机
2001年9月24日,J2EE1.3发布
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升
2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0(因为新特新增加特别多,所以起了个高大上的名字!)
2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME
2006年12月,SUN公司发布JRE6.0
2009年12月,SUN公司发布Java EE 6
2010年11月,由于Oracle公司对于Java社区的不友善,因此Apache扬言将退出JCP
2011年7月28日,Oracle公司发布Java SE 7
2014年3月18日,Oracle公司发表Java SE 8(市场主流版本)
2017年9月21日,Oracle公司发表Java SE 9
Java之所以被开发,是想要达到以下五个目的:
应当使用面向对象程序设计方法学
应当允许同一程序在不同的计算机平台执行
应当包括内建的对计算机网络的支持
应当被设计成安全地执行远端代码
应当易于使用,并借鉴以前那些面向对象语言(如C++)的长处。
Java技术主要分成几个部分:Java语言、Java运行环境、类库。一般情况下说Java时并不区分指的是哪个部分。
Java在1.5版本时,做了重大改变,Sun公司并1.5版本重命名为Java 5.0。
5 、java语言三种架构
J2EE(Java 2 Platform Enterprise Edition)企业版 |
---|
可帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web 2.0 应用程序。 |
J2SE(Java 2 Platform Standard Edition)标准版 |
它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java 应用程序,能为Java EE提供开发基础。比如Java版的扫雷。 |
J2ME(Java 2 Platform Micro Edition)小型版 |
用来开发移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)。现在使用的越少用了,Android会逐渐的取代J2ME的市场份额。 |
Java5.0版本后,更名为 JAVAEE JAVASE JAVAME |
第二章:JAVA语言环境搭建
1、跨平台原理【面试&学习】
1.1、什么是跨平台性?
跨平台就是说同一个软件可以在不同的操作系统上执行,而不需要对软件做任务处理。即通过Java语言编写的应用程序在不同的系统平台上都可以运行。
1.2、跨平台的原理是什么?
Java应用程序为什么可以跨平台呢?其实只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine
)即可。由JVM来负责Java程序在该系统中的运行。
1.3、跨平台(图解)
因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。
Java程序之所以能够实现跨平台运行,是因为它根本就不直接运行在任何底层平台上,而是需要在哪里运行,就在哪里(如Windows平台)事先准备好自己的Java平台,而这只是仅仅是安装和配置一个软件而已!
1.4、JVM介绍
Java Virtual Machine
,简称JVM;它是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一,JVM读取并处理编译过的与平台无关的字节码(class)文件。
注意:Java语言是跨平台的,是因为Java应用程序需要Java虚拟机JVM负责运行。
而Java虚拟机JVM是不跨平台的,不同的操作系统需要安装与此对应的Java虚拟机JVM。
2、环境搭建
2.1、 JAR、JDK区别
Jdk(java development toolkit ,java开发工具包)
是java的核心,包括了java运行环境,一堆java工具(javac、java、jdb)和java基础的类库(即javaAPI包括rt.jar)
可以认为Jre的bin目录里的就是jvm,lib中则是jvm工作所需要的类库 。
Jre(java runtime environmental,java运行时环境)
所有的java程序都要在jre下才能运行。包括jvm和java核心类库和支持文件。与jdk相比不包含开发工具(编译器、调试器、和其它工具)。
JVM(java virtual mechinal,java虚拟机)
jvm是jre的一部分,它是一个虚拟出来的计算机。Jvm的主要工作是解释自己的指令集(即字节码)并映射到本地的CPU的指令集或OS的系统调用。
简单而言:使用JDK开发完成的java程序,交给JRE去运行。
为什么JDK中包含一个JRE呢?
开发完的程序,总需要运行一下看看效果。
也是最重要的,JDK中的开发工具其实都是java语言编写的应用程序,为了方便使用才打包成exe文件。
如果没有JRE,那么这些工具是运行不了,因为都是使用JVM运行的。
2.2、下载
官网下载:jdk ,点击安装,分别安装JDK和JRE。
测试安装:进入安装目录下 ,win+R进入dos命令,然后:输入Java和Javac看是否能打印出相关信息,若打印出来说明JDK安装成功。
2.3、配置环境变量
在其他路径下键入 javac会出现。
错误原理:当前执行的程序在当前目录下不存在,windows系统会在系统中已有的一个名为path
的环境变量指定的目录中查找。如果还没有找到,就出现以上的错误提示。所以进入到 jdk安装路径\bin目录下,执行javac
。看到javac参数提示信息。
根据windows系统在查找可执行程序的原理,可以将java工具所在路径定义到path
环境变量中,让系统帮我们去找运行执行的程序。
2.3.1、配置环境变量
(右键)此电脑-->高级系统设置-->环境变量
编辑
path
环境变量,在变量值开始处加上java工具所在目录,后面用 “ ; ”和其他值分隔开即可。打开DOS命令行,任意目录下敲入
javac
。如果出现
javac
的参数信息,配置成功。
为什么要配置?一劳永逸。任何环境下都可以直接运行。
2.3.2、配置技巧
在配置环境变量过程中发现,path
环境变量中还有很多其他与系统相关的配置,若JDK目录更改了,这时就要再次修改path
中配置的值,很容易造成误操作。
为了不因为jdk的目录或者目录名称的改变,而不断更改path的值,而导致对path变量值的误操作,可以通过以下技巧完成。
新创建一个环境变量 JAVA_HOME
记录住jdk的目录。在path中通过%%
动态的获取JAVA_HOME的值即可。
JAVA_HOME=D:\Java\jdk1.8
path=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
%path%:动态获取path环境变量的值。
%JAVA_HOME%:动态获取名称为JAVA_HOME环境变量的值。
2.3.3、临时环境变量配置
临时配置方式:通过dos命令中set命令完成。
set :用于查看本机的所有环境变量的信息。
set 变量名 :查看具体一个环境变量的值。
set 变量名=:清空一个环境变量的值。
set 变量名=具体值 :给指定变量定义具体值。
想要在原有环境变量值基础上添加新值呢?首先,通过%变量名%操作符获取到原有环境变量的值。然后加上新值后在定义给该变量名即可:
set path=新值;%path%
注意:这种配置方式只在当前dos窗口和在此dos窗口中使用start开启的dos窗口中有效。窗口关闭,配置消失。
path="D:\Java\jdk8.0\bin" 开发环境path="D:\Java\jdk8.0\jre\bin" 运行环境 (JVM)提取最大公共路径:D:\Java\jdk8.0创建 JAVA_HOME = D:\Java\jdk8.0修改pathpath="%JAVA_HOME%\bin" 开发环境path="%JAVA_HOME%\jre\bin" 运行环境 (JVM)
第三章:hello world
使用记事本or开发工具创建一个java文件,将拓展名修改为.java.然后编译为.class,然后运行.class执行java程序。
正式开始编写java,分为编写.java、编译、运行.class。
步骤一:编写源文件
使用记事本或者其他记事本工具,编译一个java文件,拓展名为.java
public class Demo01{ public static void main(String[] args){ System.out.println("Hello World!!!");}}
紫色的部分称为关键字,我们这里先说class :用于定义类,java语言的程序代码都需要定义在类中。
关键字:被java语言赋予了特殊含义的单词。
Demo01:为了方便使用这个类,给类自定义的类名。
{}:定义该类中代码的范围。
步骤二:编译
有了java源文件,将其编译成JVM可以识别的文件。在源文件路径下,通过javac编译工具对Demo01.java文件进行编译。如果程序没有错误,没有任何提示,但在当前目录下会出现一个Demo01.class文件,该文件称为字节码文件,也是可以执行的java的程序。
步骤三:运行
通过java Demo01就可以直接运行。前提main方法,不是名字为main。
补充说明
一个程序的执行需要一个起始点或者入口,所以在Demo01类中的public static void main(String[] args){}就是这个作用。
使用打印语句System.out.println("Hello World!!!")
和System.out.print("Hello World!!!");
ln代表换行,System.out.print打印语句,()内为内容。“”为字符,还可以写数字。还可以写计算公式等。
输入&输出
输出:System.out.println("Hello World!!!");
System.out.println("Hello World!!!");// 换行输出System.out.print("不换行");// 不换行输出
输入:Scanner
import java.util.Scanner; // 引包 路径指引Scanner input = new Scanner(System.in);// 拥有输入能力System.out.println("请输入你想说的话");// 提示语String str = input.nextLine();// 收录一行话要求 输入名字 输出 你好 + 名字
程序短暂停止
Thread.currentThread().sleep(1000);// 程序短暂停止1000ms
输入可以调试代码
未出现异常和错误的情况下,输入语句会正常运行,如果出现错误和异常,在错误异常发生前的程序都可以执行到,
这是可以利用输出语句去定位错误发生的位置。
第四章:错误
错误原因:源文件名不存在或者写错,或者当前路径错误。
类文件名写错,或者类文件不在当前路径下,或者不再classpath指定路径下。
编译失败,注意错误出现的行数,在到源代码中指定位置排错。
注意:
Java语言拼写上严格区分大小写;
一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义成public类;
若源文件中包括了public类,源文件必须和该public类同名;
一个源文件中包含N个Java类时,编译后会生成N份字节码文件,即每个类都会生成一份单独的class文件,且字节码文件名和其对应的类名相同;
第五章:基础语法
任何一种语言都有自己的语法规则,Java也一样,既然是规则,那么知道其如何使用就可以了。
如何定义Java中的类
Java代码都定义在类中,类由
class
来定义,区分public class
和class
;main方法的作用
main方法是程序的入口;保证程序的独立运行;被JVM调用;
Java语言分隔符
分号 【;】;语句的分割,表示一句话结束,好比咱们使用的句号。
花括号 【{}】;表示一个代码块,是一个整体,花括号要一起使用。
方括号 【[]】;定义数组和访问数组元素时使用。
圆括号 【()】;使用很广泛,具体用到细讲。
圆点【.】;类/对象 访问它的成员(字段,方法)时使用等。
空格【 space】;分割一条语句的不同部分,空格的次数不限制。
注释
注释:用于解释说明程序的文字就是注释。有利于提高了代码的阅读性。
注释分类:
单行注释://:
//后到本行结束的所有字符会被编译器忽略;
多行注释 /* */:
/* */之间的所有字符会被编译器忽略
文档注释 /** */:
在/** */之间的所有字符会被编译器忽略,java特有的(用于生成文档);javadoc + xxxx.java
注意:多行和文档注释都不能嵌套使用
对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
注释是一个程序员必须要具有的良好编程习惯。初学者编写程序可以养成习惯:先写注释再写代码。将自己的思想通过注释先整理出来,再用代码去体现。
注释还有一个功能就是调试程序用。
/**这是我的Hello World程序。*/class Demo{ /* 这是主函数,是程序的入口,它的出现可以保证程序的独立运行, */ public static void main(String[] args){ //这是输出语句用于将括号内的数据打印到控制台。 System.out.println("Hello World"); System.out.println(12/0);}}
综合示例
import java.util.Scanner;public class 输入和输出 { public static void main(String[] args) throws Exception { Scanner input = new Scanner(System.in); System.out.print("输入"); String s = input.nextLine(); Thread.currentThread().sleep(1000); System.out.println(s); }}
第六章:Java关键字&标识符
1、关键字
关键字:被Java语言赋予了特定含义的一些字符!关键字中所有字母都为小写。好比汉字中的专有名词,例如:中国、北京、上海等。一般我们不能将这些词用在其他地方,改变其含义。
关键字分类:
定义数据类型:
class、interface、byte、short、int、long、float、double、char、boolean、void
数据类型的值:
true、false、null
流程控制:
if、else、switch、case、default、while、do、for、break、continue、return
权限修饰符:
private、protected、public
类、函数、变量修饰符:
abstract、final、static、 synchronized
类之间关系:
extends、implements
异常处理:
try、catch、finally、throw、throws
包
package、import
其他修饰
native(执行本地c)、strictfp(类、接口或方法上 约束表达式)、 transient(对象上不会被序列化) 、volatile(弱同步)、assert(断言)
package com.company;// 打包public class Main { public static void main(String[] args) { System.out.println("Hello World!!!"); }}
2、标识符
可简单理解为在Java程序中为了增强阅读性自定义的名称。比如:类名,方法名,变量名等。
标识符组成:
标识符由字母、数字、下划线、$组成,不能以数字开头,注意:此处的字母还可以是中文,日文等;
标识符大小写敏感;
标识符不得使用java中的关键字和保留字;
别用Java API里面的类名作为自己的类名;
注意:在起名字的时,只要标识符不是关键字就可以了,但为了提高阅读性,经常用有意义的英文单词作为标识符。
标识符书写规范:
包名:多单词组成时所有字母都小写。xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。XXX_YYY_ZZZ
☆:延伸学习
一、计算机概述
一台计算机是由以下几个主要硬件组成的:
中央处理器(CPU)
内存(主存)
存储设备(例如,磁盘和光盘)
输入设备(例如,鼠标和键盘)
输出设备(例如,显示器和打印机)
通信设备(例如,调制解调器和网卡)
这些组件通过一个称为总线(bus)的子系统连接。数据和电信号通过总线在计算机的各个部分之间传输。
二、编程语言
计算机程序称为软件
,是告诉计算机还做什么指令。计算机不懂人类语言,计算机程序必须使用计算机可以使用的语言编写。所有语言必须先转化为计算机可执行的指令。
2.1、机器语言
计算机的原生语言因计算机的类型不同而有差异,计算机的原生语言就是 机器语言 (machine language),即一个内嵌的原子指令集。这些指令都以二进制的形式存储。所以也需要二进制指令传入。
2.2、汇编语言
原生语言编写的程序很难读懂和修改,所以汇编语言作为了机器语言的替代品。汇编语言(assembly language)只用短的描述性单词(称之为助记符)来表示每一条机器指令。例如:add表示数字相加,sub表示数字相减。
汇编语言虽然很简单,但是计算机是不懂的。需要一个汇编器的程序将汇编语言转化为机器代码。用汇编语言写代码需要知道CPU如何工作,汇编语言被认为是 低级语言。汇编语言本质上很接近机器语言,并且与机器相关。
2.3、 高级语言
高级语言的指令称为 语句。
高级语言编写的程序称为 源程序(source program)或 源代码(source code),因为计算机无法直接执行 源程序,需要编译成可执行的机器代码,编译的工具称为:解释器或编译器。
解释器从源代码中读出一条语句,将其翻译成机器代码或者虚拟机器代码,然后立刻运行,来源于源代码的一条指令会被翻译成多条机器指令。
编译器将整个源代码翻译为机器代码文件,然后执行该机器代码文件。
三、Java、万维网以及其它
Java是一种功能强大和多种用途的编程新语言,可用于开发运行在移动设备、台式计算机以及服务器端软件。Java时至今日已经非常流行,它的快速发展和广泛接受都应该归功于它的设计特性,特别它的承诺:一次编写,任何地方都执行。(Write Once Only Once)用来开发健壮的任务关键的应用程序。现在,他不仅用于Web程序设计,而且用于在服务器、台式机和移动设备上开发跨平台的独立应用程序。
万维网(World Wide Web,WWW)是从世界上任何地方的Internet都可以访问到的电子信息宝库。丰富多彩的万维网和设计精良的Web浏览器是Internet流行的主要原因。
java一开始富有吸引力的原因是它可以在Web上运行,这种能在web浏览器上运行的程序称之为 java小程序(applet)。applet使用图形化交互界面与Web用户进行交互。applet使得web更有响应性、交互性、趣味性。applet内嵌在HTML文件中。HTML(Hypertext Markup Language)是一种简单的脚本语言,用于文档布局,连接因特网上的文档,并且能够在万维网上提供生动的图像、声音和视频。
常见的一个误解是,人们认为互联网、因特网(Internet)和万维网(World Wide Web)是同样的事物。一些词语如“互联网”、“万维网”,“网”和“网络”经常可以交替使用。但是,从技术的角度来说,“互联网”和“万维网”是两个独立的实体。互联网是线路、协议以及通过TCP/IP协议实现数据电子传输的硬件和软件的集合体。Internet提供的主要服务有万维网(WWW)、文件传输(FTP)、电子邮件E-mail、远程登录(Telnet)等。internet(互联网)是一个通用名词,它泛指由多个计算机网络互连而成的网络 Internet(因特网)是一个专有名词,指当前全球最大的、开放的、由众多网络互连而成的特定计算机网络(采用tcp/ip)协议族。 因特网是最大的互联网。万维网则存在于互联网之上。它是无数个网络站点和网页的集合,构成了因特网主要的部分。它实际上是多媒体的集合,是由超级连接连接而成的。我们通常通过网络浏览器上网观看的,就是万维网的内容。万维网由浏览器浏览超文本页面组成,这些超文本页面是通过TCP/IP协议从网络上获取的。网页的开头部分总是http://或者https://,表明被浏览器的信息是超文本,是利用超文本传输协议来传输的。所以,如果把互联网看成是基础,那么万维网就可以被看成是对互联网的应用。万维网(World Wide Web)是作为欧洲核子研究组织的一个项目发展起来的,在那里 Tim Berners-Lee 开发出万维网的雏形。Tim Berners-Lee- 万维网的发明人和万维网联盟的主任。万维网制定的标准是一个叫做万维网联盟的组织。万维网联盟,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。建立者是万维网的发明者蒂姆·伯纳斯·李。万维网联盟是国际最著名的标准化组织。1994年成立后,至今已发布近百项相关万维网的标准,对万维网发展做出了杰出的贡献。万维网联盟拥有来自全世界40个国家的400多个会员组织,已在全世界16个地区设立了办事处。2006年4月28日,万维网联盟在中国内地设立首个办事处。
四、专业术语
五、笔者寄语
对于初学者而言,会感觉计算机语言很陌生。加上大量单词也会劝退很多人。做为过来人告诉大家不要急。对于程序的学习,我个人建议各位用“不求甚解”的态度。很奇怪,对吧?其实很多门槛在于大家无法接受程序语言的规则。也许大家放下执念学起来更轻松。试想开始玩一款游戏,你也许会奇怪为什么跳跃要这样,攻击要那样....但是,很快你接受这种方式之后,加上大量时间的练习,你成为了这款游戏的高手。
那么试着用这样的方式来学习JAVA这门语言吧!感到压力的时候打开快手、抖音、B站等APP或者网站休息的时候,告诉自己以后你也能开发一款这样的应用。给自己加个油吧。