Java基础语法Ⅰ【注释、关键字、字面量、变量】

Java基础语法①

  • 注释
  • 关键字与标识符
  • 数据类型
  • 字面量和常量
  • 变量
  • 转义字符

注释

注释是在写代码时,对代码作出的一些解释说明,比如某一个函数的作用(功能)、函数接收的参数以及函数返回什么东西等等。 这些解释说明没有任何功能,编译器编译的时候也会直接忽略注释。
注释有三种类型【图源:B站黑马程序员java入门到精通课程】:
在这里插入图片描述

  • 单行注释://注释信息两个斜杠,后面是注释信息;换行以后如果还要注释需要打新的“//”;
  • 多行注释:/* 注释信息 随意换行 */,多行注释顾名思义,就是可以写很多行的注释(hhhhhhh),以/*开始,以*/结束;
  • 文档注释:以 /** 开始,*/ 结束,用于生成文档。这种注释通常用于类、方法和变量的说明;文档注释的格式通常包含一些特定的标签,如 @param 用于描述方法参数,@return 用于描述返回值,@throws 用于描述可能抛出的异常等等,这些标签有助于生成清晰的API文档,以便其他开发者能够更好地理解和使用你的代码。
/**  
 * 这是一个简单的方法  
 * @param x 参数 x  
 * @return 返回结果  
 */  
public int myMethod(int x) {  
    return x * 2;  
}  

关键字与标识符

  • 关键字(Keywords):

关键字是编程语言预定义的单词,具有特殊含义,用于表示语言结构、控制流程、数据类型等。在Java中,关键字是被保留的单词,不能用作标识符(如变量名、方法名等)。例如,在Java中,publicclassvoid等都是关键字。

  • 标识符(Identifiers):

标识符是程序员定义的用于表示变量、常量、函数、类等的名称。标识符可以由字母、数字、下划线美元符号组成,但必须以字母、下划线或美元符号开头。不能以数字开头;不能使用关键字作为标识符(会冲突)。例如,在Java中,变量名myVariable、方法名calculateTotal等都是标识符。

二者的关联、区别如下:
1、含义:关键字是编程语言预定义的单词,具有特殊含义;而标识符是程序员定义的用于表示各种元素名称的字符序列。
2、用途:关键字用于表示语言结构、控制流程、数据类型等;标识符用于命名变量、常量、函数、类等。
3、限制:关键字是被保留的,不能用作标识符;标识符则是由程序员自定义的,不能与关键字相同。
总的来说,关键字是编程语言的一部分,具有预定义的含义和用途;而标识符是程序员在编写代码时定义的名称,用于表示各种元素。

数据类型

在说到下面的变量、常量之前,还是要先说一下这个Java中的数据类型。因为不管是变量还是常量,其目的都是为了声明一块内存空间存储一个值,常量和变量的区别只是这个值能不能改变而已。前面这句话的一个重点是“存储一个值”,那个这个值是什么类型呢,就需要先学习一下这个数据类型。
我们学数学的时候,一开始学什么?正整数,1,2,3,4,5……,然后我们才知道有负数;之后我们知道有小数、实数虚数、有理数无理数…… 我们知道计算机能够理解的实际上只是0/1比特是吧,不管是整数还是浮点数(小数),在计算机中都会以某种编码格式编程0/1比特串存储起来。实际上,我们说话用到的字母、句子,计算机想要理解也是需要转换成0/1比特串的,这些字母、句在Java(或者其他编程语言中)中被称之为字符、字符串。
java中的数据类型可以分为基本数据类型引用数据类型,后者涉及到引用,后面再细说吧吧吧吧吧(我也没有搞明白呜呜呜)。先来看看基本数据类型吧:

数据类型关键字取值范围占用内存
整数byte-127 ~ 128 (-2^7 ~2^7-1)1 Byte
整数short-32768 ~ 32767 (-2^15 ~2^15-1)2 Byte
整数int-2^31 ~2^31-14 Byte
整数long-2^63 ~2^63-18 Byte
浮点数float后续解释4 Byte
浮点数double后续解释8 Byte
字符char0 ~ 655352 Byte
布尔booleantrue,false1 Byte
public class Main {
    public static void main(String[] args) {
        //byte
        byte a = 20;
        System.out.println(a);
        //short
        short b = 10;
        System.out.println(b);
        //int
        int c = 10;
        System.out.println(c);
        //long
        long d = 20L;
        //注意需要L后缀
        System.out.println(d);

        //float
        float e = 15.5f;
        //注意需要一个f后缀
        System.out.println(e);

        //double
        double f = 20.5;
        System.out.println(f);

        //boolean
        boolean g = true;
        System.out.println(g);

        //char
        char h = 'A';
        System.out.println(h);
    }
}

在Java中,浮点数的编码方式遵循IEEE 754标准。这个标准定义了单精度浮点数(float)和双精度浮点数(double)的表示方法。

  • 单精度浮点数(float):
    符号位:1位,表示正负号。
    指数位:8位,用于表示指数部分。
    尾数位:23位,用于表示尾数部分。
  • 双精度浮点数(double):
    符号位:1位,表示正负号。
    指数位:11位,用于表示指数部分。
    尾数位:52位,用于表示尾数部分。

