【JAVA】数据类型,类型转换与提升,运算符,标识符命名规则

news2024/11/26 21:29:42

🍉内容专栏:【JAVA】

🍉本文脉络:数据类型,类型转换与提升,运算符,标识符命名规则

🍉本文作者:Melon_西西

🍉发布时间 :2023.7.12

目录

 1. 字面常量

2. 数据类型:四类八种

 3.类型转换

3.1 自动类型转换(隐式) 自动类型转换:

3.2 强制类型转换(显式) 强制类型转换:

4.类型提升

4.1 不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。

4.2. byte与byte的运算

5. 字符串类型

5.算术运算符

5.1. 基本四则运算符:加减乘除模(+ - * / %)

5.2. 增量运算符 += -= *= %=

5.3.自增/自减运算符 ++  --

5.4. 关系运算符

5.5. 逻辑运算符(重点)

5.5.1                                 布尔表达式1  &&  布尔表达式2(有一个假就是假)

5.5.2.                               布尔表达式1    ||   布尔表达式2  (有一个真就是真)​编辑

 5.5.3. 逻辑非 !               

6. 位运算符

 7. 条件运算符

 8. 运算符的优先级

9.标识符


 1. 字面常量

常量即程序运行期间,固定不变的量称为常量,分类:

1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。

2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000

3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49 4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘1’

5. 布尔常量:只有两种true和false

6. 空常量:null

2. 数据类型:四类八种

在Java中数据类型主要分为两类:基本数据类型和引用数据类型

四类:整型、浮点型、字符型以及布尔型

八种:

 分别输出long表示的数值的取值范围:

public class Test01 {
    public static void main (String []args){
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);//L要大写
    }
}

 关于小数:

Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)

        float y=12.5;//会报错,不安全,因为大雨了4字节
        float y1=12.5f;//这样就不会报错了
        double num=1.1;
        System.out.println(num*num);//结果不是1.21,而是1.2100000000002     
        //除法运算小数点:
        int a1=1;
        int a2=2;
        System.out.println(a1/a2);//结果是0,不是0.5,不能够保存小数
        double b1=1;
        double b2=2;
        System.out.println(b1/b2);//结果是0.5,能够保存小数

字节是计算机中表示空间大小的基本单位.
计算机使用二进制表示数据. 我们认为 8 个二进制位(bit) 为一个字节(Byte).
我们平时的计算机为 8GB 内存, 意思是 8G 个字节.
其中 1KB = 1024 Byte, 1MB = 1024 KB, 1GB = 1024 MB.
所以 8GB 相当于 80 多亿个字节.

 3.类型转换

3.1 自动类型转换(隐式) 自动类型转换:

代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。

特点:数据范围小的转为数 据范围大的时会自动进行。

3.2 强制类型转换(显式) 强制类型转换:

当进行操作时,代码需要经过一定的格式处理,不能自动完成。

特点:数据范围大的到数据范围小的。

        int a = 10;
        long b = 100L;
        //a = b; // 编译失败,不可以把8个字节的给四个字节的
        //强制转换(显式):可能丢失数据,用于把大的转为小的
        a=(int)b;
        //隐式类型转换,编译器自动把a 从int升级为double
        b = a; // 可以通过编译
        //类型提升
        int a1 = 10;
        long b1 = 20;
        //int c = a1 + b1; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据
        long d = a1 + b1; // 编译成功:a + b==>int + long--->long + long 赋值给long

注意:

1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型

2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失

3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查

4. 强制类型转换不一定能成功,不相干的类型不能互相转换

4.类型提升

4.1 不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的

. int与long之间:int会被提升为long

4.2. byte与byte的运算

对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算

        byte a2 = 125;
        byte b2 = 123;
        //byte c2 = a2 + b2;//报错,因为小于4字节的内容,会提升为int参与运算
        byte c2=(byte)(a2+b2);
        System.out.println(c2);//强转换,这样可能丢失数据。会截断,结果是-8
        int d2=a2+b2;
        System.out.println(d2);//结果是228,不发生截断

