JAVA SE复习(第1章 Java概述)

news2025/1/11 14:01:31

本文笔记来自硅谷柴林燕老师的笔记 只为自己看笔记方便使用  不做他用

目录

第1章 Java概述

1.1 Java语言发展历史(记关键点)

1.2 Java语言特点(后面需要关注和体会)

1.3 Java语言跨平台原理(理解)

1、Java语言跨平台原理

2、JVM、JRE、JDK的关系

1.4 Java语言开发环境(会操作)

1、JDK的下载

2、JDK的安装

3、配置环境变量

1.5 HelloWorld(动手实现)

1.5.1 开发说明

1.5.2 常见错误(会解决错误)


第1章 Java概述

1.1 Java语言发展历史(记关键点)

Java诞生于SUN(Stanford University Network),09年SUN被Oracle(甲骨文)收购。

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

1996年发布JDK1.0版。大约26年。

1.2 Java语言特点(后面需要关注和体会)

(1)优点

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

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

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

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

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

(2)缺点

  • 语法过于复杂,严谨,对程序员的约束比较多,与python和php等相比入门相对较难。但是一旦学会了,就业岗位需求量大,而且薪资待遇节节攀升。

  • 一般适用于大型网站开发,整个架构会比较重,对于初创公司开发和维护人员的成本比较高(即薪资高),选择用Java语言开发网站或应用系统的需要一定的经济实力。

1.3 Java语言跨平台原理(理解)

1、Java语言跨平台原理

很多时候,我们写的程序可能要在多个操作系统运行,这个时候就要求我们的程序需要在尽可能不改动的情况下完实现这个目标。不同的语言实现跨平台的方式不同。Java语言实现跨平台是建立在“虚拟机”基础之上的。

在Java出现之前,最为流行的编程语言是C和C++。如果我们想要在一台使用x86_64指令集的CPU的机器(如个人PC)上运行一个C语言程序,就需要编写一个将C语言翻译成x86_64汇编语言的编译器。如果想要在一台使用arm指令集的CPU的机器(如苹果手机)上,运行一个C语言程序,同样需要编写一个将C语言翻译成arm汇编语言的编译器。这样严重影响了C程序的跨平台性,因为针对特定的指令集开发编译器是一个难度非常大的工作。

那么Java是如何解决这个问题的呢?Java设计了一套简洁的虚拟指令集,也就是字节码。如果我们想要在一台机器上运行Java程序,只需要将Java程序编译成字节码就可以了。编写一个将Java程序翻译成Java字节码的编译器,比起编写一个将Java程序翻译成x86_64指令集的编译器来说,要简单得多。可是这里产生了一个问题,难道我们的机器可以直接执行字节码这样的虚拟指令集吗?当然是不能的。我们需要针对不同的指令集,开发对应的字节码解释器。这个工作同样比较简单。

 

Java虚拟机(JVM,Java Virtual Machine)是由软件技术模拟出计算机运行的一个虚拟的计算机,它负责解释执行字节码指令集。也就是说,只要一台机器可以运行Java的虚拟机,那么就能运行Java语言编写的程序。而不同的平台,需要安装不同的Java虚拟机程序。那么我们编写完Java程序之后,需要先将.java的源文件编译为.class的字节码文件,然后在Java虚拟机中来执行这些字节码文件。  