这种编码方式允许浮点数在计算机中以二进制形式表示,同时保留了一定的精度和范围。 后续复习计算机组成原理相关内容的时候再来讨论,float、double两种浮点数所能表示的数据范围!

我们常用的数组、字符串String,其实都是引用类型的数据结构,后续我学会了再总结!!!

字面量和常量

  • 字面量(Literals) 是指在程序中直接表示数值、字符串或者其他数据类型的值。它们是程序中的固定值,不会改变。在Java中,一些常见的字面量包括整数字面量(如 5)、浮点数字面量(如 3.14)、布尔型字面量(如 truefalse)、字符串字面量(如 "Hello")、字符变量(如'a')等。
public class Main {
    public static void main(String[] args) {
        // 字面量的输出-整数
        System.out.println(123);
        System.out.println(-456);
        // 字面量的输出—浮点数
        System.out.println(3.14);
        System.out.println(-2.718);
        // 字面量的输出—布尔值
        System.out.println(true);
        System.out.println(false);
        // 字面量的输出—字符
        System.out.println('A');
        System.out.println('中');
        // 字面量的输出—字符串
        System.out.println("Hello, world!");
        System.out.println("你好,世界!");
    }
}
  • 常量(Constants) 是程序中用于存储固定值的标识符,其值在程序执行期间不会改变。在Java中,可以使用 final 关键字来定义常量。例如:final int MAX_VALUE = 100;。在这里,MAX_VALUE 是一个常量,它的值被设定为100,并且在程序执行期间不会改变(补充,在C、C++中用const关键字定义常量)。
    final定义一个常量以后,其值是不可更改的👇
    在这里插入图片描述

  • 区别:
    字面量是数据的值本身,在代码中直接出现;常量是用于存储这些固定值的符号名称。
    字面量是固定的值;常量也是固定的值,但它们是通过符号名称来引用的。
    因此,字面量可以是常量的一种形式,但不是所有的字面量都是常量。常量是一种具有符号名称的固定值,而字面量是程序中直接出现的值。

变量

变量,顾名思义,就是一个值可以变化的标识符。底层一点的解释,就是用一个标识符(变量名)来命名一块内存空间,之后这个内存空间存储的具体值就是这个变量的值,当然这个内存空间中存储的值是可以变化的。变量的声明规则是type variableName = value; ,即需要说明这个内存空间内存储的数据类型是什么,比如float、int、boolean(实际上编译器根据这个类型来分配对应大小的空间),需要说明这个内存空间的名字,以及需要给它一个初始化的值【使用之前必须要赋值(初始化)!!!】。

转义字符

当编写字符串或字符字面量时,有时需要表示一些特殊字符,如换行符、制表符、引号等。然而,直接键入这些字符可能会导致编译器误解你的意图。为了解决这个问题,编程语言引入了转义字符的概念。

转义字符是由反斜杠(\)紧跟着一个字符组成的序列。当编译器遇到一个反斜杠时,它会检查反斜杠后面的字符,并根据这个字符的不同来采取相应的行动。这个过程称为转义序列的解析。

在Java中,一些常见的转义字符包括:

\n:换行符
\t:制表符
\r:回车符
\\:反斜杠
\':单引号
\":双引号
\b:退格
\f:换页
例如,要在一个字符串中表示换行符,你可以使用 \n。这样编译器就知道你希望在那个位置插入一个换行符。

总的来说,转义字符允许你在字符串中表示那些在源代码中难以输入或者不可见的字符,从而使得程序能够正确地解释和显示这些特殊字符。

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

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

相关文章

C# Winform DPI自适应方案

Winform窗体随着屏幕的DPI缩放,会引起窗体变形及字体变形。 1.设置窗体和自定义用户控件的AutoScaleMode为None 实现目标:禁止窗体因为字体大小缩放变形 因为显示的高分屏,然后操作系统的设置了字体缩放引起的。窗体默认的AutoScaleMode = Font,控件会因为高分屏自动缩放…

遇到的状态308问题

前端用的vue.config.js做的代理,请求后端的地址https://n6118lr7-10010.usw3.devtunnels.ms 在请求的时候会308 是因为本地是http而请求地址是https 前端代理允许https接口代理即可

python pandas处理股票量化数据:笔记2

有一个同学用我的推荐链接注册了tushare社区帐号https://tushare.pro/register?reg671815,现在有了170分积分。目前使用数据的频率受限制。不过可以在调试期间通过python控制台获取数据,将数据保存在本地以后使用不用高频率访问tushare数据接口&#xf…

【Spring】Spring事务相关源码分析