5. 字符串类型

 在Java中使用String类定义字符串类型

        String str="HELLO";
        System.out.println(str);
        //string与int的转换
        int a5=100;
        //调用String这个类型的方法
        String s5=String.valueOf(a5);
        System.out.println(s5);
        //拼接
        String s6=a+"afternoon";//输出100afternoon
        System.out.println(s6);
        String s7=10+20+"xixi";
        String s8="xixi"+10+20;
        System.out.println(s7);//输出30xixi
        System.out.println(s8);//输出xixi1020
        //调用Integer这个类型的方法,来实现转换
        String str2="1009";
        int t2=Integer.valueOf(str2);
        System.out.println(t2+1);//输出1010

5.算术运算符

5.1. 基本四则运算符:加减乘除模(+ - * / %)

都是二元运算符,使用时必须要有左右两个操作数

int / int 结果还是int类型,而且会向下取整

做除法和取模时,右操作数不能为0

% 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的

详细看下面例子:

public class Text03 {
    public static void main(String[] args) {
        //除余的数不可以为0
        System.out. println(5/2);        //结果是2
        System.out.println((float)5/2);  //相当于把5转成5.0除以2=2.5
        System.out.println(5/(float)2);  //相当于2转成2.0,5除以2.0=2.5
        System.out.println((float) (5/2));//相当于5/2等于2,把2转成2.0

        System.out.println(10%3);   //1
        System.out.println(10%-3);  //1
        System.out.println(-10%3);  //-1
        System.out.println(-10%-3); //-1
        System.out.println(11.5%2); //1.5
    }
}

5.2. 增量运算符 += -= *= %=

该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。

int a = 1;
a += 2;                // 相当于 a = a + 2
System.out.println(a); // 输出3
a -= 1;                // 相当于 a = a - 1
System.out.println(a); // 输出2
a *= 3;                // 相当于 a = a * 3
System.out.println(a); // 输出6
a /= 3;                // 相当于 a = a / 3
System.out.println(a); // 输出2
a %= 3;                // 相当于 a = a % 2
System.out.println(a); // 输出2

5.3.自增/自减运算符 ++  --

++是给变量的值+1,--是给变量的值-1。

如果单独使用,前置++和后置++没有任何区别;如果混合使用:

        int a1 = 10;
        int b1 = ++a1 ;  //a=a+1 ,b=a
        System.out.println(a1);  //11
        System.out.println(b1);  //11
        int a2 = 10;
        int b2 = a2++;   //b=a ,a=a+1
        System.out.println(a2);  //11
        System.out.println(b2);  //10

【前置++】先+1,然后使用变量+1之后的值,

【后置++】先使用变量原来的值,表达式 结束时给变量+1

只有变量才能使用自增/自减运算符,常量不能使用,因为常量不允许被修改

5.4. 关系运算符

关系运算符主要有六个: == != < > = ,其计算结果是 true 或者 false,没有0或1

        int a = 10;
        int b = 20;
        // 注意:在Java中 = 表示赋值,要与数学中的含义区分
        // 在Java中 == 表示相等
        System.out.println(a == b); // false
        System.out.println(a != b); // true
        System.out.println(a < b); // true
        System.out.println(a > b); // false
        System.out.println(a <= b); // true
        System.out.println(a >= b); // false
        //注意这种是错的:
       //System.out.println(3<a<5);//错误,算数异常

5.5. 逻辑运算符(重点)

逻辑运算符主要有三个: && || ! ,运算结果都是 boolean类型。

5.5.1                                 布尔表达式1  &&  布尔表达式2(有一个假就是假)

5.5.2.                               布尔表达式1    ||   布尔表达式2  (有一个真就是真)

 5.5.3. 逻辑非 !               

语法规则:! 表达式                                  真变假,假变真。

int a = 1;
System.out.println(!(a == 1)); // a == 1 为true,取个非就是false
System.out.println(!(a != 1)); // a != 1 为false,取个非就是true

 短路求值 && 和 || 遵守短路求值的规则

对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.

对于  || ,如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式

& 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短路求值

6. 位运算符

位运算符主要有四个: & | ~ ^ ,~ 是一元运算符外,其余都是二元运算符。

位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位 的每一位依次进行计算. 1。

按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0

按位或: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0

按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0

.按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1.

 

 7. 条件运算符

 表达式1 ? 表达式2 : 表达式3

当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值

; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.

也是 Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法.

/ 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;

 8. 运算符的优先级

运算符之间是有优先级的., 在可能存在歧义的代码中加上括号即可

9.标识符

