当前位置: 首页 > news >正文

07从零开始学Java之如何正确的编写Java代码?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦

CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者

前言

在上一篇文章中,壹哥带领大家开始编写了第一个Java案例,在我们的cmd命令窗口中输出了”Hello World“这句话。并且我还给大家留了一个小作业,你做出来了吗?

但是在上一篇文章中,我们学习的”Hello World“案例,里面有一些基础的语法,比如public、class、static等,这些到底是啥东东,有什么含义和要求,对于小白来说,可能还都不是很清楚。所以接下来在本文中,壹哥会给大家讲解一下Java最基本的语法要求,带大家认识Java里的标识符及其命名规范,认识Java里的关键字、保留字有哪些。

-----------------------------前戏已做完,精彩即开始----------------------------

全文大约【3000】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富案例及配图视频,让你更好的理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

一. Java标识符

1. 代码回顾

在认识什么是Java里的标识符之前,咱们还是先把上节课中的那段代码拿过来复习一下,如下:

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

壹哥之前跟大家解释过上述代码的含义:

public:关键字,表示“公开的”;
class:关键字,表示用来定义一个类;
HelloWorld:类名,要保证和我们的文件名一样;
static:关键字,表示静态的,大家先记住意思,后面我会再细讲;
void:表示方法没有返回值,大家先记住意思,后面我再细讲;
main:主方法的名称,表示程序的入口,固定名称;
String[]:字符串数组类型;
args:方法参数的名称,随意;
System.out.println("Hello World!"):用来输出“Hello World!”这句话。

其实,在这段代码中,有些就属于”标识符“。具体哪些是标识符呢?我们继续往下看!

2. 标识符

首先,我们得认识一下什么是”标识符“。

Java中的包、类、方法、参数和变量等要素,都需要有个命名,这些名字就是标识符,使用字符串进行表示。

从上述定义中可知,在Java中有包、类、方法、参数、变量等几种要素,这些要素都需要命名。而这些名字需要使用字符串来命名,这些字符串就叫做”标识符“。举个栗子,你的名字叫做”二狗“,”二狗“就是标识符!

那么有的小伙伴就动歪脑筋了,既然标识符就是用来命名的字符串,那我是不是可以随便命名?有没有什么要求呢?大家想想,你自己身份证上的姓名可以随便命名吗?是不是会有一定的要求和规范呢?

3. 命名规则(重点)

我们首先要记住Java标识符的命名规则,如下:

①. 标识符由 字母(含英、中、日、俄等)、数字、下划线"_" 和 美元符号$ (音: dollar)组成,如age、G7、_value、$salary
②. 不能以数字开头,如123abc
③. 严格区分大小写,如class与Class是不同的
④. 长度无限制(一般不要超过15个字符);
⑤. 不能是Java中的保留字和关键字。

下面壹哥给大家举个栗子,看看标识符是否合法:

4. 命名规范

标识符命名习惯:尽量做到见名知意,如Order订单类,不要写a、b、c这种名称;
变量名/方法名/参数名:首字母要小写。如果名称由多个单词组成,第一个单词的首字母应小写,剩下的单词首字母应大写( 驼峰式命名法),例如:xxxYyyZzz、numCounter;
类名: 单词首字母应大写,如果类名由多个单词组成,每个单词的首字母都应大写( 帕斯卡命名法),例如:XxxYyyZzz、OrderCancel;
包名: 包名应该小写。由多单词组成时,所有字母也都应小写,例如:xxxyyyzzz、chinaedu;
常量名: 所有字母都应大写,常量名由多单词组成时,每个单词用下划线连接,例如:XXX_YYY_ZZZ、GOOD_LUCK。

5. 规则与规范的区别

规则是必须要遵守的”法则“,属于强制性的,比如交通规则,不遵守就不行,会罚钱扣分出事故!

规范是建议你遵守的”建议“,属于鼓励性的,比如道德规范,建议你能遵守,否则你会让人鄙视!

我们在开发时,必须遵守Java标识符的命名规则,尽量遵守Java标识符的命名规范。一般在企业开发时,对命名规范都会有自己的特殊要求,我们要按照公司自己的要求进行代码编写。总之,一个合格的程序员,决不能随心所欲的想怎么编码就怎么编码。就好比一个合格的人,也不能在这个社会上随心所欲的”胡作非为“,比如是要遵守特定的规则和规范的!

二. 关键字与保留字

在上面讲解标识符时,壹哥跟大家说过,标识符不能是Java自带的关键字和保留字。那到底什么是关键字和保留字呢?

1. 关键字

Java中有一些被赋予了特定含义,有专门用途的字符串被称为关键字(keyword)。这些关键字全部都是小写的,关键字分类如下:

有的小伙伴可能会惊呼,Java中有这么多的关键字啊?!我怎么记得下来?其实,你不用专门去记这些关键字,以后我们每一天都要编写代码,这些关键字自然而然就会被你记住了!

另外在上面这些关键字中,有几个用来修饰类的方法和属性的关键字,我们把它们称为修饰符,主要有两类修饰符:

访问控制修饰符:default、public、protected、private
非访问控制修饰符:final、abstract、static、synchronized

目前这个阶段,壹哥希望大家先记住4个”访问控制修饰符“即可,其他的我们再慢慢学习和掌握。

2. 保留字

Java中还有一些没有定义特定用途,但保留备用的关键字,如goto、const等,被称为保留字。也就是说,有些关键字现在暂时没有用到,但有可能以后会用到,为了”以备不时之需“,Java预留了一些关键字,这就是保留字。这些保留字与关键字一样,也不能被我们用来定义标识符!

