第一章 JAVA入门

news2025/1/18 3:47:30

文章目录

  • 1.2 Java 的特点
  • 1.2.1 简单
  • 1.2.2 面向对象
  • 1.2.3 与平台无关
  • ① 平台与机器指令
  • ② C/C++程序依赖平台
  • ③ Java 虚拟机与字节码
  • 1.2.4 多线程
  • 1.2.5 动态
  • 1.30安装 JDK
  • 1.3.1 平台简介
  • 0 Java SE
  • ②Java EE
  • 1.4 Java 程序的开发步骤
  • ②保存源文件
  • 1.5.2 编译
  • 1.8 Java之父-James Gosling
  • 1.9 小结

1.2 Java 的特点

Java是目前使用最为广泛的网络编程语言之一,它具有语法简单、面向对象、稳定、与平台无关、多线程、动态等特点,与平台无关是Java最初风靡世界的最重要的原因。

1.2.1 简单

如果读者学习过C++语言,会感觉Java很眼熟,因为Java中许多基本语句的语法和C++语言是一样的,像常用的循环语句、控制语句等几乎和C++相同。需要注意的是,Java和C++是完全不同的语言,Java和C++各有各的优势,将会长期并存下去,Java语言和C++语言已经成为软件开发者应当掌握的基础语言。如果从语言的简单性方面看,Java要比C++简单,C++中许多容易混淆的概念或者被Java弃之不用了,或者以一种更清楚、更容易理解的方式实现,例如Java中不再有指针的概念。

1.2.2 面向对象

基于对象的编程更符合人的思维模式,使人们更容易解决复杂的问题。Java是面向对象的编程语言,本书将在第4~7章详细、准确地介绍类与对象、子类与继承、接口与实现以及内部类与异常类等重要概念。

1.2.3 与平台无关

Java语言的出现源自对独立于平台的语言的需要,希望用这种语言能编写出可嵌入各种家用电器等设备的芯片上且易于维护的程序。但是,人们发现当时的编程语言(例如C、C++)有一个共同的缺点,那就是只能对特定的中央处理器(Central Processing Unit,CPU)芯片进行编译。这样,一旦电器设备更换了芯片就不能保证程序的正常运行,就可能需要修改程序并针对新的芯片重新进行编译。

Java语言和其他语言相比,最大的优势就是编写的软件能在执行码上兼容,在所有的计算机上运行。Java之所以能做到这一点,是因为Java可以在计算机的操作系统之上再提供一个Java运行环境(Java Runtime Environment JRE).该运行环境由Java虚拟机(JavaVirtual Machine,JVM)、类库以及一些核心文件组成,也就是说,只要平台提供了Java 运行环境,用Java 编写的软件就能在其上运行

① 平台与机器指令

无论用哪种编程语言编写的应用程序,都需要经过操作系统和处理器来完成程序的运行,因此这里所指的平台由操作系统(Operating System,OS)和中央处理器(CPU)所构成。与平台无关是指软件的运行不因操作系统、中央处理器的变化而无法运行或出现运行错误。

每个平台都会形成自己独特的机器指令。所谓平台的机器指令,就是可以被该平台直接识别、执行的一种由0.1组成的序列代码。相同的CPU和不同的操作系统所形成的平台的机器指令可能是不同的。例如,某种平台可能用8位序列代码00001111表示加法指令,用10000001表示减法指令;而另一种平台可能用8位序列代码10101010表示加法指令,用10010011表示减法指令。

② C/C++程序依赖平台

现在分析一下为何用C/C++语言编写的程序可能因为操作系统的变化、中央处理器升级导致程序出现错误或无法运行。

C/C++针对当前C/C++源程序所在的特定平台对其源文件进行编译、连接,生成机器指令,即根据当前平台的机器指令生成可执行文件,那么可以在任何与当前平台相同的平台上运行这个可执行文件。但是,不能保证C/C++源程序所产生的可执行文件在所有的平台上都能正确地被运行,其原因是不同平台可能具有不同的机器指令(如图 1.2 所示)。因此,如果更换平台,可能需要修改源程序,并针对新的平台重新编译源程序。

