【Java】-初识java

news2024/9/23 15:24:20

💖作者:小树苗渴望变成参天大树🎈
🎉作者宣言:认真写好每一篇博客💤
🎊作者gitee:gitee✨
在这里插入图片描述
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!

文章目录

  • 前言
  • 一、Java语言概述
    • 1.1 Java是什么
    • 1.2 Java语言重要性
    • 1.3 Java语言发展简史
    • 1.4 Java语言特性
  • 二、初识Java的main方法
    • 2.1 main方法示例
    • 2.2 运行Java程序
  • 三、注释
    • 3.1 基本规则
    • 3.2 注释规范
  • 四、标识符
  • 五、关键字
  • 六、总结


前言

今天博主也会相继介绍关于java方向的内容,更文的速度可能没有C++那么快,但博主会不定期的更新,让大家可以更好的学到更多的知识,对于java,小伙伴们要自己先去安装环境,相应的视频网上都有,操作非常的简单,这样才能更好的去敲我们的代码,接下来博主就带大家来见见Java。


【本篇目标】

  1. Java语言简介、发展概述、语言优势、与C/C++区别
  2. 初识Java程序入口之main方法
  3. 注释、标识符、关键字

一、Java语言概述

1.1 Java是什么

Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。

在这里插入图片描述
不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

1.2 Java语言重要性

(1)语言广泛使用程度
下图数据来自于TIOBE编程语言社区2017年12月和2018年10月最新的排行榜,常年占据语言排行榜榜首,是近些年最火的编程语言之一

在这里插入图片描述

TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经验的程序员、 课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如 Google、MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)进行计算。
注意:上述排名不能说明那个语言好,那个语言不好,每门编程语言都有适应自己的应用场景。
(2) 工作领域
Java语言目前在IT领域的应用是非常广泛的,掌握Java语言可以从事不少IT行业的相关开发岗位,具体包括:
企业级系统
比如大型复杂的企业级软件系统,Java的安全机制以及跨平台性的优势,其在分布式系统领域开发中有广泛应用,涉及到金融、电信、交通、电子商务、ERP系统等。
Web开发领域
Java语言在设计初期,赶上了互联网发展的风口,当时就瞄准了互联网开发,凭借稳定的性能表现和较好的扩展性,Java语言一直是大型互联网平台的重要解决方案。
android平台应用
Android是一种智能手机操作系统,Java是一门非常流行的编程语言。Android上的应用程序就是大多是用Java编写的,Android的SDK大部分就是直接将Java SDK翻译过来的,所以具有Java基础,也可以快速上手Android开发。
大数据平台开发
大数据相关的各类框架,比如:Hadoop、spark、storm、flink等,以及各种中间件flume、kafka、sqoop等,这些框架以及工具等大多数是用Java语言开发的,随着大数据技术的落地应用,Java在大数据领域的应用前景也是比较广阔

除上述开发领域外,Java在游戏领域、人工智能领域、科学计算领域、嵌入式领域也有一定的应用。因此学好Java,将来就业的选择也会非常广泛。

(3)在校招中的岗位需求
在这里插入图片描述
从上述位置需求中可以看出,由于应届生缺少实际工作经验,因此校招中企业更看重学生的基础,也就是:语言、数据结构/算法、操作系统、网络、数据库等,其他的属于加分项

1.3 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.4 Java语言特性

以下Java语言特性来自于Java白皮书:

  1. 简单性
    Java语法是C++语法的一个“纯净版本”,相当于对C++做了一个减法。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。
  2. 面向对象
    什么是面向对象?
    在Java的世界里,一切皆对象。比如:人、狗、手机、电脑等都是对象。所谓面相对象,就是依靠对象之间的交互来完成事情,比如:人用手机网上购物,狗吃骨头…
    Java的面向对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。在Java中,取而代之的是更简单的接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。
  3. 分布式(微服务)
    Java有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
  4. 健壮性
    Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性(对于曾经花费几个小时来检查由于指针bug而引起内存冲突的人来说,一定喜欢Java的这一特性)。不仅如此,Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。
  5. 安全性
    Java适用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防篡改的系统从一开始,Java就设计成能够防范常见的各种攻击:运行时堆栈溢出。蠕虫和病毒常用的攻击手段。
    破坏自己进程空间之外的内存。未经授权读写文件
  6. 体系结构中立
    编译器生成一个体系结构中立的目标文件格式,按照该中规范生成的文件,只要有Java运行时系统,这些编译后的代码就可以在许多处理器上运行。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器
    代码。这就是为什么可以:“Wrice once,Run anywhere”。
    8.
    而且其他语言编写的程序,在编译后如果能够严格按照字节码文件的规范生成.class文件,也可以在JVM上运行。
    在这里插入图片描述
  7. 可移植性
    与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。例如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。
  8. 解释性
    Java为了实现与平台无关,自己维护了一套基于栈架构的指令集,Java源代码经过编译之后,字节码文件中的指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为Java程序在执行时,Java解释器会逐条的将字节码文件中的指令翻译成CPU的指令集。
  9. 高性能
    边解释边执行,垃圾会说等导致了Java代码运行效率偏低,近年来JVM也在不断的优化,比如:JIT(即时编译器),热点代码探测,让Java程序的执行效率大幅提高,在有些场合不亚于C/C++。
  10. 多线程
    Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作。
  11. 动态性
    Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客户端没有任何影响。在Java中找出运行时类型信息十分简单(反射的特性,后续会学到)因此:Java不仅仅是一门编程语言,也是一个由一些列计算机软件和规范组成的技术体系。
    在这里插入图片描述

