Java变量与标识符

一、关键字(Keyboard)

定义:被Java语言赋予了特殊含义,用做专门用途的字符串(或单词)

特点:全部关键字都是小写字母

  • 官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

说明:

  1. 关键字一共50个,其中constgoto保留字(reserved word)。

  2. truefalsenull不在其中,它们看起来像关键字,其实是字面量,表示特殊的布尔值和空值。

二、标识符(Identifier)

 定义:Java中变量、方法、类等要素命名时使用的字符序列,称为标识符。

标识符的命名规则  :

        > 由26个英文字母大小写,0-9 ,_或 $ 组成  
        > 数字不可以开头。
        > 不可以使用关键字和保留字,但能包含关键字和保留字。
        > Java中严格区分大小写,长度无限制。
        > 标识符不能包含空格。

 标识符的命名规范 :

        > 包名:多单词组成时所有字母都小写:xxxyyyzzz。

        > 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)

        > 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz(小驼峰命名法)

        > 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。  

 三、变量

变量的概念:

  • 内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化

  • 变量的构成包含三个要素:数据类型变量名存储的值(值最重要)

  • Java中变量声明的格式:数据类型 变量名 = 变量值

  • 变量的作用:用于在内存中保存数据。

  • 使用变量注意:

    • Java中每个变量必须先声明,后使用。

    • 使用变量名来访问这块区域的数据。

    • 变量的作用域:其定义所在的一对{ }内。

    • 变量只有在其作用域内才有效。出了作用域,变量不可以再被调用。

    • 同一个作用域内,不能定义重名的变量。

Java中变量的数据类型分为两大类: 

  • 基本数据类型:包括 整数类型(byte、int、short、long)浮点数类型(float、double)字符类型(char)布尔类型(boolean)

  • 引用数据类型:包括数组(array)、类(class)接口(interface)枚举注解记录

基本数据类型: 

1.整型 
  • 定义long类型的变量,赋值时需要以"l"或"L"作为后缀。

  • Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long。

  • Java的整型常量默认为 int 型

2.浮点型
  • float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。

  • double:双精度,精度是float的两倍。通常采用此类型。

  • 定义float类型的变量,赋值时需要以"f"或"F"作为后缀。

  • Java 的浮点型常量默认为double型

 说明:

  • 并不是所有的小数都能可以精确的用二进制浮点数表示。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。

  • 浮点类型float、double的数据不适合在不容许舍入误差的金融计算领域。如果需要精确数字计算或保留指定位数的精度,需要使用BigDecimal类

public class Exercise1 {public static void main(String[] args) {double PI = 3.14; //圆周率double radius1 = 1.2;double radius2 = 2.5;int radius3 = 6;System.out.println("第1个圆的面积:" + PI * radius1 * radius1);System.out.println("第2个圆的面积:" + PI * radius2 * radius2);System.out.println("第3个圆的面积:" + PI * radius3 * radius3);}
}
3. 字符型
  • char 型数据用来表示通常意义上“字符”(占2字节)

  • Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。

  • 字符型变量的三种表现形式:

    • 形式1:使用单引号(' ')括起来的单个字符

      例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';

    • 形式2:直接使用 Unicode值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。

      例如:\u0023 表示 '#'。

    • 形式3:Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。

      例如:char c3 = '\n'; // '\n'表示换行符

    转义字符说明Unicode表示方式
    \n换行符\u000a
    \t制表符\u0009
    \"双引号\u0022
    \'单引号\u0027
    \\反斜线\u005c
    \b退格符\u0008
    \r回车符\u000d
  • char类型是可以进行运算的。因为它都对应有Unicode码,可以看做是一个数值。

4.布尔类型
  • boolean 类型用来判断逻辑条件,一般用于流程控制语句中:

    • if条件控制语句;

    • while循环控制语句;

    • for循环控制语句;

    • do-while循环控制语句;

  • boolean类型数据只有两个值:true、false,无其它。​​​​​​​

boolean isFlag = true;if(isFlag){//true分支
}else{  //false分支
}

基本数据类型变量间运算规则:

        在Java程序中,不同的基本数据类型(只有7种,不包含boolean类型)变量的值经常需要进行相互转换。转换的方式有两种:自动类型提升强制类型转换

 1.自动类型提升(小变大)

规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型