在这里插入图片描述

③ Java 虚拟机与字节码

Java语言和其他语言相比,最大的优势就是它与平台的无关性。这是因为Java可以在平台之上再提供一个Java 运行环境,该Java 运行环境由Java虚拟机、类库以及一些核心文件组成。Java虚拟机的核心是所谓的字节码指令,即可以被Java虚拟机直接识别、执行的一种由0.1组成的序列代码,字节码并不是机器指令,因为它不和特定的平台相关,不能被任何平台直接识别、执行。Java针对不同平台提供的Java虚拟机的字节码指令都是相同的,例如所有的虚拟机都将11110000识别、执行为加法操作。

和C/C++不同的是,Java语言提供的编译器不针对特定的操作系统和CPU芯片进行编译,而是针对Java虚拟机把Java源程序编译成称为字节码的“中间代码”,例如Java源文件中的+被编译成字节码指令 11110000。字节码是可以被Java虚拟机识别、执行的代码,即Java虚拟机负责解释、运行字节码,其运行原理是Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台运行该机器码,如图1.3所示。
在这里插入图片描述

在一个计算机上编译得到的字节码文件可以复制到任何一个安装了Java运行环境的计算机上直接使用。字节码由Java虚拟机负责解释、运行,即Java虚拟机负责将字节码翻译成本地计算机的机器码,并将机器码交给本地的操作系统运行

1.2.4 多线程

Java 的特点之一就是内置了对多线程的支持。多线程允许同时完成多个任务。实际上多线程使人产生多个任务在同时执行的错觉,因为目前计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,由于处理器的运行速度非常快,远远超过了人接收信息的速度,所以给人的感觉好像多个任务在同时执行。C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。

1.2.5 动态

在学习了第4章之后,读者就会知道Java程序的基本组成单元就是类,有些类是用户自己编写的,有些是从类库中引入的,而类又是在运行时动态装载的,这就使得Java可以在分布式环境中动态地维护程序及类库。C/C++在编译时就将函数库或类库中被使用的函数、类同时生成机器码,那么每当其类库升级之后,如果C/C++程序想具有新类库提供的功能,程序就必须重新修改、编译。

1.30安装 JDK

Java要实现“编写一次,到处运行(write once,run anywhere)”的目标,就必须提供相应的Java运行环境,即运行Java程序的平台。

1.3.1 平台简介

0 Java SE

Java SE(曾称为J2SE)称为Java标准版或Java标准平台。Java SE提供了标准的JavaDevelopment Kit(JDK)。利用该平台可以开发Java 桌面应用程序和低端的服务器应用程序。当前较新的JDK版本为JDK 14。

②Java EE

Java EE(曾称为J2EE)称为Java企业版或Java企业平台。使用Java EE可以构建企业级的服务应用,Java EE平台包含了Java SE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。

1.4 Java 程序的开发步骤

在这里插入图片描述

①编写源文件

使用一个文本编辑器,例如记事本(可以在Windows附件中找到记事本notepad)来编写源文件。注意,不可使用非文本编辑器,例如Word编辑器。另外,要将编写好的源文件保存起来,源文件的扩展名必须是.java。

②编译源文件

使用Java 编译器(javac.exe)编译源文件,得到字节码文件。

③运行程序

使用Java SE平台中的Java解释器(java.exe)来解释、执行字节码文件。

②保存源文件

如果源文件中有多个类,那么最多有一个类是 public类;如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是,java;如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以了。

1.5.2 编译

在保存了Hello,java 源文件之后,就可以使用Java 编译器(javac.exe)对其进行编译。

使用JDK环境开发Java程序需打开MS-DOS命令行窗口(在Windows系统中称命令提示符),可以单击计算机左下角的“开始”,在“Windows系统”下找到“命令提示符”选项,单击该选项打开MS-DOS命令行窗口;或右击计算机左下角的“开始”,找到“运行”选项,单击该选项,在弹出的对话框中输入“cmd”,打开MS-DOS命令行窗口。用户需要掌握几个简单的DOS操作命令:从逻辑分区C转到逻辑分区D,需在命令行中依次输入D和冒号并回车确认;进入某个子目录(文件夹)的命令是“cd目录名”;退出某个子目录的命令是“cd…”,例如从目录 example 退到目录 boy 的操作是“C:\boy>example> cd…”。

