JavaSE基础-概述

JavaSE_第1章 Java概述

学习目标

  • 理解Java语言的跨平台实现原理
  • 理解JDK/JRE/JVM的组成和作用
  • 能够配置环境变量JAVA_HOME(会参照笔记配置)
  • 能够编写HelloWorld程序编译并执行
  • 会使用单行注释和多行注释

1.1 JavaSE课程体系介绍

JavaSE知识图解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tvzErOYm-1661509788433)(imgs/JavaSE课程内容介绍.png)]

JavaSE知识模块介绍

  • 第一部分:计算机编程语言核心结构:数据类型运算符流程控制数组、…
  • 第二部分:Java面向对象核心逻辑:类和对象封装继承多态抽象接口、…
  • 第三部分:JavaSE核心高级应用:集合I/O多线程网络编程反射机制、…
  • 第四部分:Java新特性:Lambda表达式函数式编程新Date/Time API接口的默认、静态和私有方法、…
  • 第五部分:MySQL/JDBC核心技术:SQL语句数据库连接池DBUtils事务管理批处理、…

1.2 计算机语言介绍(了解)

计算机程序(Computer program),也称为软件(software),简称程序(英语:Program),是指一组指示计算机或其他具有信息处理能力装置执行动作或做出判断的指令,通常用某种计算机编程语言编写,运行于某种目标计算机体系结构上。

计算机语言是什么

所谓计算机编程语言,即人与计算机交流的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。

计算机语言发展

  • 第一代:机器语言
    • 指令以二进制形式存在 : 1000100111011000
  • 第二代:汇编语言
    • 使用助记符表示一条计算机指令: MOV AX, BX
  • 第三代:高级语言
    • 接近人类自然语言,使程序员更容易编写,更容易读懂。相反低级语言更接近底层,效率高,难于理解。
      • Java、C(接近汇编)、C++、Python等

计算机语言排行榜

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SnLzjFVF-1661509788434)(imgs\TIOBE语言排行.png)]

计算机语言走势

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tA9RmFVB-1661509788435)(imgs/TIOBE社区语言发展指数.png)]

1.3 Java语言概述(了解)

1.3.1 Java生态圈

**Java是目前应用最为广泛的软件开发平台之一。**随着Java以及Java社区的不断壮大,Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。

**作为一个平台,**Java虚拟机扮演着举足轻重的作用。除了 Java语言,任何一种能够被编译成字节码的计算机语言都属于Java这个平台。Groovy、Scala、 JRuby、Kotlin等都是Java平台的一部分,它们依赖于Java虚拟机,同时,Java平台也因为它们变得更加丰富多彩。

**作为一种文化,**Java几乎成为了 “开源”的代名词。在Java程序中,有着数不清的开源软件和框架。如Tomcat、Struts, Hibernate, Spring等。就连JDK和JVM自身也有不少开源的实现,如OpenJDK、Apache Harmony。可以说,“共享”的精神在Java世界里体现得淋漓尽致。

**作为一个社区,**Java拥有全世界最多的技术拥护者和开源社区支持,有数不清的论坛和资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之众多也令人咋舌。可以说,Java社区已经俨然成为了一个良好而庞大的生态系统。其实这才是Java最大的优势和财富。

1.3.2 Java 是最好的语言吗?

不是,因为在每个领域都有更合适的编程语言。

  • C 语言在现代计算机软件编程语言中具有非常重要的地位,几乎所有的操作系统都是 C 语言写成的。C++ 是面向对象的 C 语言,一直在不断的改进。C#由微软开发,以C为基础,面向对象,增加垃圾回收,更像Java。

  • JavaScript 是能运行在浏览器中的语言,丰富的前端界面离不开 Javascript 的功劳。近年来的 Node.js 又在后端占有一席之地。

  • Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。

  • Ruby 强于 DSL(领域特定语言),程序员可以定义丰富的语义来充分表达自己的思想。

  • Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。

  • Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。

  • 编写网页用 PHP,函数式编程有 Lisp,编写 iOS 程序有 Swift/Objective-C。

  • R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法

  • SQL 是用于访问和处理数据库的标准的计算机语言,这类数据库包括:MySQL,Oracle, Sybase, SQL Server, DB2, Access 等等

一句话概括,能留在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。

1.3.3 Java语言发展历史

Java诞生于1995年,由SUN公司(Sun Microsystems)推出,09年SUN被Oracle(甲骨文)收购。



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jsjt0d9M-1661509788436)(imgs\oracle.jpg)]


Java之父是詹姆斯.高斯林(James Gosling)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-41siszad-1661509788436)(imgs\image-20210727085728848.png)]