二、初识Java的main方法

2.1 main方法示例

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

如上展示的就是最简单的一个Java程序,可能同学们看到后一头雾水,可以说,Java的main方法应程语言中最“长”的。通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成:

1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。

2.类:类中带有一个或多个方法。方法必须在类的内部声明。

3.方法:在方法的花括号中编写方法应该执行的语句。
总结一下:类存在于源文件里面;方法存在于类中;语句存在于方法中。

**注意:**在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。好了,代码编写完了,如何让它“运行”起来呢?

2.2 运行Java程序

Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节码组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。
在这里插入图片描述
注意:在运行Java程序前,必须先安装好JDK(Java Development Kit即Java开发工具包),JDK里面就包含了javac和java工具,Java程序最终是在JVM(Java虚拟机)中运行的。
【面试题】JDK、JRE、JVM之间的关系?
JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。

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

JVM:Java虚拟机,运行Java代码
在这里插入图片描述

编写和运行第一个Java程序时,可能会遇到的一些错误:

  1. 源文件名后缀不是.java
  2. 类名与文件名不一致
  3. main方法名字写错:mian
  4. 类没有使用public修饰
  5. 方法中语句没有以分号结尾
  6. 中文格式的分号
  7. JDK环境没有配置好,操作系统不能识别javac或者java命令

三、注释

3.1 基本规则

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源码中抽离出注释
// -d 创建目录 myHello为目录名
// -author 显示作者
// -version 显示版本号
// -encoding UTF-8 -charset UTF-8 字符集修改为UTF-8


3.2 注释规范

  1. 内容准确: 注释内容要和代码一致, 匹配, 并在代码修改时及时更新.
  2. 篇幅合理: 注释既不应该太精简, 也不应该长篇大论.
  3. 使用中文: 一般中国公司都要求使用中文写注释, 外企另当别论.
  4. 积极向上: 注释中不要包含负能量(例如 领导 SB 等).

四、标识符

在上述程序中,Test称为类名,main称为方法名,也可以将其称为标识符,即:在程序中由用户给类名、方法名或者变量所取的名字。
【硬性规则】
标识符中可以包含:字母、数字以及 下划线和 $ 符号等等。
注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写。
【软性建议】
类名:每个单词的首字母大写(大驼峰)
方法名:首字母小写,后面每个单词的首字母大写(小驼峰)
变量名:与方法名规则相同
一个大型的工程,是由多名工程师协同开发的,如果每个人都按照自己的方式随意取名,比如:person、
PERSON、Person、_person,将会使程序非常混乱。如果大家在取名时能够遵守一定的约束(即规范),那多人写除的代码仿佛一个人写的。

五、关键字

通过观察上述程序可以发现,public、class以及static等颜色会发生变化,将这些具有特殊含义的标识符称为关键字。即:关键字是由Java语言提前定义好的,有特殊含义的标识符,或者保留字。
注意:用户不能使用关键字定义标识符。
在Java中关键字有很多,这里给大家列出来一部分,先了解下后序在逐一详细解释

在这里插入图片描述

关键字大家不需要特意去记,后面使用多了自然就知道了

六、总结

Java的生态还是非常的不错的,他的应用前景也非常号,它有许多属于自己的方法,非常方便,大家要认真的去学习,才能更好的掌握它,今天的初始Java就先讲到这里,我们下篇再见
请添加图片描述

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

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

相关文章

Linux 基础之 TOP 命令详解

文章目录 一、前言二、Top说明 一、前言 TOP 命令是 Linux 常用的性能分析工具,能够实时显示系统中各个进程资源占用状况,类似于 Windows 的任务管理器。 二、Top说明 当使用一个工具时,对此最快的了解方式就是查看说明,那就是…

6.任务调度:保存和还原现场,时间片轮转