1.8 Java之父-James Gosling

1990年Sun公司成立了由James Gosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统及各种CPU芯片上的代码。他们的精心研究和努力促成了Java语言的诞生。1995 年5 月 Sun公司推出的Java DevelopmentKit 1. 0a2版本标志着Java的诞生。美国的著名杂志PC Magazine将Java语言评为1995年十大优秀科技产品之一。Java的快速发展得益于Internet和Web的出现,Internet上的各种不同计算机可能使用完全不同的操作系统和CPU芯片,但仍希望运行相同的程序,Java的出现标志着分布式系统的真正到来。

1.9 小结

(1)Java语言是面向对象编程语言,编写的软件与平台无关。Java语言涉及网络、多线程等重要的基础知识,特别适合于Internet应用的开发。很多新的技术领域都涉及了Java语言,学习和掌握Java已成为人们的共识。

(2) Java源文件由若干个书写形式互相独立的类组成。开发一个Java程序需经过3个步骤,即编写源文件、编译源文件生成字节码和加载运行字节码。

(3)编写代码务必遵守行业的习惯及风格。

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

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

相关文章

spring boot+redis整合基础入门

文章目录 前言准备依赖项配置文件redis模板类注入设置序列化方式 实施基础字符串操作、超时设置Hash操作hash的使用场景以及优缺点 列表操作列表操作的应用场景以及优缺点 Set的基础操作Set类型的业务场景以及优缺点Demo地址 总结 前言 最近项目中有用到redis进行一些数据的缓…

【Linux】编译器 gcc/g++