版本历史:

发行版本发行时间备注
Java1995.05.23Sun公司在Sun world会议上正式发布Java和HotJava浏览器
Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包
Java 1.11997.02.19
Java 1.21998.12.08拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.32000.05.08
Java1.42004.02.06
Java 5.02004.09.30①版本号从1.5改为5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 6.02006.12.112009.04.20 Oracle宣布收购SUN公司,收购价74亿美金
Java 72011.07.02
Java 82014.03.185.0版本以来最大变化的版本,长期支持版
Java 92017.09.22①每半年更新一次;②Java 9开始不再支持windows 32位系统
Java 102018.03.21
Java 112018.09.25JDK安装包取消独立JRE安装包,长期支持版
Java 122019.03.19
Java 132019.9.18
Java 142020.3.17

1.3.4 Java技术体系平台

  • JavaSE(Java Platform, Standard Edition标准版):允许您在桌面和服务器上开发和部署Java应用程序。Java提供了丰富的用户界面、性能、多功能性、可移植性和当今应用程序所需的安全性。
  • JavaEE(Java Platform, Enterprise Edition企业版):是为开发企业环境下的应用程序提供的一套解决方案,主要针对于Web应用程序开发。
  • JavaME(Java Platform, Micro Edition 小型版):为互联网上的嵌入式和移动设备上运行的应用提供了一个健壮、灵活的环境:微控制器、传感器、网关、移动电话、个人数字助理(PDA)、电视机顶盒、打印机等等。JavaME包括灵活的用户界面、健壮的安全性、内置的网络协议,以及支持动态下载的网络和离线应用程序。基于JavaME的应用程序在许多设备上都是可移植的,但是利用了每个设备的本机功能。
    • Java Embedded: 用于解锁物联网的智能设备的价值:
      通过远程市场更新和刷新功能延长产品生命周期和价值;
      利用Java的可伸缩性、健壮性、可移植性和全套功能,提高生产效率,降低成本,缩短上市时间;
      在边缘启用快速数据功能;
    • Java Card:使安全元件(如智能卡和其他防篡改安全芯片)能够承载采用Java技术的应用程序。Java card提供了一个安全的、可互操作的执行平台,它可以在一个资源受限的设备上存储和更新多个应用程序,同时保持最高的认证级别和与标准的兼容性。
    • Java TV:是一种基于JavaME的技术,它为开发在tv和机顶盒设备上运行的java应用程序提供了一个性能良好、安全且易于实现的解决方案。使用Java TV运行时,开发人员可以轻松创建应用程序,例如电子节目指南(EPG)、视频点播(VOD)客户端、游戏和教育应用程序、用于访问Internet数据的应用程序(例如天气、新闻播报器、社交网络)以及大多数蓝光光盘标题上的用户界面和奖金内容。

1.3.5 Java的主要应用领域

  • 企业级应用 :主要指复杂的大企业软件系统、各种类型网站后台系统。 Java的安全机制以及它的跨平台优势,使在分布式系统领域开发中有广泛应用。包括金融、电信、交通电子商务等。
  • 大数据平台开发 :各类框架有 Hadoop,spark ,storm,flink 等,就这类技术生态圈来讲,还有各种中间件如 flume ,kafka ,sqoop 等,这些框架以及工具大多数是用 Java 编写而成,但提供诸如 Java,scala ,Python,R等各种语言API供编程。
  • Android 移动平台应用 :Android应用程序使Java语言编写。Android开发水平的高低很大程度上取决于 Java语言核心能力是否扎实 。

1.3.6 Java语言的特点

  • 完全面向对象:Java语言支持封装、继承、多态,面向对象编程,让程序更好达到高内聚,低耦合的标准。

  • **支持分布式:**Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

  • **健壮型:**Java的强类型机制、异常处理 等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。

  • **安全:**Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。

  • **跨平台性:**Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。

1.4 Java语言跨平台原理

  • 跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系统上,这个特性称为Java语言的跨平台特性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。
  • JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的虚拟计算机,是Java程序的运行环境之一,也是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在JVM 之上。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-au7TwUkd-1661509788436)(imgs/跨平台.png)]

如图所示,Java的虚拟机本身是不具备跨平台功能的,每个操作系统下都有不同版本的虚拟机。

  • **JRE ** (Java Runtime Environment) :是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库
  • JDK (Java Development Kit):是Java程序开发工具包,包含JRE 和开发人员使用的工具。

我们想要运行一个已有的Java程序,那么只需安装JRE 即可。

