1. 认识Java

Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

1.1 Java的发展历史

Java 语言源于 1991 年 4 月,Sun 公司 James Gosling 博士领导的绿色计划(Green Project) 开始启动,此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个就是Java的前身: Oak (得名与Java创始人James Gosling办公室外的一棵橡树),但由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1995年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布,并提出“Write once, Run anywhere" 的口号。

1.2 Java的语言特性

• 简单性
Java语法是C++语法的一个“纯净版本”,相当于对C++做了一个减法。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。

 面向对象
在Java的世界里,一切皆对象。比如:人、狗、手机、电脑等都是对象。所谓面向对象,就是依靠对象之间的交互来完成事情,比如:人用手机网上购物,狗吃骨头。Java的面向对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。在Java中,取而代之的是更简单的接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。

 分布式(微服务)
Java有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。

 健壮性
Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性(对于曾经花费几个小时来检查由于指针bug而引起内存冲突的人来说,一定很喜欢Java的这一特性)。不仅如此,Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。

 安全性
Java适用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防篡改的系统。从一开始,Java就设计成能够防范常见的各种攻击:运行时堆栈溢出;蠕虫和病毒常用的攻击手段;破坏自己进程空间之外的内存;未经授权读写文件……

 体系结构中立
编译器生成一个体系结构中立的目标文件格式,按照该格式规范生成的文件,只要有Java运行时系统,这些编译后的代码就可以在许多处理器上运行。而且其他语言编写的程序,在编译后如果能够严格按照字节码文件的规范生成.class文件,也可以在JVM上运行。
Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。这就是为什么可以:“Wrice once,Run anywhere”。

 可移植性
与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。例如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。

 解释性
Java为了实现与平台无关,自己维护了一套基于栈架构的指令集,Java源代码经过编译之后,字节码文件中的指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为Java程序在执行时,Java解释器会逐条的将字节码文件中的指令翻译成CPU的指令集。

 高性能
边解释边执行,垃圾会说等导致了Java代码运行效率偏低,近年来JVM也在不断的优化,比如:JIT(即时编译器),热点代码探测,让Java程序的执行效率大幅提高,在有些场合不亚于C/C++。

 多线程
Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作。

 动态性
Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客户端没有任何影响。在Java中找出运行时类型信息十分简单(反射的特性,后续会学到)

Java不仅仅是一门编程语言,也是一个由一系列计算机软件和规范组成的技术体系。

1.3 Java 开发环境的安装

1. 安装JDK
目前来说,JDK8或者JDK17是比较稳定的。
我们进入JDK17官网进行下载。

下载好之后安装到指定路径即可。 

2. 配置环境变量
简单来说,将JDK的路径添加到path中即可。
 

3. 检验JDK是否安装成功 
 

4. 安装idea
这个也是直接去idea的idea官网下载即可。

2. 第一个java程序

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

Java是一门半编译型、半解释型语言。先通过 javac 编译程序把源文件进行编译,编译后生成的 .class 文件是由字节码组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行 .class 文件,此时JVM会将字节码转换成平台能够理解的形式来运行。

PS D:\caryon\code\java> javac Test.java
PS D:\caryon\code\java> java Test
Hello world

当然,以后的代码编写与运行我们可以使用idea来完成。

注意:在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。

JDK、JRE、JVM之间的关系

JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。

JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程 序运行的所需环境。

JVM:Java虚拟机,运行Java代码

3. 注释

Java中的注释主要分为以下三种:
 单行注释:// 注释内容(用的最多)
 多行注释:/* 注释内容*/(不推荐)
 文档注释: /** 文档注释 */(常见于方法和类之上描述方法和类的作用),可以被javadoc工具解析,生成一套以网页文件形式体现的程序说明文档

注意:
1. 多行注释不能嵌套使用

2. 不论是单行还是多行注释,都不参与编译,即编译之后生成的 .class 文件中不包含注释信息。

