02. Java 中的关键字、标识符、运算符、分隔符和注释

关键字

Java 的关键字(keyword、保留字)是 Java 语言中具有特殊含义的单词,它们被保留供 Java 自身使用,不能被用作标识符。例如 publicclassvoidint 等都是关键字。

关键字在 Java 语法中起着重要的作用,它们定义了编程的结构、控制流程、数据类型等。了解和正确使用关键字是学习 Java 的基础。

特点:

  • 被 Java 赋予特殊意义的单词, 所有关键字都是小写
  • Java 语言中的保留字只有两个 goto 和 const, 既不能当作标识符使用,也不是关键字,也不能在程序中使用,这些字符序列称为保留字。
  • main 不是关键字,但是被虚拟机识别的一个名称

常用关键字

Java 所有关键字

关键字 final 的用法

  1. final 作为类修饰符: 这种类成为最终类,特点是不允许继承。例如 API 中的 Math, String, Integer 类都是 final 类。
  2. final 修饰方法: 是功能和内部语句不能被更改的最终方法,在子类中不能再对父类的 final 方法重定义。所有 private 修饰的为私有方法和 final 类中的方法都默认为是 final。
  3. final 定义常量:只能被赋值一次 例如 final double PI = 3.14159;
  4. 内部类只能访问被 final 修饰的局部变量。

有关访问控制修饰符的关键字

访问控制修饰符也是属于关键字的一类。后续在学习类和对象中可能会用到。

1. 公共访问控制符 public

  • 作为类的修饰符,将类声明为公共类, 表明它可以被所有的其它类所访问和引用
  • 作为类的成员的访问修饰符,表明在其他类中可以无限制地访问该成员。

2. 默认访问控制符(默认)
没有给出访问控制符情形,该类只能被同一个包中的类访问和引用,不能被其他包中的类使用。

3. 保护访问控制符 protected

4. 私有访问控制符 private
用来声明类的私有成员,它提供了最高级的保护。用 private 修饰的域和方法只能被该类自身访问和修改,不能被任何其他类(包括该类的子类)来获取和引用。
通常,出于系统设计的安全考虑,将类的成员属性定义为 private 保护起来,而类的成员方法 public 对外公开, 这是类封装特性的一个体现.

标识符

标识符是 Java 中用来给变量、方法、类等元素命名的字符序列 它就像我们给人起名字一样,是为了在代码中唯一地标识某个元素。

标识符有一些规则需要遵守:

  • 包含字母、数字(但注意不能数字开头)、下划线和美元符号;
  • 不能是 Java 中的关键字。

例如,myVariablemyMethodMyClass 都是合法的标识符。而 123variable 或者 if 就不是合法的,因为它们不符合标识符的规则。

标识符的命名规范

标识符的命名要有意义,这样可以提高代码的可读性和可维护性。Java 编码规范命名方法一般采用大写驼峰和小写驼峰法。

  • 包名是全小写字母,中间可以由点分隔开。作为命名空间,包名应该具有唯一性,推荐采用公司或组织域名的倒置,如 com.apple.quicktime.v2。但 Java 核心库包名不采用域名的倒置命名,如 java.awt.event。
  • 类和接口名:采用大驼峰法,如 ViewController。
  • 文件名:采用大驼峰法,如 BlockOperation.java。
  • 变量名:采用小驼峰法,如 studentName。
  • 方法名:采用小驼峰法,如 balanceAccount、isButtonPressed 等。
  • 常量名:全大写,如果是由多个单词构成,可以用下划线隔开,如 YEAR 和 WEEK_OF_MONTH。

运算符

Java 语言中的运算符(也称操作符)在风格和功能上都与 C 和 C++ 极为相似。

  • 按操作数分为一元,二元和三元
  • 按照功能: 包含算术,关系,逻辑,位,赋值组合等几种运算符
  • 运算符需要注意优先级和结合性(左结合还是右结合)