我们想要开发一个全新的Java程序,那么必须安装JDK ,其内部包含JRE

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2dMoCPAo-1661509788437)(imgs/JDKJRE.jpg)]

JDK、JRE与JVM之间的关系

1561383524152

1.5 搭建开发环境

  1. 下载JDK

    官网地址:www.oracle.com

    详细地址:https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html

  2. 安装JDK

    “傻瓜式”安装,下一步即可。安装选项中可以取消公共jre,因为jdk中包含jre。

  3. 配置环境变量

    开发工具javac.exe等安装到了指定目录jdk\bin,使用时需要切换到指定目录bin下,配置环境变量可以在任意目录使用javac.exe等工具。后期也有一些基于java相关软件默认会通过环境变量配置寻找java。

    详细步骤参考文档JDK的下载、安装与配置

1.6 入门程序

1.6.1 Java程序开发三步骤

  1. **编写:**编写源代码,即编写java代码,保存为.java文件
  2. **编译:**执行javac命令,把java源文件编译生成.class字节码文件
  3. **运行:**执行java命令,运行生成的.class文件,得到程序结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yZlVdh94-1661509788437)(imgs/开发步骤.png)]

1.6.2 编写HelloWorld入门程序

  1. 编写Java源程序

    ​ 1)打开最简单文本编辑器:记事本,键入以下java代码(全英文字符,区分大小写):

    public class Hello {
      	public static void main(String[] args) {
        	System.out.println("Hello World");
      	}
    }
    

    ​ 2)保存文件路径为D:\ ,保存的完整的文件名修改为Hello.java(注意确认系统中文件有没有默认隐藏后缀)。

  2. 编译Java源文件

    在CMD命令行中,进入D:\目录,使用javac 命令编译源文件。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XyqdQjB3-1661509788437)(imgs\编译.png)]

    命令行没有任何提示,表示编译成功。

    成功后再D:\目录,产生了一个新的文件 Hello.class,该文件就是可以运行的字节码文件

  3. 运行Java程序

    在CMD命令行中,进入Java源文件的目录D:\,使用java 命令进行运行。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q2UgCrgp-1661509788438)(imgs\HelloWorld运行结果.png)]

    友情提示:java Hello 不要写 不要写 不要写 .class

1.6.3 程序简单说明

  • Java程序的结构:
{
    方法{
        语句;
    }
}

注意:1.类{}是一个可执行程序的最小单元。2.括号都是成对出现的。

  • Java程序的入口:

Java程序执行需要有个起始点或入口,即main方法

public static void main(String[] args){   
}

注意:如果拼写错误会导致找不到主方法

  • 输出语句:

    如果想要跟计算机来个互动,比如让他输出一句话:

    System.out.println("Hello World");
    

    此行代码表示,在控制台打印输出一句话,即双引号内部的内容,可以自己尝试修改看看。

1.7 常见问题及解决

1. 代码拼写错误

  • 单词拼写问题,Java语言是一门严格区分大小写的语言
  • 正确:class 错误:Class
  • 正确:String 错误:string
  • 正确:System 错误:system
  • 正确:main 错误:mian
  • 标点符号使用问题
  • 不能用中文符号,英文半角的标点符号(正确)
  • 括号问题,要成对出现

2. 源文件名问题

源文件名有问题会导致编译时找不到文件

可能的原因:

  • ​ 文件路径错误
  • ​ 文件名拼写错误
  • ​ 文件名后缀不是.java
  • ​ 类名声明为public时,必须要与文件名相同

(1)源文件名是否必须与类名一致?public呢?

如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。
如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。
我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。

(2)一个源文件中是否可以有多个类?public呢?

一个源文件中可以有多个类,编译后会生成多个.class字节码文件。
但是一个源文件只能有一个public的类。

(3)main方法必须在public的类中吗?

不是。
但是后面写代码时,基本上main方法(主方法)习惯上都在public类中。

3. 字符编码问题

(比如使用notepad编辑器时)

当cmd命令行窗口的字符编码与.java源文件的字符编码不一致(cmd命令行窗口默认GBK,nopad默认utf-8),如何解决?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6jOcJdz-1661509788438)(imgs/命令行编译乱码.png)]

解决方案一:

在Notepad++等编辑器中,修改源文件的字符编码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DKnL5xtP-1661509788438)(imgs/Notepad修改源文件字符编码.png)]

解决方案二:

在使用javac命令式,可以指定源文件的字符编码
javac -encoding utf-8 Review01.java

练习

在控制台输出个人信息:

姓名:张三

年龄:18

性别:男

爱好:女

简介······

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值