标识符:在程序中由用户给类名、方法名或 者变量所取的名字。

标识符中可以包含:字母、数字以及 下划线和 $ 符号等等。

标识符不能以数字开头,也不能是关键字,且严格区分大小写

建议:

类名:   每个单词的首字母大写(大驼峰)

变量名、方法名:首字母小写,后面每个单词的首字母大写(小驼峰)

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

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

相关文章

【数据结构】数据结构的基本概念

文章目录 思维导图数据结构的基本概念和术语数据结构三要素逻辑结构存储结构数据的运算 重要知识总结 思维导图 数据结构的基本概念和术语 数据&#xff1a;数据是信息的载体。是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据…

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 12 日论文合集)

文章目录 一、检测相关(7篇)1.1 3D detection of roof sections from a single satellite image and application to LOD2-building reconstruction1.2 Towards exploring adversarial learning for anomaly detection in complex driving scenes1.3 Unveiling the invisible: …

探索嵌入式系统:初学者必知的核心概念解析

探索嵌入式系统&#xff1a;初学者必知的核心概念解析 嵌入式系统是指嵌入在其他设备或系统中的特定目的的计算机系统。它们通常用于控制、监测或执行特定任务&#xff0c;例如汽车的引擎控制单元、智能手机的操作系统或家电中的微控制器。对于初学者来说&#xff0c;以下是一…

Android自动化测试中如何处理各种弹窗

目录 弹窗的种类: APP内的业务弹窗 弹窗处理 watcher的使用 实战案例 总结&#xff1a; 在UI自动化测试中弹窗是影响自动化用例稳定性的一大因素&#xff0c;如何方便快捷的处理各种情况下的弹窗&#xff0c;是搞UI自动化测试必须要面临的问题. 弹窗的种类: 安装APP时的…

MySQL事务 | 隔离级别 | 数据一致性

文章目录 简介一、事务并发问题1. 脏读&#xff08;Dirty Read&#xff09;2. 不可重复读&#xff08;Non-repeatable Read&#xff09;3. 幻读&#xff08;Phantom Read&#xff09;幻读和不可重复读的区别 二、事务隔离级别1. 回顾事务2. 事务级别3. 特点和优缺点 三、事务隔…

科研笔记:一些有用的网站整理(更新中)

1 论文整理网站 整理AI相关领域的一些综述GitHub - KaiyuanGao/AI-Surveys: 整理AI相关领域的一些综述时间序列的paper/code汇总GitHub - qingsongedu/awesome-AI-for-time-series-papers: A professional list of Papers, Tutorials, and Surveys on AI for Time Series in t…

OpenSource - Spring Startup Ananlyzer

文章目录 &#x1f680;Optimization of Spring Startup核心能力&#x1f4c8;Spring应用启动数据采集报告应用启动时长优化 &#x1f4c8;Spring应用启动数据采集报告安装jar包配置项应用启动自定义扩展 &#x1f680;应用启动时长优化支持异步化的Bean类型接入异步Bean优化 开…

idea配置类注解和方法注解最详细教材

1.配置类注释 点击setting 方法一&#xff1a; 1.按照要求添加下图中的模板 /*** Author: aaa* Date: ${YEAR}/${MONTH}/${DAY}* Description: */ 2.勾选下面的两个勾后点击apply 方法二&#xff1a; 我们看到了在刚刚那个模板中有这样一句话 这句话是表示创建项目的时候会…

CASAIM与大疆达成全自动化测量技术合作,CASAIM IS全自动化蓝光测量仪实现无人机叶片全尺寸检测及质量控制

近期&#xff0c;CASAIM与大疆达成全自动化测量技术合作&#xff0c;CASAIM IS全自动化蓝光测量仪实现无人机叶片全尺寸检测及质量控制。 无人机行业在过去几年里取得了迅猛发展&#xff0c;大疆是全球领先的无人飞行器控制系统及无人机解决方案的研发商和生产商&#xff0c;客…

2023年网页设计制作工具盘点

过去&#xff0c;专业人员使用HTMLL、CSS、Javascript等代码手动编写和构建网站。现在有越来越多的智能网页制作工具来帮助任何人实现零代码基础&#xff0c;随意建立和设计网站。在本文中&#xff0c;我们将向您介绍2023年流行的网页制作工具。 1.即时设计 即时设计是一款UI…