实现任务调度,模拟时间片 1.任务调度 在进行上下文切换时,需要保存和切换以下内容: 寄存器:包括通用寄存器(如 EAX、EBX、ECX等)和特殊寄存器(如程序计数器 PC、堆栈指针 SP、基址指针 BP等&a…

LeetCode | C++ 动态规划——完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

目录 完全背包518. 零钱兑换 II377. 组合总和 Ⅳ参考 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包…

【数据挖掘】时间序列教程【九】

第5章 状态空间模型和卡尔曼滤波 状态空间模型通常试图描述具有两个特征的现象 有一个底层系统具有时变的动态关系,因此系统在时间上的“状态”t 与系统在时间的状态t−1有关 .如果我们知道系统在时间上的状态t−1 ,那么我们就有了我们需要知道的一切,以便对当时的状态进行推…

12-ATF架构下的启动流程

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:Secureboot从入门到精通-[目录] 👈👈👈目录 1、Boot模型2、Boot示例3、Runtime模型4、异常跳转模型5、启动跳转模型

四川佳洲智谷:在AI潮水里加速快跑!

2023年6月28日夏季新品发布会上,摩卡掌舵人李国兴发布了国内首个AI原生HRSaaS整体解决方案——摩卡Eva。该产品的发布,标志着Moka正式成为业内第一家真正交付AI原生HRSaaS产品的公司。 随着AIGC浪潮的到来,越来越多的企业开始意识到人工智能的…

对抗性人工智能如何威胁您的机器学习模型

人工智能(AI)的出现给社会的几乎每个领域带来了革命性的变化。然而,人工智能的前景光明的能力也伴随着重大挑战,特别是在网络安全方面。 保护机器学习工作流程对于保护这些组织免受新兴威胁至关重要,而对抗性人工智能…

DeRPnStiNK靶机复盘

DeRPnStiNK靶机复盘 拿到靶机后我们第一步先扫描靶机地址。 nmap -sP 192.168.197.0/24扫描出我们的靶机地址。 扫描出来后我们再单独对这个ip进行扫描,发现开了三个端口 然后扫描一下目录,发现一个wordpress登陆网址和一个phpmyadmin登陆地址。 我们…

SOLARIS系统下ORACLE数据恢复案例

服务器数据恢复环境: 两台SPARC SOLARIS操作系统服务器通过光纤交换机共享一台存储作为集群使用。平时是一台服务器(以下称为主服务器)在运行,如果该服务器发生故障宕机,只需要将这台服务器关机后开启另外一台服务器&a…

Keepalived 安装与配置

安装 Keepalived apt -y install keepalived 里边有一个杠y,就是我安装的时候里面有yes,就直接是yes 添加 Keepalived 配置 安装好之后, 下一步就开始去来写这个配置文件了,就在这里面去建一个 etc 当中,就是在这个 etc 当中建一个…

关于swagger突然跳转登录页面,swagger打开跳转login页面BUG

今天建了一个初始项目,引入swagger之后,启动调用,却总跳转到一个登录页面,手足无措 启动项目后,打开swagger进行测试,但是跳转到下图页面 最后原因是导入了security的包,导致权限安全拦截 注释…

【Spring boot】RedisTemplate中String、Hash、List设置过期时间

Redis中String设置时间的方法 redisTemplate.opsForValue().set("loginCode","254588",2, TimeUnit.SECONDS);//过期时间2秒 redisTemplate.opsForValue().set("loginCode","254588",2, TimeUnit.MINUTES);//过期时间2分钟 redisTemp…

PyQt5及PySide2总结

PyQt5 1. 通过UIC转换成python代码后需在文件中直接添加即可运行。 方便使用代码补全但每次改动ui会生成在原文件中,不小心会发生覆盖,每次都需要将之前的代码重新补充到新生成的文件中。 from PyQt5 import QtCore, QtGui, QtWidgets if __name__ &…

向量相关的计算

点乘 线的表示 向量在某方向的投影 点与平面的关系 (有符号的距离也可以用来做碰撞检测) 粒子碰撞 叉乘 表示三角形法向量和三角形面积大小 注意:法向量和顶点索引的顺序有关(如果符合右手坐标系,且逆时针为正面…

Jvm对象回收算法-JVM(九)

上篇文章介绍了jvm运行时候对象进入老年代的场景,以及如何避免频繁fullGC。 Jvm参数设置-JVM(八) 老年代分配担保机制 这个机制的目的是为了提升效率,在minorGC之前,会有三次判断,之后再次minorGC速度会…

Python开发项目基于改进高斯混合模型的图割算法

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

实体门店数字化转型应该注意什么?数字化门店如何做?

​当今越来越多得商家都在打造自己得数字化门店,线上经营已经成为时代的必选题,那么数字化门店都有什么优势呢? 1、线上门店的展示 使客户可以在数字门店的线上平台上进入商家的线上商城,查看和浏览门店的品牌信息和活动&#x…

jpg文件怎么压缩到最小?如何对图片进行压缩?

在日常社交聊天中,我们经常会遇到图片或表情包太大无法发送的情况,这时候我们可以通过jpg压缩(https://www.yasuotu.com/jpg)缩小图片kb,如果不想下载软件,可以选择使用浏览器在线图片压缩,下面…

iview的表格行内编辑,input和select组件使用方向键切换输入

如果表格中的输入框和下拉框需要实现方向键切换选择,效果如图: 使用的是IView的UI框架和Vue2,核心是在输入框和下拉框上添加按键监听事件,监听按键对应方向应该要完成的操作,比如当前在Name列的第一行,按【…

C++之非const转const类型(一百五十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…