目录: 1.讲述事务的一些基础概念。 2.讲述事务的生命周期源码 3.配置事务,以及事务注解的源码 1.前言 具体事务中Spring是怎么管理事务,怎么去管理、创建、销毁等操作的呢?这一次来分解一下。 2.事务概述(复习&a…

Vscode中使用make命令

前言 需要注意,如下操作需要进行网络代理,否则会出现安装失败的情况 安装 第一步 — 安装MingGW (1)进入官网下载 (2)下载完成之后,双击exe文件 (3)点击Install &#x…

Python设计模式 - 简单工厂模式

定义 简单工厂模式是一种创建型设计模式,它通过一个工厂类来创建对象,而不是通过客户端直接实例化对象。 结构 工厂类(Factory):负责创建对象的实例。工厂类通常包含一个方法,根据输入参数的不同创建并返…

通信协议—Modbus

1、modbus简介 Modbus服务器:接收处理来自客户端的请求,并返回相应的响应; Modbus客户端:向Modbus服务器发送请求,并接收服务器返回的响应的设备或程序; 2、modbus poll调试工具下载 modbus poll用于测…

SpringCloud跨服务远程调用

随着项目的使用者越来越多,项目承担的压力也会越来越大,为了让我们的项目能服务更多的使用者,我们不得不需要把我们的单体项目拆分成多个微服务,就比如把一个商城系统拆分成用户系统,商品系统,订单系统&…

从设备匠心到啤酒体验的全方位指南

从小型手工酿酒坊到大型现代化生产线,我们在经营之前,每一套设备的选择都是基于对精酿啤酒市场需求的洞察和自身品牌的定位。无论是追求传统风味的复刻,还是创新口味的实验,设备的灵活性与可控性都是决定成品能否达到预期的关键。…

【SpringCloud】创建新工程

前言 本文使用的是jdk17,mysql8。 以下用两个服务做演示: 订单服务:提供订单ID,获取订单详细信息。 商品服务:提供商品ID,获取商品详细信息。 对于订单服务和商品服务分别建立数据库: -- 订单服…

一款不写代码的开源爬虫工具!!【送源码】

爬虫,也被称为网络爬虫或网络蜘蛛,是一种自动化的网络机器人,其主要功能是按照一定的规则,自动浏览互联网并从网页中提取信息。 作为一个开发人员,相信大家都尝试过写一些爬虫,合理的利用一些爬虫工具&…

【代码随想录】【算法训练营】【第35天】[134]加油站 [135]分发糖果 [860]柠檬水找零 [406]根据身高重建队列

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 35,连休两天~ 题目详情 [134] 加油站 题目描述 134 加油站 解题思路 前提:数组 思路:全局贪心算法:最小累加剩余汽油为负数,说明…

博客没人看啊?我分析是这些原因

1.封面 主题封面还是个性化封面?主题封面对系列化很友好,如下图左: 在目录中什么主题一目了然,个性化封面在目录中就略显杂乱。但是通过观察CSDN主页发现热榜文章清一色个性化封面。如果使文字封面就会显得很无聊。 所以从提高浏…

Orange_Pi_AIpro运行蜂鸟RISC-V仿真

Orange_Pi_AIpro运行蜂鸟RISC-V仿真 突发奇想,试一试Orange Pi AIpro上运行蜂鸟RISC-V的仿真。 准备 默认已经有一个Orange Pi AIpro,并且对设备进行一定的初始化配置,可以参考上一篇博文开源硬件初识——Orange Pi AIpro(8T&a…

零代码本地搭建AI大模型,详细教程!普通电脑也能流畅运行,中文回答速度快,回答质量高

这篇教程主要解决: 1). 有些读者朋友,电脑配置不高,比如电脑没有配置GPU显卡,还想在本地使用AI; 2). Llama3回答中文问题欠佳,想安装一个回答中文问题更强的AI大模型。 3). 想成为AI开发者,开…

运行时类型识别RTTI(typeid dynamic_cast)和虚函数机制的关系

1.typeid 2.dynamic_cast 指针类型决定了可以操作的内存范围大小 子类指针转化为父类类型的指针的一般是合法的: 父类的指针类型转化为子类类型指针,超过合法操作范围,不安全 两种转换:编译期的转换,运行时的转化 编译…

【Java】图书管理系统-控制台输出

项目原码压缩包在我主页的资源中免费领取。(在IDEA中运行,启动类在src -> Main 中运行) 图书管理系统 设计一个简单的控制台输出的图书管理系统,我们首先需要明确其基本功能、设计内容以及设计要求。这个系统可以包括以下几个…

解决Windows中端口占用导致服务启动失败

解决Windows中端口占用导致服务启动失败 在cmd窗口中使用netstat -ano | findstr "3306"来查看哪个线程占用了3306端口。 下面的图片里面表示一个pid为5196的进程占用了端口 接着可以在cmd窗口中使用tasklist | findstr "5196" 根据pid查询进程名称 通过…

LVS三种负载均衡模式:NAT、Tunneling和DR的技术对比

1. LVS-NAT 模式的特性 IP使用:RS(Real Server)应使用私有地址,RS的网关必须指向DIP(Director IP)。网络范围:DIP和RIP必须在同一个网段内。数据包处理:请求和响应报文都需要经过Di…

[DDR4] DDR1 ~ DDR4 发展史导论

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR4》 内存和硬盘是电脑的左膀右臂, 挑起存储的大梁。因为内存的存取速度超凡地快, 但内存上的数据掉电又会丢失,一直其中缓存的作用,就像是我们的工…