Java虚拟机的设计不仅仅解决了Java程序跨平台的问题,同时解决了很多语言的跨平台问题。

 

  • .NET(C#,VB等语言)也有虚拟机,也能实现跨平台,但是只能在Windows操作系统下安装.NET环境。

  • C++不受虚拟机的限制,但是需要用不同平台的编译器重新编译一次。需要编写n个版本的编译器。

  • Java虚拟机可以配置在MacOS,Windows(PC操作系统),Linux等上,但是不能配置在WP(Windows Phone),IOS(移动操作系统)上,只能配置在android(移动操作系统)。Java程序可以实现一次编译处处运行。

 

2、JVM、JRE、JDK的关系

  • JVM(Java Virtual Machine ):Java虚拟机,是运行所有Java程序的假想计算机,是Java程序的运行环境之一,也是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在JVM 之上。

  • JRE (Java Runtime Environment) :是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库

  • JDK (Java Development's Kit):是Java程序开发工具包,包含JRE 和开发人员使用的工具。

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

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

 

1.4 Java语言开发环境(会操作)

1、JDK的下载

  • 下载网址:www.oracle.com

  • 下载步骤:

    • 登录Oracle公司官网,www.oracle.com,如图所示:在底部选择Developers开发者

 

Developers页面中间的技术分类部分,选择Java,单击进入,如图所示:

展示的是最新Java版本,例如Java17。单击Download Java,然后选择具体的版本下载。  

 

选择Download Java按钮后  

 

 选择Accept License Agreement

注册或登录后下载

 

2、JDK的安装

  • 安装步骤:

    • 双击jdk-8u202-windows-x64.exe文件,并单击下一步,如图所示:

 

取消独立JRE的安装,单击公共JRE前的下拉列表,选择此功能将不可用如图所示:  

修改安装路径,单击更改,如图所示  

将安装路径修改为D:\develop\Java\jdk1.8.0_202\,并单击确定,如图所示:  

单击下一步,如图所示:

 

稍后几秒,安装完成,如图所示:  

目录结构,如图所示:

3、配置环境变量

为什么配置path?

希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。

例如:我们在C:\Users\Irene目录下使用java命令,结果如下:

我们在JDK的安装目录的bin目录下使用java命令,结果如下:  

我们不可能每次使用java.exe,javac.exe等工具的时候都进入到JDK的安装目录下,太麻烦了。我们希望在任意目录下都可以使用JDK的bin目录的开发工具,因此我们需要告诉操作系统去哪里找这些开发工具,这就需要配置path环境变量。  

方案一:只配置path

  • 步骤:

    • 打开桌面上的计算机,进入后在左侧找到计算机,单击鼠标右键,选择属性,如图所示:

选择高级系统设置,如图所示:

 

高级选项卡,单击环境变量,如图所示:  

系统变量中,选中Path 环境变量,双击或者点击编辑 ,如图所示:  

在变量值的最前面,键入D:\develop\Java\jdk1.8.0_202\bin; 分号必须要写,而且还要是英文符号。如图所示:  

环境变量配置完成,重新开启DOS命令行,在任意目录下输入javac 命令,运行成功。  

方案二:配置JAVA_HOME+path

  • 步骤:

    • 打开桌面上的计算机,进入后在左侧找到计算机,单击鼠标右键,选择属性,如图所示:

 选择高级系统设置,如图所示:

高级选项卡,单击环境变量,如图所示:  

系统变量中,单击新建 ,创建新的环境变量,如图所示:  

变量名输入JAVA_HOME,变量值输入 D:\develop\Java\jdk1.8.0_202 ,并单击确定,如图所示:  

选中Path 环境变量,双击或者点击编辑 ,如图所示:  

在变量值的最前面,键入%JAVA_HOME%\bin; 分号必须要写,而且还要是英文符号。如图所示:  

环境变量配置完成,重新开启DOS命令行,在任意目录下输入javac 命令,运行成功。  

1.5 HelloWorld(动手实现)

1.5.1 开发说明

1、程序开发步骤说明

JDK安装完毕,可以开发我们第一个Java程序了。

Java程序开发三步骤:编写编译运行

 

2、编写Java源程序保存.java源文件

  1. D:\atguigu\javaee\JavaSE20190624\code\day01_code 目录下新建文本文件,完整的文件名修改为HelloWorld.java,其中文件名为HelloWorld,后缀名必须为==.java==。

  2. 用notepad++等文本编辑器打开(虽然是记事本也可以,但是不够没有关键字颜色标识,不利于初学者学习)

  3. 在文件中输入如下代码,并且==保存==

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

    友情提示:

    每个字母和符号必须与示例代码一模一样。

    第一个HelloWord 源程序就编写完成了,但是这个文件是程序员编写的,JVM是看不懂的,也就不能运行,因此我们必须将编写好的Java源文件 编译成JVM可以看懂的字节码文件 ,也就是.class文件。

  4. 3、编译Java源文件生成.class字节码文件

    在DOS命令行中,进入D:\atguigu\javaee\JavaSE20190624\code\day01_code目录,使用javac 命令进行编译。

    方式一:使用文件资源管理器打开D:\atguigu\javaee\JavaSE20190624\code\day01_code目录,然后在地址栏输入cmd。

    方式二:在notepad++软件的文件菜单-->打开所在文件夹-->命令行(要求notepad++软件必须是用管理员权限启动的,否则会出现已经正确配置了环境变量,却仍然找不到javac命令的问题)  

    命令:  

    javac Java源文件名.后缀名

    举例:

    javac HelloWorld.java

    编译成功后,命令行没有任何提示。打开D:\atguigu\javaee\JavaSE20190624\code\day01_code目录,发现产生了一个新的文件 HelloWorld.class,该文件就是编译后的文件,是Java的可运行文件,称为字节码文件,有了字节码文件,就可以运行程序了。

    Java源文件的编译工具javac.exe

    4、运行Java程序

    在DOS命令行中,在字节码文件目录下,使用java 命令进行运行。

命令:

java 主类名

主类是指包含main方法的类,main方法是Java程序的入口:

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

举例:

java HelloWorld

友情提示:

java HelloWord 不要写 不要写 不要写 .class

Java字节码文件的运行工具:java.exe  

1.5.2 常见错误(会解决错误)

1、书写错误

  • 单词拼写问题

    • 正确:class 错误:Class

    • 正确:String 错误:string

    • 正确:System 错误:system

    • 正确:main 错误:mian

  • Java语言是一门严格区分大小写的语言

  • 标点符号使用问题

    • 不能用中文符号,英文半角的标点符号(正确)

    • 括号问题,成对出现

2、Java程序的结构与格式

结构:

类{
    方法{
        语句;
    }
}

格式:

(1)每一级缩进一个Tab键

(2){}的左半部分在行尾,右半部分单独一行,与和它成对的"{"的行首对齐

3、字符编码问题

当cmd命令行窗口的字符编码与.java源文件的字符编码不一致,如何解决?

解决方案一:  

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

解决方案二:  

在使用javac命令式,可以指定源文件的字符编码

javac -encoding utf-8 Review01.java

4、大小写问题

(1)源文件名:

 在Windows操作系统中.java的源文件名不区分大小写,我们建议大家养成区分大小写的习惯。

(2)字节码文件名与类名

 严格区分大小写

(3)代码中

 严格区分大小写

5、源文件名与类名一致问题?

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

如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。

如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。

我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。

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

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

但是一个源文件只能有一个public的类。

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

不是。

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4. 网络编程之TCP编程

1. 《计算机网络编程》 我们接触网络编程,肯定是要对网络编程的一些专业术语及基本理论知识是要有所认知的。python网络编程无非是在这些基础理论知识之上给我们提供了一些方便实用的网络库来供我们使用。尽管做了非常底层的封装,并且给我们暴露了上层的…

java IO流之缓冲流详解

缓冲流概述 缓冲流也称为高效流或者高级流。之前我们学习的字节流、字符流可以成为基本流。 作用:缓冲流自带缓冲区、可以提高基本字节流、字符流读写数据的性能。 分类: BufferedInputStream -->字节缓冲输入流 BufferedOutputStream–>字节缓冲输…

ch1_1计算机系统概论

1. 内容安排 1.1 概论 1.2 计算机系统的硬件结构 存储器,I/O 输入与输出;系统总线;CPU 1.3 第三篇 CPU 中央处理器中,所包含的内容: ALU, CUCPU 内部互连寄存器 1.4 CU CU : control uni…

最新虚幻5引擎(UE5)游戏性能的影响详解

Unreal Engine 5 是由 Unreal Engine 公司开发的一款游戏引擎。5 代表引擎的主要版本号。它专为创建多人在线游戏、手机游戏、高端游戏和虚幻应用程序而设计。从图中可以看出,随着场景复杂度的增加,UE5的内存占用会逐渐增加。当然,这并不意味…

Redis简介、数据类型和命令

1 Redis 简介Redis 是一个高性能的 key/value 数据库。它是完全开源免费的,并且遵守 BSD 协议。1.1 Redis 特点不仅支持 key/value 类型的数据,也支持 list,hash,set,zset 等等数据结构。支持持久化,可以把内存数据保存到磁盘上,重…

高并发异步多线程处理例子

用户请求流程 问题点 tomcat 线程资源占满,由于tomcat线程资源有限,每个请求都会经由tomcat线程处理,阻塞至web层处理完才能回收再利用。web层分发至后端服务可能会扩大几倍甚至数百倍的,譬如用户发起请求1w/s,到后端…

JavaEE10-Spring Boot配置文件

目录 1.配置文件作用 2.配置文件的格式 为配置文件安装提示插件 2.1. .properties(旧版,默认的) 2.1.1.基本语法 PS:配置文件中使用"#"来添加注释信息,2种添加方式: 2.1.2.缺点分析 2.2. .yml&#…

阿里“云开发“小程序(uniCloud)

博主ps: 网上资料少的可怜,哎,腾讯云涨价了,论服务器,我肯定选的阿里,再着你们对比下uniCloud的报价就知道了,如果有钱就另当别论了。 所以这片博文,博主试过之后,先抛出…

Git速成指南

文章目录版本管理工具概念版本管理工具介绍版本管理发展简史SVN(SubVersion)GitGit工作流程图Git安装基本配置为常用指令配置别名(可选)解决GitBash乱码问题Git常用命令获取本地仓库基础操作指令查看修改的状态(status)添加工作区…

[翻译]PostgreSQL中的WAL压缩以及版本15中的改进

[翻译]PostgreSQL中的WAL压缩以及版本15中的改进从以开始就一直在尝试对WAL进行不同级别的压缩。自2016年以来内置功能(wal_compression)就一直存在,几乎所有备份工具都会在传递到备机前对WAL进行压缩。但现在是时候再看看内置的wal_compress…

呦~,这不 SVG 映射反爬么,这你都会?厉害厉害 | 案例 25

在正式学习本篇博客前,先要了解一下什么是 SVG(Scalable Vector Graphics),它是一种矢量图形格式,可以用来在网页上创建可伸缩的图形。 使用 SVG 技术实现反爬虫的方法有以下几种: 验证码:使用…

imx6ull Linux使用设备树配置LED

我们基于寄存器的方式已经编写了LED驱动,实现点亮/熄灭LED,但是你有没有发现一个问题,就是假设LED修改了一个GPIO,那么需要对应的修改寄存器代码,非常繁琐,而且随着改板次数增加,那么会带来一个…

从零开始的数模(五)插值与拟合

目录 一、概念 二、 插值 2.1方法 2.2MATLAB实现 例题1 ​编辑例题2 2.3python实现 2.3.1例题一的python解法 2.3.2二维网格节点插值 例题四 三、拟合篇: 3.1MATLAB实现 3.2python实现 一、概念 二、 插值 2.1方法 2.2MATLAB实现 在MATLAB中提供了一些…

带滤波器的PID控制仿真-2(M语言)

被控对象为三阶传递函数:低通滤波器为:采样时间为1ms,噪声信号加在对象的输出端。分三种情况进行:M1 时,为未加噪声信号;M2时,为加噪声信号未加滤波;M3时,为加噪声信号加滤波。阶跃响应结果如图1&#xff5…

【论文精读】KD-MVS

今天读的是发表在ECCV2022上的自监督MVS文章,作者来自于旷视科技和清华大学。 文章链接:arxiv 代码链接:https://github.com/megvii-research/KD-MVS 目录Abstract1. Introduction2. Related work3. Methodology3.1 Self-supervised Teacher …

51单片机七人多数表决器仿真设计( proteus仿真+程序+报告+讲解视频)

51单片机七人多数表决器仿真设计( proteus仿真程序报告讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0033 51单片机七人多数表决器仿真设计视频讲解1.主要功能:2.仿真3.…

Java:Mybatis的使用

一、Mybatis的概述 MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发。 MyBatis中文官网:https://mybatis.org/mybatis-3/zh/getting-started.html 二、Mybatis快速入门 1、创建user表,添加数据 create database mybatis; use mybati…

英语语法大全

文章目录一、主语1、名词、代词和动词做主语2、主语从句做主语,谓语动词用单数3、主语从句练习二、谓语动词1、谓语动词种类2、主谓一致三、宾语1、单宾语2、双宾语3、复合宾语4、宾语从句四、定语1、定语从句2、定语从句的翻译五、状语1、分词做状语2、独立主格结构…

42.Isaac教程--超像素

超像素 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 超像素是一组外观相似的相连像素。 超像素分割将图像分成数百个不重叠的超像素(而不是数千或数百万个单独的像素)。通过使用超像素,您可以在更有意义的区…

ESP-C3入门2. Clion+IDF 开发环境搭建

ESP-C3入门2. ClionIDF 开发环境搭建一、准备工作二、Clion配置过程1. 使用idf.py命令创建一个范例工程2. 使用Clion打开项目,修改CMakeLists.txt3. 设置交叉编译工具链4. 设置CMake5. 对cmake一些路径进行修改。三、编译及烧录1. 编译2. 烧录3. 查看输出一、准备工…