运算符优先级顺序由于高到低分别是:算术运算符 → 位运算符 → 关系运算符 → 逻辑运算符 → 赋值运算符。

运算符优先级从高到低

算数运算符

  • 加 +,举例 2 + 3 的结果为 5
  • 减 -,举例 2 - 3 的结果为 -1
  • 乘 *,举例 2 * 3 的结果为 6
  • 除 /,举例 2 / 3 的结果为 0
  • 取余 %,举例 2 % 3 的结果为 2

注意:注意 2 / 3 的结果为 0,如果想让结果得到小数,则需要至少其中一个定义为浮点类型。例如 2.0 / 3 的结果为 0.6666666666666666。

因为算术表达式中包含多个基本数据类型的值的时候,整个表达式的类型自动提升到表达式中最高等级操作数同样的类型。

等级顺序:byte, short, chars -> int -> long -> float -> double

关系运算符

关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。

注意事项:关系运算符的结果都是 boolean 类型,要么是 true,要么是 false。

逻辑运算符

逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,中的表达式是否成立,判断的结果是 true 或 false。

短路与非短路:

逻辑与 &,无论左边真假,右边都要执行。
短路与 &&,如果左边为真,右边执行;如果左边为假,右边不执行。

逻辑或 |,无论左边真假,右边都要执行。
短路或 11,如果左边为假,右边执行.如果左边为真,右边不执行。

位运算符

位运算符

位与运算符 &: 参与运算的两个位都为 1,则结果为 1,否则为 0

位或运算符 |: 参与运算的两个位只要有一位为1,则结果为 1,否则为 0

异或运算符^:参与运算的两个位不同(0 和 1,或 1 和 0)的则结果为 1,相同位为 0。

异或不好记, 我是根据" 11 -> 0 我报警了" 才记住的

其他运算符

  • ++, -- 运算, 建议单独成行, 提高阅读性。

  • == 和 != 可以应用于基本数据类型和引用数据类型。当用于引用数据类型比较时,比较的是两个引用是否指向同一个对象,但在当时实际开发过程中多数情况下,只是比较对象的内容是否相当,不需要比较是否为同一个对象。

  • 提示 短路与(&&)和短路或(||)采用了优化的计算方式,从而提高效率。在实际编程时,应该优先考虑使用短路运算符

  • 有符号右移 n 位,相当于操作数除以 2 的 n 次方。另外,左位移 n 位,相当于操作数乘以 2 的 n 次方。

  • 比较运算符得到的结果是布尔常量 true or false。

  • 位运算符注意 异或 ^ 是不同为真,相同为假。即 1 和 0 的结果为 1 1 和 1 的结果为 0。若一个数异或 2 次或 2 次的倍数则有还原的效果。

  • 三元运算符格式: (条件表达式) ? 表达式1 : 表达式2;, 他的结合性是从右至左 不建议嵌套使用三元运算符, 这样可读性极差。

  • 除了前面介绍的主要运算符,Java 还有一些其他运算符。
    三元运算符(? :)。例如 x ? y : z;,其中 x、y 和 z 都为表达式。

  • 小括号。起到改变表达式运算顺序的作用,它的优先级最高。
    中括号。数组下标。

  • 引用号(.)。对象调用实例变量或实例方法的操作符,也是类调用静态变量或静态方法的操作符。

  • 赋值号(=)。赋值是用等号运算符(=)进行的。

  • instanceof。判断某个对象是否为属于该类型。

  • new。对象内存分配运算符。

  • 箭头(->)。Java 8 新增,用来声明 Lambda 表达式。

  • 双冒号(::)。Java 8 新增,用于 Lambda 表达式中方法的引用。

运算符的优先级一般不需要特别地去记忆它,比较复杂的表达式建议加上圆括号 () ,能提高可读性。