​python接口自动化(三十一)--html测试报告通过邮件发出去——下(详解)​

简介  本篇总结了 QQ &#xff08;SSL&#xff09;邮箱和 163&#xff08;非SSL&#xff09; 邮箱发送邮件&#xff0c;专治各种不行&#xff0c;总之看完这篇以后麻麻再也不用担心我的邮件收不到了。以下代码兼容 python2 和 python3&#xff0c;运行无异常&#xff0c;放心大…

Jmeter脚本参数化和正则匹配

目录 一、参数化 1.用户定义的变量 2.CSV数据文件设置 3.用户参数 二、正则提取 1.JSON提取器 2.正则表达式提取器 我们在做接口测试过程中&#xff0c;往往会遇到以下几种情况 每次发送请求&#xff0c;都需要更改参数值为未使用的参数值&#xff0c;比如手机号注册、…

python爬虫_requests获取小黄人表情保存到文件夹

文章目录 ⭐前言&#x1f496; requests简介&#xff08;发送请求&#xff09;&#x1f496; urlretrieve简介&#xff08;下载远程图片&#xff09;&#x1f496; 获取图片的接口保存到本地&#x1f496; 加餐环节&#xff1a;前端vue3antd展示图片 ⭐结束 ⭐前言 大家好&…

Hightopo 使用心得(4)- 3D 场景 Graph3dView 与 Obj 模型

在前一篇文章《Hightopo 使用心得&#xff08;3&#xff09;- 吸附与锚点》中&#xff0c;我们在结尾处提到过 HT 的 3D 场景。这里我们通过代码建立一个 3D 场景并添加一个 Obj 模型来介绍一下 HT for Web 在 3D 场景和模型加载方面的使用。 这是我们最终实现的效果&#xff…

vue3使用monaco-editor插件,报错Unexpected usage

在使用monaco-editor插件的时候&#xff0c;运行时没有报错&#xff0c;打开页面报如上错误&#xff0c;可以关掉&#xff0c;但是页面变了 还会再出现&#xff0c;上网找了一圈报错&#xff0c;是因为插件引入时产生的问题 原来的 import * as Monaco from monaco-editor更改…

论文笔记--TinyBERT: Distilling BERT for Natural Language Understanding

论文笔记--TinyBERT: Distilling BERT for Natural Language Understanding 1. 文章简介2. 文章概括3 文章重点技术3.1 Transformer Distillation3.2 两阶段蒸馏 4. 数值实验5. 文章亮点5. 原文传送门6. References 1. 文章简介 标题&#xff1a;TinyBERT: Distilling BERT fo…

Java四个月学不学的会?我分享一下我的经历来告诉你

先说结论&#xff0c;java培训 四个月一般是能达到能上手工作的水平的&#xff0c;但是高中毕业就算了。高中毕业哪怕你能上手工作了&#xff0c;需求能完成了&#xff0c;也是大概率找不到工作的&#xff0c;这一行可能最看重学历的行业之一了。虽然说句实在话&#xff0c;就…

【Linux】基础开发工具——gcc/g++篇

文章目录 一、预处理1.1 头文件展开1.2 条件编译 二、编译三、汇编四、链接4.1 什么是库?4.2 库的分类4.3 目标文件和库是如何链接的&#xff1f;4.3.1 动态链接4.3.2 静态链接 4.4 动静态链接的优缺点对比 五、Debug&&release 前言 &#xff1a;  在前面的文章里给大…

VMware将虚拟机网络设置为NAT模式

虚拟机有vmware和desktop&#xff0c;本人一直使用的是vmware。安装好vmware并激活后&#xff0c;创建完虚拟机。(需要vmware和激活码的可留言) 进入虚拟机设置&#xff0c;网络适配器选择NAT模式 在虚拟机工具栏->菜单栏点击编辑&#xff0c;选择“虚拟网络编辑器”。 选择…

数据库应用:MySQL数据库用户管理

目录 一、理论 1.用户管理 2.授权控制 二、实验 1.数据库用户管理 2.数据库用户授权 三、总结 一、理论 1.用户管理 &#xff08;1&#xff09;用户信息 MySQL 中的用户信息&#xff0c;都存储在系统数据库 mysql 的 user 表中。 use mysql; select * from user lim…