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

🍉内容专栏:【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升级为doubleb = 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);//强转换,这样可能丢失数据。会截断,结果是-8int 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";//输出100afternoonSystem.out.println(s6);String s7=10+20+"xixi";String s8="xixi"+10+20;System.out.println(s7);//输出30xixiSystem.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) {//除余的数不可以为0System.out. println(5/2);        //结果是2System.out.println((float)5/2);  //相当于把5转成5.0除以2=2.5System.out.println(5/(float)2);  //相当于2转成2.0,5除以2.0=2.5System.out.println((float) (5/2));//相当于5/2等于2,把2转成2.0System.out.println(10%3);   //1System.out.println(10%-3);  //1System.out.println(-10%3);  //-1System.out.println(-10%-3); //-1System.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=aSystem.out.println(a1);  //11System.out.println(b1);  //11int a2 = 10;int b2 = a2++;   //b=a ,a=a+1System.out.println(a2);  //11System.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); // falseSystem.out.println(a != b); // trueSystem.out.println(a < b); // trueSystem.out.println(a > b); // falseSystem.out.println(a <= b); // trueSystem.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.hqwc.cn/news/19546.html

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

相关文章

阿里云限时福利:WoSign品牌SSL证书首购4折优惠

阿里云SSL证书限时首购福利&#xff1a;2023年07月04日至08月31日&#xff0c;阿里云平台WoSign品牌系列SSL证书首购4折优惠&#xff0c;惊喜折扣、限时促销、限量抢购&#xff0c;机会不容错过&#xff01; 阿里云平台WoSignSSL证书 沃通CA是依法设立的第三方电子认证服务机构…

vLLM大模型推理加速方案原理(PagedAttention)

一、vLLM 简介 vLLM 用于大模型并行推理加速&#xff0c;核心是 PagedAttention 算法&#xff0c;官网为&#xff1a;https://vllm.ai/。 vLLM 主要特性&#xff1a; 先进的服务吞吐量通过 PagedAttention 对注意力 key 和 value 进行内存管理对传入请求的批处理针对 CUDA 内…

SwiftUI + Swift 设备振动

如何让设备振动呢 iPhone 6S 3D Touch&#xff0c;可以识别轻&#xff0c;中&#xff0c;重三种按压力度&#xff0c;配合恰到好处的振动有利于提升交互体验&#xff0c;但后面的新设备都不支持 3D Touch 了&#xff0c;改为了检测按压时间&#xff0c;按同一个图标&#xff0…

尚医通04:Axios Node Npm bable webpack+前端工程改造

目录 本日学习 内容介绍 Axios Node NPM包管理器 本日学习 1. 了解Axios :他是异步请求用的&#xff0c;前后端。 用于在浏览器和 Node.js 中发送 HTTP 请求。它支持从服务器获取数据、上传数据以及执行其他与 HTTP 相关的操作。 2.Node:它允许你在服务器端运行 JavaScrip…

python PYQT5 键盘,鼠标,绘制,焦点,改变,输入法,事件的方法和使用例子

https://img-blog.csdnimg.cn/7630017d3ee444eab9bdedf8d48d575f.png from PyQt5.Qt import * import sys class MyQwidget(QWidget):def __init__(self):super().__init__()def showEvent(self, a0) -> None:print("窗口被展示出来",a0)def closeEvent(self,a0) …

linux开发工具:repo

1&#xff1a;repo简单介绍 repo是Google开发的用于管理Android版本库的一个工具&#xff0c;它是由一系列的Python脚本组成&#xff0c;封装了一系列的Git命令&#xff0c;用来统一管理多个Git仓库。repo不是用于取代git&#xff0c;而是简化了对多个Git版本库的管理。 repo…

Java中可以使用哪些系统架构?怎样选择?

架构&#xff0c;又名软件架构&#xff0c;是有关软件整体结构与组件的抽象描述&#xff0c;用于指导大型软件系统各个方面的设计。 Java企业级的应用根据业务的复杂程度&#xff0c;通常使用的系统架构有应用架构、垂直应用架构、面向服务的架构(Service-Oriented Architectu…

IDEA 导入多模块项目并设置运行

1、导入多模块项目 导入的步骤点击左上角File->New->Module from Existing Sources&#xff0c;最后点击选择项目的pom文件即可 2、设置模块 如果pom.xml文件是灰色并且有横杠&#xff0c;则需要这样设置&#xff1a; 把√去掉。 项目结构如图所示&#xff1a; 本项…

816. 数组翻转

链接&#xff1a; 链接 题目&#xff1a; 给定一个长度为 nn 的数组 aa 和一个整数 sizesize&#xff0c;请你编写一个函数&#xff0c;void reverse(int a[], int size)&#xff0c;实现将数组 aa 中的前 sizesize 个数翻转。 输出翻转后的数组 aa。 输入格式 第一行包含两个整…

【Docker】简单的Linux安装Redis

目录 Docker 安装 Redis拉取镜像安装容器修改配置文件容器随docker启动自动运行redis客户端 史上最详细Docker安装Redis &#xff08;含每一步的图解&#xff09;实战 Docker 安装 Redis 拉取镜像 docker pull redis安装容器 创建redis配置文件目录&#xff1a;如果内部没有相…

webRTC实现P2P音视频通话(无服务端)

文章目录 先看效果视频对话源码音频对话源码遇到问题解决方案 先看效果 视频对话源码 虽然是vue项目&#xff0c;但是我卸载了主页的index页面&#xff0c;仅仅为了测试&#xff0c; <!DOCTYPE html> <html lang"en"> <head><meta charset"…

IDEA debug 断点调试技巧

1、首先看下IDEA中Debug模式下的界面&#xff1a; ① 以Debug模式启动服务&#xff0c;左边的一个按钮则是以Run模式启动。在开发中&#xff0c;我一般会直接启动Debug模式&#xff0c;方便随时调试代码。 ② 断点&#xff1a;在左边行号栏单击左键&#xff0c;或者快捷键Ctrl…