 char、byte、short --> int --> long --> float --> double

(注意:整数的默认数据类型是int,浮点数的默认数据类型是double)

(1)小范围数据类型能赋值给大数据类型

int i = 'A';
double d = 10;

(2)不同大小的数据类型变量进行运算时,结果的数据类型为运算过程中最大容量的数据类型

int i = 1;
byte b = 1;
double d = 1.0;double sum = i + b + d;//混合运算,升级为double

(3) 当byte,short,char数据类型的变量进行算术运算时,按照int类型处理。

byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;//编译报错,b1 + b2自动升级为intchar c1 = '0';
char c2 = 'A';
int i = c1 + c2;//至少需要使用int类型来接收
System.out.println(c1 + c2);//113 
 2.强制类型转换(大变小)

规则:将取值范围大(或容量大)的类型强制转换成取值范围小(或容量小)的类型。

//数据类型1 变量名 = (数据类型1)被强转数据值;  ()中的数据类型必须小于等于变量值的数据类型
//以下述代码为例,变量d要从double转化为int,数据类型由大变小,所以是强制转换,就要在d前面加上(),并且在括号中写入要转化成的数据类型int。
double d = 1.2;
int num = (int)d;

(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转换为存储范围小的变量时,可能会损失精度溢出

(2)当某个值想要提升数据类型时,也可以使用强制类型转换。这种情况的强制类型转换是没有风险的,通常省略。

(3)声明long类型变量时,可以出现省略后缀的情况。float则不同。  

long l1 = 123L;
long l2 = 123;//如何理解呢? 此时可以看做是int类型的123自动类型提升为long类型//long l3 = 123123123123; //报错,因为123123123123超出了int的范围。
long l4 = 123123123123L;//float f1 = 12.3; //报错,因为12.3默认看做是double,不能自动转换为float类型
float f2 = 12.3F;
float f3 = (float)12.3;

 基本数据类型与String(引用数据类型)的运算:

1、任意八种基本数据类型的数据与String类型只能进行连接“+”运算,且结果一定也是String类型

int num = 10;
boolean b1 = true;
String s1 = "abc";String s2 = s1 + num + b1;
System.out.println(s2);//abc10true//String s3 = num + b1 + s1;//编译不通过,因为int类型不能与boolean运算
String s4 = num + (b1 + s1);//编译通过

 2、String类型不能通过强制类型()转换,转为其他的类型

String str = "123";
int num = (int)str;//错误的int num = Integer.parseInt(str);//正确的,借助包装类的方法才能转

 

 

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

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

相关文章

DB-GPT Docker部署

感谢阅读 拉取镜像linux判断拉取是否成功的方法windows判断拉取是否成功的方法 模型以及启动容器模型启动容器 界面如下(0.56): 拉取镜像 docker pull eosphorosai/dbgpt:latestlinux判断拉取是否成功的方法 docker images | grep "eo…

龙国南方航空滑块acw_v2+cookie+风控处理+type后缀

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁…

中小企业的数字化转型业务场景落地案例

引言:随着商业活动的复杂化和全球化程度的提高,合同作为商业交易的重要组成部分,其数量、条款和复杂性都在不断增加。企业面临着越来越多的合同管理挑战,包括合同数量增多、条款繁琐、文件分散存储等问题。而中小企业由于管理不到…

elk对于集群实例的日志的整合-基于logstash采集日志

说明:基于logstash采集日志 环境: 物理机192.168.31.151 一.启动2个测试实例,每5-10s随机生成一条订单日志 实例一 包位置:/home/logtest/one/log-test-0.0.1-SNAPSHOT.jar 日志位置:/docker/elastic/logstash_ingest_data/l…

C++学习笔记:C++基础语法+编程思想

C基础 参考:C 教程 | 菜鸟教程 (runoob.com) 用于部署、opencv 学习内容:编程核心部分 学习要求:能读懂代码,复现代码 python:语言简洁,用于解决数据分析问题 面向对象:一种程序的编程思维&…

leecode 111.简单题 给定一个二叉树,计算二叉树的最小深度

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 叶子节点是指没有子节点的节点 class Solution {public int minDepth(TreeNode root) {/**第一反应是通过一个递归解决;*/if(root null){return 0;}int lmd minDepth(root.left);int rmd minDepth(roo…

MYSQL存储过程的创建

关于存储过程的题目 1、创建存储过程,查看user表中的所有数据 2、创建存储过程avg_order_quantity,返回所有订单的平均工资 3、创建存储过程show_max_bprice,用来查看bookS的单价最贵的价格 4、创建存储过程show_min_bprice,用来查看bookS的单价最低的价格,并将…

JVM之双亲委派机制

1.双亲委派机制 在Java中,类加载器具有层次结构。每个Java实现的类加载器中保存了一个成员变量叫“父”类加载器(parent),可以理解为上级,并不是继承关系。应用程序类加载器的parent父加载器是扩展类加载器&#xff0…

ulimit报错

问题 执行命令“ulimit -c 2048 ”时报错:“bash: ulimit: core file size: cannot modify limit: Operation not permitted” 原因 权限不够。 解决办法 执行命令“sudo gedit /etc/security/limits.conf”打开文件limits.conf文件内添加内容如下:…

在 Java 中从 for 循环中移出元素的原理及解决方案

在 Java 中从 for 循环中移出元素的原理及解决方案 在 Java 编程中,从集合中移除元素是常见操作。然而,直接在 for 循环中删除或移出元素往往会导致 ConcurrentModificationException(数组下标越界)。本文将详细解释这种情况发生…

【索引】数据库索引之散列索引

目录 1、什么是散列? 2、如何评价一个散列函数的好坏? 3、散列中的桶溢出处理 4、散列在索引中的应用 4、顺序索引和散列索引的比较 1、什么是散列? 顺序文件组织的一个缺点是我们必须访问索引结构来定位数据,或者必须使用二…

最经典实用的Buck电路仿真与设计 /Psim仿真Buck电路详解

为了节省大家时间,减少找软件的麻烦,提供了软件下载地址,如果需要下载,请访问下面的网站进行购买: Psim电力仿真软件安装-送教程和维也纳整流电路仿真-可远程安装-淘宝网 (taobao.com) 或者加作者微信,发20元微信红包便可直接获取下载软件,如果找不到软件,有需要下载的…

软件协同开发是一种通过团队合作来创建软件的开发方法

软件协同开发是一种通过团队合作来创建软件的开发方法。与传统的瀑布模型相比,软件协同开发强调团队成员之间的合作和沟通,以实现更高效的开发过程和更优质的软件产品。 在软件协同开发中,团队成员通过一系列工具和技术来协同工作。这些工具…

MATLAB2024a下的BP神经网络分类工具箱预测

1 打开BP神经网络分类工具箱GUI界面 图1-1 如图1-1所示,虽然叫神经网络模式识别但确实是BP神经网络分类工具箱,如果想要使用其他神经网络模型,可以打开左边的深度网络网络设计器,如图1-2、图1-3所示: 图1-2 图1-3 2 导…

uniapp条件编译使用教学(#ifdef、#ifndef)

条件编译介绍: 条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译 到不同平台。 #ifdef和#ifndef的区别: #ifdef APP-PLUS————只在APP显示 #ifndef APP-PLUS————除了APP不显示…

SQL面试题练习 —— 无效搜索

目录 1 题目2 建表语句3 题解 题目来源:百度。 1 题目 现有一份用户搜索日志,包含用户ID,时间,用户搜索内容。定义 无效搜索:如果用户下一次搜索内容中包含本次搜索内容,则认为本次搜索为无效搜索。请查询用…

以入站营销为核心,撬动To B业务增长新杠杆

传统的营销模式已逐渐失效,企业需要寻找新的营销策略来吸引客户并推动业务增长。Outbound marketing(出站营销)作为一种传统的营销方式,虽然在过去发挥了重要作用,但在数字化时代,其局限性也日益明显。 数字…

use embeddings stored in vector db to reduce work for LLM generating response

题意:使用存储在向量数据库中的嵌入来表示,以减少大型语言模型(LLM)生成响应的工作量。 问题背景: Im trying to understand what the correct strategy is for storing and using embeddings in a vector database, …

重温react-08

react中的createContext使用方式 简介一下,就是组件之间可以互相通信的比较好用的传值方式,话不多说直接上代码。 以下介绍的是类组件中的方式,在函数组件中不是如此使用的。 定义一个通用的方法 import { createContext } from "react…

论文学习 --- RL Regret-based Defense in Adversarial Reinforcement Learning

前言 个人拙见,如果我的理解有问题欢迎讨论 (●′ω`●) 原文链接:https://www.ifaamas.org/Proceedings/aamas2024/pdfs/p2633.pdf 研究背景 深度强化学习(Deep Reinforcement Learning, DRL)在复杂和安全关键任务中取得了显著成果,例如自动驾驶。然而,DRL策略容易受…