关于 instanceof 的说明

  • (Integer)null 编译和运行完美通过, 结果为 null
  • null instanceof 任意类 都为 false

分隔符

分隔符: 有一些字符被用作分隔,称为分隔符。分隔符主要有分号;、左右大括号{}和空白。

注释

单行、多行、文本(共 3 种) 和 地标注释。

Java中注释的语法有三种:单行注释(//)、多行注释(//)和文档注释(/**…*/)。

Eclipse 等 IDE 工具都为 Java 源代码提供了一些特殊的注释,就是在代码中加一些标识,便于IDE工具快速定位代码,称为“地标注释”。这种注释虽然不是 Java 官方所提供的,但是主流语言和主流的 IDE 工具也都支持“地标注释”。

Eclipse 支持如下三种地标注释:

  • TODO:说明此处有待处理的任务,或代码没有编写完成。
  • FIXME:说明此处代码是错误的,需要修正。
  • XXX:说明此处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进。

IDEA 目前只支持 TODO 和 FIXME, 不支持 XXX。

我们写代码时必须添加必要的注释。

加餐

下列语句是经典写法

if (s == null || i == s.length()) {}

if (s != null && i == s.length()) {}

下列语句可能会产生空指针异常

if (s ==null &&  i == s.length())

if (s != null || i == s.length())

在 Java 编程中使用短路 || 和 短路 &&, 能提高效率。且 if 括号里面的语句要尽量简单些, 这样易读性会好且不容易出错。

异或运算实现两个数的交换

采用下面的方法,对于给定两个整数 a,b,下面的异或运算可以实现a,b的交换,而无需借助第 3 个临时变量:

a = a ^ b;
b = a ^ b;
a = a ^ b;

这个交换两个变量而无需借助第 3 个临时变量过程,其实现主要是基于异或运算的如下性质:

  1. 任意一个变量 X 与其自身进行异或运算,结果为 0,即 X^X = 0
  2. 任意一个变量 X 与 0 进行异或运算,结果不变,即 X^0 = X
  3. 异或运算具有可结合性,即 abc = (ab)c = a(bc)
  4. 异或运算具有可交换性,即 a^b = b^a

分析:
第一步:a = a ^ b;
完成后 a 变量的结果为 a ^ b

第二步:b = a ^ b;
得到 b = (原 a ^ 原b)^ 原b = 原a ^ (原b ^ 原b) = 原a ^0= 原a,

即经过第二步运算后 b 中的值为 a,即 b = 原 a,将 a 换到了 b 里

第二步:a = a ^ b
得到 a = (原a ^ 原b)^ b = (原a ^ 原b)^ 原a = 原a ^ 原a ^ 原b = 0 ^ 原b= 原b。即 a = 原b。

问一问

什么是变量的作用域

变量的作用域也称变量的有效范围,它是程序的一个区域,变量在其作用域内可以通过它的名字来引用。作用域也决定系统什么时候为变量创建和清除内存。根据变量在程序声明的位置。

成员变量(包含静态和非静态)可添加修饰符,包括访问权限修饰符 publicprivateprotected 和非访问权限修饰符 staticfinalnative 等。如果没有给对象属性赋初值,则对象属性的初始值由相应数据类型的默认值决定,如数值型数据的默认值为 0,boolean的默认值为 false,字符串的默认值为 null。成员变量的作用域是在类的范围。

成员变量和静态成员变量(类变量)的区别

1. 两个变量的生命周期不同。
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。

2. 调用方式不同。

  • 成员变量只能被对象调用。
  • 静态变量可以被对象调用,还可以被类名调用。但实际上是通过类名进行调用。

3. 数据存储位置不同。

  • 成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据
  • 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据

考一考

考题 1: “6+6”+6+6 的输出结果
A: 是 6+666, 这是 “+” 字符连接符导致.

考题 2: -2 % 5
A: 为 -2(算术运算符中除法符号看左边就行。)

考题3: 假设有如下程序:

int num = 50;
num = num ++ * 2;
System.out.println(num) ;

注意这里的 ++ 在后, 所以 ++ 后做。结果为 100

参考

  • 丁振凡编著,《Java 语言程序设计(第 2 版)》华东交大版,2014.9
  • 免费公开课_传智播客和黑马程序员免费公开课 http://yun.itheima.com/open
  • Java 从小白到大牛-图书-图灵社区 http://www.ituring.com.cn/book/2480
  • Java 编程的逻辑-微信读书 https://weread.qq.com/web/reader/b51320f05e159eb51b29226kc81322c012c81e728d9d180

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

合并两个有序数组(力扣)

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组…

【开源-土拨鼠充电系统】鸿蒙 HarmonyOS 4.0 App+微信小程序+云平台

✨本人自己开发的开源项目:土拨鼠充电系统 ✨踩坑不易,还希望各位大佬支持一下,在Gitee或GitHub给我点个 Start ⭐⭐👍👍 ✍Gitee开源项目地址👉:https://gitee.com/cheinlu/groundhog-charging…

QT_day2:2024/3/21

作业1:使用QT完成一个登录界面 要求: 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件相关设置,通过代码实现 3. 需要添加适当的动图 源代码: #include "widget.h" #include "ui_widget.h"Widget…

蓝桥杯算法练习系统—金属采集(树形dp)

问题描述 人类在火星上发现了一种新的金属!这些金属分布在一些奇怪的地方,不妨叫它节点好了。一些节点之间有道路相连,所有的节点和道路形成了一棵树。一共有 n 个节点,这些节点被编号为 1~n 。人类将 k 个机器人送上了火星&…

3/21 work

自由发挥登录窗口的应用场景,实现一个登录窗口界面。(不要使用课堂上的图片和代码,自己发挥,有利于后面项目的完成) 要求: 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件相关设置,通…

头歌实训--机器学习(决策树)

第1关&#xff1a;决策树简述 第2关&#xff1a;决策树算法详解 import numpy as np from sklearn import datasets#######Begin####### # 划分函数 def split(x,y,d,value):index_a(x[:,d]<value)index_b(x[:,d]>value)return x[index_a],x[index_b],y[index_a],y[inde…

聚类算法之DBSCAN (Density-Based Spatial Clustering of Applications with Noise)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; DBSCAN是在1990年代后期推出的一种聚类方法&#xff0c;它迅速成为基于密度的聚类技术中最受欢迎和广泛使用的算法之一。与传统的聚类方法如K-me…

MT1490 修改字符串

原题链接:https://www.matiji.net/exam/brushquestion/490/778/B3FCFEC101BD05189BB74D522E019504 输入1个字符串, 如果其中小写字符多于大写字符&#xff0c;则将其全部转换为小写字符&#xff0c;如果大写字符多于小写字符&#xff0c;则全部转换为大写字符。 输入格式&…

高精度铸铁平台制造工艺有多精细——河北北重机械

高精度铸铁平台制造工艺通常包括以下几个步骤&#xff1a; 材料准备&#xff1a;选择合适的铸铁材料&#xff0c;并确保其质量符合要求。常用的铸铁材料包括灰铸铁、球墨铸铁等。 模具制造&#xff1a;根据平台的设计要求&#xff0c;制造适用的模具。模具一般由砂型、金属模具…

基于springboot+mysql+Shiro实现的宠物医院管理系统

1.项目介绍 系统主要为用户提供了管理员权限的用户&#xff0c;实现了前台查看客户信息、在线添加预约等&#xff1b;后台管理医生坐诊信息、管理就诊信息、修改密码&#xff0c;管理公告、管理宠物分类、管理就诊、管理用户、修改密码等。在设计方面&#xff0c;本系统采用MV…

CTF-辨别细菌

题目描述&#xff1a;try your best to find the flag. 进入靶场后发现是一个游戏&#xff0c;需要全部答对才可以得到最后的flag 查看了一下源码&#xff0c;发现有一个答案模板的模块 尝试解释一下代码 <!-- 答案模版 --> <script id"template_game_pi…

我国高纯电子级过氧化氢产量逐渐增长 未来有望实现完全国产替代

我国高纯电子级过氧化氢产量逐渐增长 未来有望实现完全国产替代 高纯电子级过氧化氢是氧化氢产品中技术含量最高的细分品类&#xff0c;多用于印刷电路板蚀刻、硅片清洗、光刻胶剥离等方面。经过多年发展&#xff0c;高纯电子级过氧化氢制备工艺已经成熟&#xff0c;大致可分为…

系统设计实例(二)新闻订阅系统

新闻订阅系统的设计和实现 Web 服务器&#xff1a;Web 服务器将流量重定向到不同的内部服务。Post 服务&#xff1a;在数据库和缓存中持久化帖子。Fanout 服务&#xff1a;将新内容推送到朋友的新闻订阅中。新闻订阅数据存储在缓存中以便快速检索。通知服务&#xff1a;通知朋…

设置客户端桌面壁纸 文件夹重定向

域策略-设置客户端桌面壁纸 1/服务器管理器组策略管理-gwy.com-Defait Domain Policy-右击编辑 2/用户配置-首选项-置windows设置-文件夹-右击文件夹-创建-C:\bgp-应用 3/在客户端策略更新-gpupdate /force 命令符-查看是否正确 4/服务器创建c:\image\R-C.jpg&#xff0c;共享文…

【什么是Internet?网络边缘,网络核心,分组交换 vs 电路交换,接入网络和物理媒体】

文章目录 一、什么是Internet&#xff1f;1.从具体构成角度来看2.从服务角度来看 二、网络结构1.网络边缘1.网络边缘&#xff1a;采用网络设施的面向连接服务1.1.目标&#xff1a;在端系统之间传输数据1.2.TCP服务 2.网络边缘&#xff1a;采用网络设施的无连接服务2.1目标&…

Zotero引入英文参考文献作者都是大写字母问题

修改之前是这样的&#xff1a; 修改过程 进入word 打开样式编辑器 打开后&#xff0c;找到这里&#xff1a; 删除 text-case“uppercase” 就可以实现这个样式&#xff1a; 然后我们点击保存&#xff0c;将这个样式文件另存为&#xff0c;然后替换掉原来的文件 源文件在 …

算法详解——Dijkstra算法

Dijkstra算法的目的是寻找单起点最短路径&#xff0c;其策略是贪心加非负加权队列 一、单起点最短路径问题 单起点最短路径问题&#xff1a;给定一个加权连通图中的特定起点&#xff0c;目标是找出从该起点到图中所有其他顶点的最短路径集合。需要明确的是&#xff0c;这里关心…

技巧 获取指定文件夹下的所有文件名称

一. powershell脚本 当一行命令太长的时候&#xff0c;使用反引号 来换行 # 设置要扫描的文件夹路径 $folderPath "E:\mp3"# 构建输出文件的完整路径,将结果输出到桌面上的all_file_name.txt文件中 $outputFilePath [System.IO.Path]::Combine([System.Environm…

档案著录员好干吗

档案著录员是负责对档案资料进行著录、整理和管理的专业人员。他们的工作主要包括&#xff1a; 1. 著录档案资料&#xff1a;根据相关规范和标准&#xff0c;对档案资料进行详细的著录&#xff0c;包括档号、题名、日期、责任者、关键词等信息&#xff0c;以便于后续的检索和利…

缅甸的大开发时代即将到来 缅文wordpress主题模板

Simplify WordPress外贸网站模板 Simplify WordPress外贸网站模板&#xff0c;简洁实用的外贸公司wordpress外贸建站模板。 https://www.jianzhanpress.com/?p4565