1、背景知识 (1)[LMYhecs-38755 ~]$ gcc code.c -o code.exe -stdc99【-o 生成指定名字的可执行文件,-stdc99 以 C99 的标准执行程序】 (2)安装 g,yum install gcc-c 2、gcc如何完成 (1&#x…

如何使用 Node.js和Express搭建服务器?

如何使用NodeJs搭建服务器 1. 准备工作1.1 安装Node.js 2. 安装express2.1 初始化package.json2.2 安装express2.3 Express 应用程序生成器 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段…

前端面试合集(三——浏览器)

浏览器的页面渲染 1.浏览器是如何渲染页面的?2. 什么是reflow(重排)?3. 什么是repaint(重绘)?4.为什么transform效率高? 1.浏览器是如何渲染页面的? 当浏览器的网络线程收到HTML文档之后&#…

Leetcode刷题_链表相关_c++版

&#xff08;1&#xff09;92反转链表–中等 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 /*** Definition for singly-linked list.* struct Lis…

Claude: ChatGPT替代大语言模型

【产品介绍】 Claude是Anthropic推出的类ChatGPT大语言模型&#xff0c;也是一个AI人工智能助理&#xff0c;可以帮助各种行业的用户处理工作&#xff0c;如客户服务、法律、教练、搜索和销售。Claude可以通过聊天界面和API进行访问&#xff0c;能够完成各种对话和文本处理任务…

计算机二级知识点整理

翻到了之前准备计算机二级的笔记&#xff0c;现在给大家分享出来。 一、基本知识&#xff1a; 计算机把完成一条指令所花费的时间称为一个指令周期结构化程序设计强调的是程序的易读性boolean类型不能转为其他基本类型数据表达式是由运算符和运算对象构成的&#xff0c;#不是…

SimpleCG程序交互操作

前言 之前所有示例程序都是属于展示型的&#xff0c;只是作为展示板输出使用&#xff0c;不涉及键盘和鼠标的输入交互&#xff0c;下面我们开始接触具有交互功能的程序。 没有交互功能的程序可以满足一定需求,不过大部分的程序是不能脱离交互功能的。程序依据使用者的操作进行相…

Error response from daemon

文章目录 遇到的问题解决方法参考 遇到的问题 当输入下面的指令时 docker pull xxxxxx解决方法 打开/etc/docker/daemon.json文件 vim /etc/docker/daemon.json写入以下内容&#xff1a; {"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]…

OpenCV 图像像素运算操作

加法操作详解 加减乘除 #include <opencv2/opencv.hpp>using namespace cv;int main() {Mat image imread("image.jpg");if (image.empty()) {std::cout << "无法加载图像" << std::endl;return -1;}// 加法变换Mat addResult;add(ima…

mac在vscode编码过程中输入()光标在里面的时候想移出来还得动用左右键很麻烦有什么快捷方法

下载vscode插件: 想跳出大括号的时候就可以使用tab直接跳出来就行了

Buuctf web [SUCTF 2019]EasySQL

又是一道考察sql注入的题 1、起手试探 &#xff08;主要看看输入什么内容有正确的回显&#xff09; 1 0 1 1 # 发现只有在输入1的情况下有正常的回显,输入0或其他字符都没有回显&#xff0c;所以这题就要尝试堆叠注入了。 ps&#xff1a;&#xff08;如果想尝试其他注入方法…

带你打穿三层内网-红日靶场七

文章目录 前记环境配置web1信息搜集cve-2021-3129redis未授权|ssh密钥后渗透 Win7&#xff08;PC1&#xff09;永恒之蓝 web2docker逃逸 win7&#xff08;PC2&#xff09;|DC 前记 所用工具 msfcsvenomfrp蚁剑冰蝎laravel.pyfscan 注意事项 msf的永恒之蓝每次都需要两次才能…

VM-Linux基础操作命令

命令执行的本质&#xff1a; 当输入命令&#xff08;单词&#xff09;后敲击回车的那一刻。它就会立刻到以下图片&#xff0c;变量中的文件中去找对应的可执行文件 此路径又叫环境变量 1.shell命令提示符 默认&#xff1a;[rootlocalhost ~]# root&#xff1a;现已登录的账户名…

重构优化第三方查询接口返回大数据量的分页问题

# 问题描述 用户线上查询其上网流量详单数据加载慢&#xff0c;且有时候数据没有响应全~ 1、经排除是调用第三方数据量达10w条响应会超时&#xff0c;数据没正常返回 2、现有线上缓存分页也是加载慢数据不能正常展示 3、第三方接口返回类似报文jsonj&#…

基于Yolov8的光伏电池缺陷检测,引入ICCV2023 动态蛇形卷积和独家全网首发多维协作注意模块MCA,实现涨点创新十足

1.光伏电池缺陷数据集介绍 背景&#xff1a;太阳能作为一种极具吸引力的替代电力能源&#xff0c;太阳能光伏电池&#xff08;即光伏电池&#xff09;是太阳能发电系统的基础&#xff0c;一般情况下&#xff0c;电池中的各类缺陷会直接影响到光伏电池的光电转化效率和使用寿命…

Mybatis-Genertor逆向工程

1、导入mybaties插件 <build><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.2</version><dependencies><dependency>…

Android Fragment

基本概念 Fragment是Android3.0后引入的一个新的API&#xff0c;他出现的初衷是为了适应大屏幕的平板电脑&#xff0c; 普通手机开发也会加入这个Fragment&#xff0c; 可以把他看成一个小型的Activity&#xff0c;又称Activity片段&#xff01; 如果一个很大的界面&#xff…

视频直播点播平台EasyDSS创建用户详细操作来啦!

视频推拉流EasyDSS视频直播点播平台&#xff0c;集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体&#xff0c;可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 由于旭帆科技的EasyDSS平台支持新建用户&#xff0c;但新建时用户…

Python 图片处理笔记

import numpy as np import cv2 import os import matplotlib.pyplot as plt# 去除黑边框 def remove_the_blackborder(image):image cv2.imread(image) #读取图片img cv2.medianBlur(image, 5) #中值滤波&#xff0c;去除黑色边际中可能含有的噪声干扰#medianBlur( Inp…