三. 编码规范

除了以上这些关于标识符的命名规则和规范之外,壹哥还希望大家从今天开始,在编码时要养成良好的编码规范。我这里所谓的编码规范,是指在编写代码时希望大家遵守的一些”建议“。当然,这些规范如果你不遵守,代码并不会出错,但有可能会被你的领导和同事diss,说你”不讲究“。今天壹哥先给大家说两个会伴随我们整个开发生涯的常见编码规范。

1. 代码缩进

在Java代码中,每一个层级的代码都应该使用tab键(制表位)进行间隔,间隔4个字符。比如下面的代码:

不同层级的代码要间隔4个字符,并用花括号"{ }"分割,而且"{ }"要采用上图所示的配对方式。注意不要采用如下方式:

上图这种"{ }"花括号配对方式,不是Java的编码风格,不建议大家这样写!虽然没有错误,但不符合绝大多数Java程序员的编码习惯和审美要求。你的所有同事都顺时针转圈,你为什么非要逆时针转圈呢?

2. 代码注释

另外,我们要从学编程开始,就养成写注释的习惯。所谓的注释,就是指对代码含义的一段解释性文字。这段文字并不会被编译进字节码中,所以你不用担心会影响执行效率,它只是用来给程序员解释代码含义的。Java中的注释有3种:

单行注释,// 注释内容
多行注释,/* 注释内容 */
文档注释,/* *注释内容 */

注释的使用如下所示:

/**
    作者:一一哥
    描述:这是一个入门程序
*/
public class Hello{
    /**
        方法的作用:这是程序的入口
        方法的参数:
        方法的返回值:    
    */
    public static void main(String[] args){
        //这行代码的含义是在控制台输出内容
        System.out.println("注释.....");        
        /*
            以下这段代码的功能是
            打印输出一个三角形        
        */
        System.out.println(".");
        System.out.println("..");
        System.out.println("...");
        System.out.println("....");
        System.out.println(".....");
    }
}

当然,这里只是先让大家养成一个良好的编码规范,关于注释的具体用法,壹哥会在后面的文章中再详细讲解。

-----------------------------正片已结束,来根事后烟----------------------------

四. 结语

至此,壹哥就把Java的标识符、关键字、保留字和编码规范给大家讲解完毕。其中标识符的命名规则大家必须要记住,这是本文的重点!所以需要各位牢牢记住Java标识符的命名规则有哪些要求?另外要尽量记住常用的命名和编码规范,不要去做违反大多数人习惯的事情!

截止到现在,我们使用的编码工具还都是windows系统自带的txt记事本工具,这个工具用起来比较费劲。所以在下一篇文章中,壹哥会按递进的顺序,给大家介绍几个效率更高的开发工具,敬请期待下一篇哦。

另外如果你独自学习觉得有很多困难,可以加入壹哥的学习互助群,大家一起交流学习。

五. 配套视频

如果你不习惯阅读技术文章,或是对文中的技术概念不能很好地理解,可以来看看壹哥帮你筛选出的视频教程。与本文配套的《Java标识符》视频链接如下:

https://player.bilibili.com/player.html?bvid=BV1Ja411x7XB&p=17&page=17

《Java关键字》视频链接如下:

https://player.bilibili.com/player.html?bvid=BV1Ja411x7XB&p=16&page=16

六. 今日作业

1. 第一题

在评论区说说Java标识符命名有哪些要求?

2. 第二题

此处为语雀投票卡片,点击链接查看:https://www.yuque.com/yiyigesun/hkm11k/yl8mwz#uDUrw

3. 第三题

Java的代码缩进,应该缩进几个字符?评论区给出你的答案吧。

相关文章:

  • 如何保证Redis缓存和数据库一致性?
  • 2023年网络安全比赛--attack(新)数据包分析中职组(超详细)
  • 【Android -- 软技能】聊聊程序员的软技能
  • STM32F1硬件SPI驱动nRF24L01通过按键控制数据收发带状态反馈
  • 2022济南大学acm新生赛题解
  • ES+Redis+MySQL,这个高可用架构设计太顶了!
  • js逆向爬取某音乐网站某歌手的歌曲
  • Python打包成exe,文件太大问题解决办法(比保姆级还保姆级)
  • 【小白】git是什么?gitee和git和github的关系?
  • 如何用Python求解微分方程组
  • 初识C++需要了解的一些东西(2)
  • 【面试题】面试官:如果后端给你 1w 条数据,你如何做展示?
  • 伯努利方程示例 Python 计算(汽水流体和喷泉工程)
  • 想要成为高级网络工程师,只需要具备这几点
  • 【Python练习】序列结构
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [NodeJS] 关于Buffer
  • 【刷算法】求1+2+3+...+n
  • Laravel 中的一个后期静态绑定
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • PHP的Ev教程三(Periodic watcher)
  • rc-form之最单纯情况
  • 阿里云Kubernetes容器服务上体验Knative
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 每天10道Java面试题,跟我走,offer有!
  • 免费小说阅读小程序
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 算法---两个栈实现一个队列
  • 在weex里面使用chart图表
  • 自制字幕遮挡器
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • Spring Batch JSON 支持
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​ubuntu下安装kvm虚拟机
  • ​力扣解法汇总946-验证栈序列
  • #HarmonyOS:Web组件的使用
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #pragam once 和 #ifndef 预编译头
  • #传输# #传输数据判断#
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (一)u-boot-nand.bin的下载
  • ***监测系统的构建(chkrootkit )
  • ***检测工具之RKHunter AIDE
  • ***通过什么方式***网吧
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题