/**
文档注释:@version v1.0.0@author will作用HelloWorld类,入门第一个程序练习
*/
public class HelloWorld{
/*
多行注释:
1. main方法是Java程序的入口方法
2. main函数的格式是固定的,必须为public static void main(String[] args)
*//**main方法是程序的入口函数@param args 命令行参数。*/public static void main(String[] args){// 单行注释:System.out.println是Java中标准输出,会将内容输出到控制台System.out.println("Hello World");}
}

在cmd中,还可以直接使用javadoc工具从Java源码中抽离出注释,如:

javadoc -d myHello -author -version -encoding UTF-8 -charset UTF-8 HelloWorld.java

4. 标识符与关键字

在程序中,由用户给类名、方法名或者变量所取的名字称为标识符。标识符中可以包含字母、数字、下划线和 $ 符号等等。 需要注意的是标识符不能以数字开头,也不能是关键字,且严格区分大小写。

一般来说标识符是可以由用户自由编辑的,但是在面对多人协同时有如下命名软规则:

类名:每个单词的首字母大写(大驼峰)

方法名:首字母小写,后面每个单词的首字母大写(小驼峰)

变量名:与方法名规则相同

至于关键字的内容,就和C语言一样,后面逐次介绍

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解锁仓储智能调度、运输路径优化、数据实时追踪,全功能降本提效的智慧物流开源了

AI 视频监控平台:全链路协同驱动的智能监控解决方案AI 视频监控平台是一款融合高性能功能与轻量化操作的实时算法驱动型视频监控系统,其核心愿景在于深度破除不同芯片厂商间的技术壁垒,省去冗余重复的适配环节,最终达成芯片、算法…

冒泡排序与选择排序以及单链表与双链表

1. 冒泡排序(Bubble Sort) 1. 原理 冒泡排序是一种 简单的排序算法,通过 两两比较相邻元素,把较大的元素逐渐 “冒泡” 到数组末尾。 思路: 从数组头开始,比较相邻两个元素。 如果前一个比后一个大&…

Python实现计算点云投影面积

本次我们分享一种基于 Open3D 的快速、稳健方法,用于从激光点云中自动提取“地面”并计算其投影面积。算法先自适应估计地面高程,再将地面点投影至水平面,随后用凸包或最小外接矩形求取面积。整个流程无需人工干预,单文件即可运行…

AXI4 协议

一、AXI4简介AXI4(Advanced eXtensible Interface 4)是ARM公司推出的高性能片上总线协议,属于AMBA(Advanced Microcontroller Bus Architecture)标准的一部分。它专为高带宽、低延迟的片上通信设计,广泛应用…

《饿殍:明末千里行》Switch版试玩发布 3月13日发售

使用jQuery的常用方法与返回值分析 jQuery是一个轻量级的JavaScript库,旨在简化HTML文档遍历和操作、事件处理以及动画效果的创建。本文将介绍一些常用的jQuery方法及其返回值,帮助开发者更好地理解和运用这一强大的库。 1. 选择器方法 jQuery提供了多种…

[特殊字符] 认识用户手册用户手册(也称用户指南、产品手册)是通过对产品功能的清

一份优秀的用户手册能有效降低用户的使用门槛,提升用户体验和工作效率。下面我将为你梳理编写用户手册的核心要点、步骤和技巧。📖 认识用户手册用户手册(也称用户指南、产品手册)是​​通过对产品功能的清晰解释,为特…

苹果软件代码混淆,iOS混淆、iOS加固、ipa安全与合规取证注意事项(实战指南)

在移动软件交付与合规审计中,苹果软件代码混淆已成为保护知识产权与用户数据的常规手段。但混淆带来的不仅是逆向难度的提升,也会触发崩溃取证、符号化(symbolication)、审计合规与法律证据保存等问题。本文从工程与合规双视角出发…

Redis框架详解

目录 1. redis是什么 主要特点 2. redis中存储的数据类型 2.1 String类型 2.2 List类型 2.3 Hash类型 2.4 Set类型 2.5 Zset类型 2.6 其它类型 3.redis高可用框架 1. redis是什么 Redis 是一个开源的、基于内存的数据结构存储系统,是 Remote Dictionary…

每日随机展示10个wordpress置顶文章

WordPress 置顶文章是博主根据自己的需要设置的&#xff0c;通常用于展示重要或热门的文章。 以下是一个示例代码&#xff0c;用于在 WordPress 主题中展示 10 个置顶文章&#xff1a; <?php // 查询置顶文章 $sticky get_option(sticky_posts); $args array(post__in …

金融工程vs金融数学:谁更贴近量化交易?

在金融行业迈向高度数字化的今天&#xff0c;量化交易已成为顶尖金融机构的核心竞争力之一。它以数学模型为基础&#xff0c;借助编程技术实现策略自动化&#xff0c;在高频、中低频、套利、因子投资等多个领域展现出强大生命力。对于有志于此的大学生而言&#xff0c;选择一个…

实测AI Ping,一个大模型服务选型的实用工具

作为一名长期奋战在一线的AI应用工程师&#xff0c;我在技术选型中最头疼的问题就是&#xff1a;“这个模型服务的真实性能到底如何&#xff1f;” 官方的基准测试总是在理想环境下进行&#xff0c;而一旦投入使用&#xff0c;延迟波动、吞吐下降、高峰期服务不可用等问题就接踵…

深信服软件:aTrustAgent异常占用问题处理

问题&#xff1a;aTrustAgent占用CPU 大早上开电脑&#xff0c;风扇转的飞起&#xff0c;任务管理器看&#xff0c;发现是有几个 aTrustAgent 进程搞得鬼。 印象中&#xff0c;好像没有装过这个软件&#xff0c;搜了下&#xff0c;是深信服的软件&#xff0c;不知道是不是装哪…

基于国产银河麒麟服务器SP3项目实战(Nginx+Keepalive)实现高可用负载均衡

一、环境准备 192.168.113.11NginxKeepalive(Master)192.168.113.22Nginxkeepalive(Backup)192.168.113.33Nginx(web服务器)192.168.113.44 Nginx(服务器&#xff09; 二、环境搭建准备 2.1 Nginx源码编译安装 参考作责之前发布《Nginx源码编译安装》https://blog.csdn.net…

K近邻:从理论到实践

K近邻&#xff1a;从理论到实践 文章目录K近邻&#xff1a;从理论到实践1. 核心思想2. 距离度量3. k的选择与误差分析3.1 近似误差3.2 估计误差3.3 总误差4. kd树的构造与搜索4.1 kd树的构造4.2 kd树的搜索5. 总结6. K近邻用于iris数据集分类6.1加载数据6.2加载模型并可视化1. …

Dokcer的安装(ubuntu-20.04.6):

Dokcer的安装(ubuntu-20.04.6)&#xff1a; 1.添加Docker仓库 #更新本地软件包索引&#xff0c;获取最新的软件包信息 sudo apt-get update #安装依赖包 sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release #创建密钥存储目录 sudo mkdir -p /etc/apt/…

CT图像重建原理

一、CT到底测了什么&#xff1f;硬件动作X 射线源与探测器阵列对置&#xff0c;围着物体旋转。每转到一个角度 θ&#xff08;也叫一个视角 / view&#xff09;&#xff0c;源发射扇形/平行的射线束&#xff0c;探测器阵列上有很多“通道/像素/bin”&#xff08;记作索引 n&…

【pycharm】 ubuntu24.04 搭建uv环境

通过uv配置python环境 一直是conda环境 现在有个开源项目说用uv更快更好 所以在pycharm搞起。 一开始在在一个conda项目的里面某个项目里搞 发现会被conda 环境影响。 导致deepseed 安装不了。 python 环境不对 # NOTE: We must explicitly request them as `dependencies` abo…

从软件工程角度谈企业管理

从软件工程角度谈企业管理企业管理&#xff0c;本质上是人与人之间的博弈。 管理的最大难题&#xff0c;不是定目标、不是写流程&#xff0c;而是&#xff1a;如何让个体的利益最大化路径&#xff0c;与组织的整体目标一致&#xff1f; 这就是经济学里的“激励相容”。 在互联网…

vue3 实现前端生成水印效果

vue3 实现前端生成水印效果首先一点哈&#xff0c;就是单纯web前端生成水印只能作为警示使用&#xff0c;如果享彻底防住几乎是不可能的&#xff0c;有无数种方式去掉web前端生成的水印&#xff0c;所以这种方式只当是一个君子协议吧。编写水印组件 首先直接把这部分封装成一个…

Armonia Mall超级数字生态WEB3商城的引领者

Armonia Mall是一个基于Web3技术的超级数字生态商城&#xff0c;旨在打造全球首家Web3数字普惠商城&#xff0c;帮助千万行销人实现数字生态创业&#xff0c;让全球一亿家庭共享数字经济红利。 Armonia Mall商城创始人&#xff1a;石玉华Armonia Mall七大超级机制&#xff08;模…