JAVA——初识JAVA

news2025/4/15 10:38:51

文章目录

  • 如何在cmd上编译、运行
  • 代码解析
  • String[] args中放的是什么
  • Java结构
  • 编译运行可能遇到的错误
  • Java中的注释
    • Java的三种注释
    • 编码不一致的问题
  • IDEA常用基础开发快捷键
    • 补齐快捷键
    • 注释快捷键
  • IDEA的基础调式方法
  • 标识符

如何在cmd上编译、运行

在没有集成开发环境下,该如何去运行一个java程序呢?

  • 先创建一个文本文档,将这个文件的后缀名改为java
    在这里插入图片描述
    类型就会变为java源文件
    在这里插入图片描述
  • 接着打开记事本开始写java代码(写完要保存)
    在这里插入图片描述
    此时这些代码就是一些普通的字母,我们该怎样把它们变成程序呢?
    既然要变成计算机能识别的程序,那么它必须得是二进制。所以必须通过编译生成二进制的内容,计算机才能识别它。
  • 该怎么变成电脑可以识别的二进制呢?
    • 在放Test.java文件的路径下输入cmd
      在这里插入图片描述
      变成这样:
      在这里插入图片描述
      输入cmd+回车
      在这里插入图片描述
      此时打开的窗口就已经在刚刚的路径下了:
      在这里插入图片描述
      此时用java的编译器进行编译,Java的编译器是javac。通过javac去编译我们写好的Test.java
      在这里插入图片描述
      回车过后虽然什么也没有输出,但多了一个名为Test.classCLASS文件。在这里插入图片描述
      这个CLASS文件是(二进制的)字节码文件,通过javacTest.java生成了Test.class的字节码文件(二进制)在这里插入图片描述
  • 既然已经编译生成好字节码(二进制)文件后,那么该怎么运行这个Test呢?
    通过java这个命令来运行在这里插入图片描述
    注意:javac后面+Test.java(有后缀的文件名);
    java后面+Test(文件名/类名,反正无后缀)
  • 运行后的结果:
    在这里插入图片描述
    当我们使用java命令的时候,会把生成好的二进制文件运行到JVM(java virtual machine)里面,也就是java虚拟机当中,最后会输出结果:hello world
    在这里插入图片描述
    这时候就会有人问,我没有安装java虚拟机(JVM)呀?
    其实我们已经安装了,因为我们装了jdk,在jdk里面就包含JVM.
    在这里插入图片描述
    JDK里有个叫JRE的东西,JRE里面又有JVM。所以,当我们把JDK安装好之后,实际上JVM也就装好了。
    JDK(Java Development Kit)——Java开发工具包,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。
    JRE(Java Runtime Environment——Java运行时环境,包含了JVM,Java基础类库。
    JVM(java virtual machine)——Java虚拟机,运行Java代码。

代码解析

在这里插入图片描述

  • 代码中public class是固定写法(也可以不写public,区别后面再说)
  • 我们把第一行的Test叫做类名,类名有以下几个要求:
    • 1.必须要为大驼峰(eg:MaxNum):如果有一个单词,这个单词的首字母大写;如果有两个及以上的单词,每个单词的首字母大写。
    • 2.被public修饰的类名必须和文件名相同
      什么是类呢?
      class修饰Test那么Test就是一个类。这个类就要与文件名Test相同,所以这里是Test
  • 代码中public static void main{}叫做main方法,是程序的入口。在这里插入图片描述
    main方法的写法是固定的,写成public static void main{},与C语言学的main{}是一样的。
  • 代码中用括号包起来的String[] argsmain的参数,args是数组。
    在我们之前学的C语言中,数组不应该是int arr[]这样写的吗?为什么这里写成int[] arr
    我们通常是通过类型来定义变量的:类型+变量名,如int a;而C语言中数组的写法是类型中间夹个变量名,是不合适的。所以Java中String[] args这样写才是比较合理的,此时这个数组叫做字符串数组。
  • 代码中System.out.println类似于C语言中的打印,也就是printf,只不过这里的ln代表着换行。
  • 最后双引号引起来的“hello world”叫做字符串
  • 注意:左花括号一定是在当前行的!!!换行也不会报错,但建议括号对齐
    在这里插入图片描述

String[] args中放的是什么

String[] args里面放的到底是什么呢?
因为我们有C语言的基础,我们对代码进行一点改造:

  • 先给代码加个循环在这里插入图片描述
    Java中可以通过数组名args调用length,这样可以自动计算出数组的大小。
    所以args.length代表着当前数组的长度

  • 再通过System.out.println在循环中进行输出,输出的是args[i]
    在这里插入图片描述

  • 修改完代码后按ctrl+s保存,接着在放Test.java这个文件的路径下输出cmd打开命令界面
    在这里插入图片描述

  • 输入javac Test.java进行编译,输入java Test进行运行
    在这里插入图片描述
    我们发现这里什么也没有输出,可是我们在代码中写了输出了呀?
    这里就要告诉我们args数组里面存的到底是什么了。

  • 我们再敲一条命令:java Test gxb is a pretty girl。(此时在运行这个java程序的时候后面加了gxb is a pretty girl
    在这里插入图片描述
    发现:对运行时输入的内容进行了打印(输出的是运行时输入的内容)
    所以数组args存了运行java程序时所输入的参数
    在这里插入图片描述
    我们把args所存储的内容叫做运行时的命令行参数
    也就是说,当我们在运行java程序的时候,是可以给它输入一些值的,这些值会存储到args中,这就是String args这个参数的意义。


Java结构

通过上述代码,我们可以看到一个完整的Java程序结构,由如下三个部分组成:

  • 源文件(拓展名为.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类,类的内容必须包含在花括号里面。
  • 类:类中带有一个或多个方法,方法必须在类的内部声明。
  • 方法:在方法的花括号中编写方法应该执行的语句(方法就是C语言中的函数)。

注意:

  • 在一个源文件中只能有一个public修饰的类
    我们不能像这样再在这个源文件中写个类Test2
    在这里插入图片描述
    而且源文件名字必须与public修饰的类的名字相同。

  • 我们在写代码的时候一定要注意结构,Java代码的结构是这样的:
    最外层一定是类,在类当中才会有各种各样的方法,所以不能让方法游离于类外
    在这里插入图片描述
    如我们再写一个叫func的方法
    在这里插入图片描述
    这个func方法是游离于类Test之外的,我们保存后试试编译(所有修改后的代码都需要重新编译)这段代码:
    在这里插入图片描述
    所以方法一定不能游离于类外的


编译运行可能遇到的错误

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

Java中的注释

Java的三种注释

Java中的注释主要分为以下三种:

  • 单行注释://注释内容(用的最多)

  • 多行注释:/*注释内容*/(不推荐)

  • 文档注释:/**文档注释*/(常用于方法和类之上描述方法和类的作用)可以被javadoc工具解析,生成一套以网页文件形式体现的程序说明文档在这里插入图片描述
    Java文档注释如何生成的命令:javadoc -d myHello -author -version -encoding UTF-8 -charset UTF-8 Test.java

    • cmd中,使用javadoc工具从Java源码中抽离出注释
    • -d创建目录,myHello为目录名
    • -author显示作者
    • -version显示版本号
    • -encoding UTF-8 -charset UTF-8字符集修改为UTF-8

    在这里插入图片描述
    可以看到敲完命令后路径中多了一个叫myHello的目录
    在这里插入图片描述
    点开myHello目录,在这么多文件中找到index.html打开
    在这里插入图片描述
    打开之后就可以看到我们在代码中写的版本、作者,还有构造器、main方法等等
    在这里插入图片描述
    这就是生成的一套以网页文件形式体现的程序说明文档

注意:

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

编码不一致的问题

我们写段代码,作用是在屏幕上打印haha
在这里插入图片描述
编译、运行程序
在这里插入图片描述
接着我们将三种注释分别插入在代码的不同位置中,再保存代码
在这里插入图片描述
我们试着编译这段代码
在这里插入图片描述
问题:我们只是加了一些注释,为什么就报错了呢?
我们再将代码改改:
在这里插入图片描述
此时我们将注释中的中文部分删掉,再编译代码看看
在这里插入图片描述
这时编译却没有报错,所以以上报错是中文问题。
那么为什么加了中文就报错呢?
我们看看报错信息
在这里插入图片描述
这是因为有编码的过程。在记事本上中文是按照UTF8的编码方式编码的。而javac在进行编译的时候,cmd是默认按照GBK的编码方式编码的。
报错的原因就是编码不一致
那么我们就规定编码方式,让编码方式一致:

  • 还原有中文的代码
    在这里插入图片描述
  • 编译这段代码
    在这里插入图片描述
  • 报错就需要用-encoding utf-8这条命令指定编码方式(指定javac编译的时候是以utf-8编码,那么就一致了)完整的命令为javac -encoding utf-8 Test.java
    在这里插入图片描述
    这样以来就可以运行成功

以上都是在cmd中运行Java程序,我们以后写代码是用一个集成开发环境,公司普遍用IntelliJ IDEA

IDEA常用基础开发快捷键

补齐快捷键

  • main方法的快捷键psvm+回车
    在这里插入图片描述
    补齐:
    在这里插入图片描述
  • 打印快捷键sout+回车
    在这里插入图片描述
    补齐:
    在这里插入图片描述
    如果要打印a的话,输入sout+回车,再写上a
    在这里插入图片描述
    也可以a.sout+回车
    在这里插入图片描述
    在这里插入图片描述
  • 循环快捷键fori+回车
    在这里插入图片描述
    补齐:
    在这里插入图片描述

注释快捷键

  • 块注释快捷键:先选中,再按ctr+shift+/
    在这里插入图片描述在这里插入图片描述
    取消块注释也是:先选中,再按ctr+shift+/
    在这里插入图片描述
  • 行注释原本就是//,也可以利用行注释的快捷键:先选中,再ctr+/
    取消行注释也是先选中,再ctr+/
  • 文档注释:写/**+回车在这里插入图片描述
    在这里插入图片描述
    写个/*+回车
    在这里插入图片描述
    在这里插入图片描述

IDEA的基础调式方法

我们先写上一段小代码
在这里插入图片描述
接下来演示基础调试:

  • 打断点。若我们想调试第18行,就在18行的前面点一下就好在这里插入图片描述
    在这里插入图片描述
    取消断点直接点那个小红点就好了

  • 找绿色甲壳虫。
    在这里插入图片描述
    点击进行调试,出现以下这个界面
    在这里插入图片描述
    蓝色阴影部分表示代码执行到了这里,但是这行代码还没执行完,所以我们只能看到args这一个参数,并没有a
    在这里插入图片描述

  • 如果想让它往下走该怎么办呢?
    我们先看这几个按钮:
    在这里插入图片描述
    第一个按钮:一步一步往下走,遇到函数一步执行完,不进入函数内部
    第二个按钮:一步一步往下走,遇到函数可以进入函数内部
    第三个按钮:以我们目前要学习的知识来说,与第二个按钮作用是一样的
    第四个按钮:跳出。若在一个函数内部用这个按钮,则函数后面的代码不再执行,直接跳出函数。

  • 暂停调试就点这个红色的小方块 在这里插入图片描述再将断点取消就好了。


标识符

在上述程序中,Test称为类名、main称为方法名、a称为变量名,也可以将它们称为标识符
标识符就是在程序中由用户给类名,方法名或者变量所取的名字

硬性规则:
标识符由字母、数字、下划线和$(美元符号)组成,但标识符不能以数字开头,也不能是关键字,且严格区分大小写。

通过观察上述程序可以发现,public,class,static等颜色会发生变化,我们将这些具有特殊含义的标识符称为关键字。
关键字是由Java语言提前定义好的,有特殊含义的标识符,或保留字。
注意:main可以用来定义变量名等,但是不建议

软性建议:

  • 类名:每个单词的首字母大写(大驼峰)
  • 方法名:首字母小写,后面每个单词的首字符大写(小驼峰)
  • 变量名:与方法名规则相同
int maxNum=10;//小驼峰

一个大型的工程,是由多名工程师协同开发的,如果每个人都按照自己的方式随意取名,比如:person、
PERSON、Person、_person,将会使程序非常混乱。如果大家在取名时能够遵守一定的约束(即规范),那多人写
除的代码仿佛一个人写的。

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

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

相关文章

Shell脚本的学习

编写脚本文件 定义以开头:#!/bin/bash #!用来声明脚本由什么shell解释,否则使用默认shel 第一步:编写脚本文件 #!/bin/bash #注释 echo "这是输出" 第二步:加上执行权限:chmod x 脚本文件名.sh 第三步&…

专题十四:动态路由——OSPF

一、OSPF简介 开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol),采用DIjkstra算法,协议号是89。用于自治系统(A…

Cocos Creator Shader入门实战(八):Shader实现圆形、椭圆、菱形等头像

引擎:3.8.5 您好,我是鹤九日! 回顾 Shader的学习是一条漫长的道路。 理论知识的枯燥无味,让很多人选择了放弃。然而不得不说:任何新知识、新领域的学习,本身面临的都是问题! 互联网和AI给了我…

【AI论文】VCR-Bench:视频链式思考推理的综合评估框架

摘要:思想链(CoT)推理的进步显著增强了大型语言模型(LLMs)和大型视觉语言模型(LVLMs)的能力。 然而,目前仍然缺乏一个严格的视频CoT推理评估框架。 目前的视频基准测试无法充分评估推…

数据中台、BI业务访谈(二):组织架构梳理的坑

这是数据中台、BI业务访谈系列的第二篇文章,在上一篇文章中,我重点介绍了在给企业的业务部门、高层管理做业务访谈之前我们要做好行业、业务知识的功课。做好这些功课之后,就到了实际的访谈环节了。 业务访谈关键点 那么在具体业务访谈的时…

【零基础实战】Ubuntu搭建DVWA漏洞靶场全流程详解(附渗透测试示例)

【零基础实战】Ubuntu搭建DVWA漏洞靶场全流程详解(附渗透测试示例) (声明:实际操作请遵守网络安全法,仅在授权环境进行测试,仅供个人研究) 一、DVWA靶场简介 DVWA(Damn Vulnerable Web Application)是专为网络安全学习者设计的漏洞演练平台,包含SQL注入、XSS、文件…

库学习04——numpy

一、基本属性 二、 创建数组 (一)arange a np.arange(10,20,2) # [10,12,14,16,18] 只有一个参数n的话,默认是从0到n-1的一维数组。 (二)自定义reshape a np.arange(12).reshape((3,4)) [[ 0 1 2 3][ 4 5 …

Win10系统安装WSL2-Ubuntu, 并使用VScode开始工作

本教程基于博主当前需要使用 WSL2(Windows Subsystem for Linux 2) 而编写,将自己使用的经过分享给大家。有什么意见建议敬请大家批评指正。此过程需要打开 Microsoft Store 话不多说,立即开始~ 文章目录 1. 检查系统版本2. 启动 WSL 功能3. 安装Ubuntu4…

SLAM(七)-卡尔曼滤波

SLAM(七)-卡尔曼滤波 一、卡尔曼滤波(KF)二、扩展卡尔曼滤波(EKF)三、误差状态卡尔曼滤波(ESKF) 参考《概率机器人》、《Principles of GNSS,lnertial and Multisensor lntegrated Navigation Systems (Second Edition)》 一、卡尔曼滤波(KF)…

如何解决DDoS攻击问题 ?—专业解决方案深度分析

本文深入解析DDoS攻击面临的挑战与解决策略,提供了一系列防御技术和实践建议,帮助企业加强其网络安全架构,有效防御DDoS攻击。从攻击的识别、防范措施到应急响应,为网络安全工作者提供了详细的操作指引。 DDoS攻击概览&#xff1a…

Windows for Redis 后台服务运行

下载 redis 安装包 地址:https://github.com/tporadowski/redis/releases 解压zip压缩包,执行 redis-server.exe 即可以窗口模式运行(窗口关闭则服务关闭) 运行窗口可以看到,端口是 6379 我这里使用 nvaicat 客服端测…

C语言超详细指针知识(二)

在上一篇有关指针的博客中,我们介绍了指针的基础知识,如:内存与地址,解引用操作符,野指针等,今天我们将更加深入的学习指针的其他知识。 1.指针的使用和传址调用 1.1strlen的模拟实现 库函数strlen的功能是…

华为机试—最大最小路

题目 对于给定的无向无根树&#xff0c;第 i 个节点上有一个权值 wi​ 。我们定义一条简单路径是好的&#xff0c;当且仅当&#xff1a;路径上的点的点权最小值小于等于 a &#xff0c;路径上的点的点权最大值大于等于 b 。 保证给定的 a<b&#xff0c;你需要计算有多少条简…

[Linux]从零开始的ARM Linux交叉编译与.so文件链接教程

一、前言 最近在项目需要将C版本的opencv集成到原本的代码中从而进行一些简单的图像处理。但是在这其中遇到了一些问题&#xff0c;首先就是原本的opencv我们需要在x86的架构上进行编译然后将其集成到我们的项目中&#xff0c;这里我们到底应该将opencv编译为x86架构的还是编译…

Rag实现流程

Rag实现流程 目录 Rag实现流程1. 加载问答链代码解释`chain_type="stuff"` 的含义其他 `chain_type` 参数选项及特点1. `map_reduce`2. `refine`3. `map_rerank`示例代码展示不同 `chain_type` 的使用其他参数类型2. 提出问题3. 检索相关文档代码解释其他参数类型4. …

【c语言】指针习题

练习一&#xff1a;使用指针打印数组内容 #include <stdio.h> void print(int* p, int sz) {int i 0;for (i 0; i < sz; i) {printf("%d ", *p);//printf("%d ", *(p i));} } int main() {int arr[] { 1,2,3,4,5,6,7,8,9,10 };int sz sizeof…

银行业务知识序言

银行业务知识体系全景解析 第一章 金融创新浪潮下的银行业务知识革命 1.1 数字化转型驱动金融业态重构 在区块链、人工智能、物联网等技术的叠加作用下&#xff0c;全球银行业正经历着"服务无形化、流程智能化、风控穿透化"的深刻变革。根据麦肯锡《2023全球银行业…

智慧水务项目(八)基于Django 5.1 版本PyScada详细安装实战

一、说明 PyScada&#xff0c;一个基于Python和Django框架的开源SCADA&#xff08;数据采集与监视控制系统&#xff09;系统&#xff0c;采用HTML5技术打造人机界面&#xff08;HMI&#xff09;。它兼容多种工业协议&#xff0c;如Modbus TCP/IP、RTU、ASCII等&#xff0c;并具…

畅游Diffusion数字人(23):字节最新表情+动作模仿视频生成DreamActor-M1

畅游Diffusion数字人(0):专栏文章导航 前言:之前有很多动作模仿或者表情模仿的工作,但是如果要在实际使用中进行电影级的复刻工作,仅仅表情或动作模仿还不够,需要表情和动作一起模仿。最近字节跳动提出了一个表情+动作模仿视频生成DreamActor-M1。 目录 贡献概述 核心动…

【Unity网络编程知识】C#的 Http相关类学习

1、搭建HTTP服务器 使用别人做好的HTTP服务器软件&#xff0c;一般作为资源服务器时使用该方式&#xff08;学习阶段建议使用&#xff09;自己编写HTTP服务器应用程序&#xff0c;一般作为Web服务器或者短连接游戏服务器时使用该方式&#xff08;工作后由后端程序员来做&#…