当前位置: 首页 > news >正文

【java基础】java八大基本数据类型和运算符

文章目录

  • 说明
  • 八大基本数据类型
    • 整型
    • 浮点型
    • 字符型
    • 布尔类型
    • 类型转换
  • java运算符
    • 基础运算符
    • 二元运算符
    • 自增自减运算符
    • 关系和boolean运算符
    • 三元运算符
    • 位运算符
    • 运算符优先级

说明

这里介绍java的八大基本数据类型和运算符

八大基本数据类型

java中有八大数据类型,4个整型,2个浮点型,一个字符型和一个布尔型

整型

        // 整型为 byte、short、int、long,这4个分别是1、2、4、8个字节,// 全部都是有符号的,没有unsignedbyte a = 1;short b = 1;int c = 1;long d = 1;// 1l or 1L

对于基本数据类型,我们还可以使用2、8、16进制来进行表示

        // 二进制表示int e = 0b1; // 二进制使用0b或者0B开头,表示为二进制的1,也可以写成0B1int f = 0b1_1_1; // 二进制还可以使用_进行分隔,表示得更加清晰,f的值为7// 八进制表示int g = 010; // 八进制使用0开头,g的值为8,比较容易混淆,不建议使用// 十六进制表示int h = 0x11; // 十六进制使用0x或者0X开头,h的值为17

浮点型

        // 浮点型为 float、double,这2个分别为4、8字节float i = 1.1f; //或者 1.1fdouble j = 1.1; // 或者1.1d、1.1D

注意:小数默认是double
在浮点数中还有3个特殊的值,分别是无限大、无限小、不是数字

        double x = Double.POSITIVE_INFINITY; // 这个值表示无穷大 例如1.0 / 0.0double y = Double.NEGATIVE_INFINITY; // 这个值表示无穷小 例如-1.0 / 0.0double z = Double.NaN; // 表示不是一个数字,例如0.0 / 0.0

字符型

字符型使用char标识

        char k = 'a'; // char类型 使用 '',里面为任意单一字符

对于字符,下面有一些说明

java中内码(运行内存)中的char使用UTF16的方式编码,一个char占用两个字节,
但是某些字符需要两个char来表示。所以,一个字符会占用2个或4个字节。
java中外码中char使用UTF8的方式编码,一个字符占用1~6个字节。
UTF16编码中,英文字符占两个字节;绝大多数汉字(尤其是常用汉字)占用两个字节,
个别汉字(在后期加入unicode编码的汉字,一般是极少用到的生僻字)占用四个字节。
UTF8编码中,英文字符占用一个字节;绝大多数汉字占用三个字节,个别汉字占用四个字节。
(参考于https://www.cnblogs.com/fnlingnzb-learner/p/7272348.html)

	// 字符也可以使用\+u+4个16进制值来表示// 在注释中别把\和u写在一起char l = '\u1111'; 

布尔类型

布尔型为boolean

boolean m = true; // boolean的值只能为true和false

下面是boolean的一些说明

boolean类型被编译为int类型,等于是说JVM里占用字节和int完全一样,int是4个字节,于是boolean也是4字节
boolean数组在Oracle的JVM中,编码为byte数组,每个boolean元素占用8位=1字节
(参考于https://blog.csdn.net/amoscn/article/details/97377833)

类型转换

各个类型的关系如下
在这里插入图片描述
实线表示进行转换没有精度丢失,虚线表示会有精度丢失。箭头方向会自动转换,反方向都需要进行强转,并且可能会存在精度丢失,下面有几个例子

        int a = Integer.MAX_VALUE;// 箭头方向都会进行自动转换,b没有精度丢失,c会丢失精度long b = a;float c = a;System.out.println("a=" + a);System.out.println("b=" + b);System.out.println("c=" + c);

输出如下

a=2147483647
b=2147483647
c=2.14748365E9

还有一个例子如下,表面箭头反方向需要进行强转

        int a = 1000;int b = 100;// 箭头反方向需要进行强转转换// 如果超出该数据类型的最大值就会造成精度丢失byte c = (byte) a;byte d = (byte) b;System.out.println("a=" + a);System.out.println("b=" + b);System.out.println("c=" + c);System.out.println("d=" + d);

输出如下

a=1000
b=100
c=-24
d=100  

java运算符

基础运算符

java中 使用 +、-、*、/、% 来表示 加、减、乘、除、取余

二元运算符

二元运算符 +=,-=,*=,/=,%=。

		int a = 1;a += 1; // 等价于 a = a + 1,其他也是类似的

自增自减运算符

自增 a++、++a都表示将a的值加1. a–、–a表示将a的值减1

a++和++a的区别为在进行运算的时候,a++会在运算之后将a的值加1,而++a会将a的值加1后进行运算, a–和–a也是类似的

         int b = 1;int c = b++; // c的值为1,b的值为2b = 1;int d = ++b; // d的值为2,b的值也为2

关系和boolean运算符

  1. ==用于比较是否相等,!=检测不相等,还有如 >(大于) >=(大于等于) <(小于) <=(小于等于)
  2. &&表示逻辑与,|| 表示逻辑或,都是按照短路方式进行求值的,就是当第一个表达式满足时,第二个表达式就不会计算了

三元运算符

使用 ? :

c = 表达式 ? a : b, 如果表达式为true,那么c就会为a,否则c为b

位运算符

|表示或,&表示与,^表示异或,~表示取反
如果|和&应用在布尔值上时,和||和&&是类似的,但没有短路机制

>>表示右移,<<表示左移,
移位运算符会对操作数进行模32的操作(如果是long就是64)
相当于 1<<35 和 1 << 3是相等的>>> 和 >> 一样的,但是>>>用0填充高位,而>>使用符号位填充高位

运算符优先级

在这里插入图片描述

http://www.lryc.cn/news/16870.html

相关文章:

  • Mybatis源码学习笔记(四)之Mybatis执行增删改查方法的流程解析
  • 浅谈测试用例设计
  • python 利用装饰器实现类似于flask路由
  • git 拉取远程分支到本地
  • Answering Multi-Dimensional Range Queries under Local Differential Privacy
  • 手把手搭建springboot项目05-springboot整合Redis及其业务场景
  • Flutter基础语法(六)var、final、const、late
  • Linux之安装node
  • 二叉树、二叉搜索树、二叉树的最近祖先、二叉树的层序遍历【零神基础精讲】
  • 【算法】【数组与矩阵模块】求最长可整合子数组和子数组的长度
  • 数据结构:循环队列的实现(leetcode622.设计循环队列)
  • [qiankun]实战问题汇总
  • Kafka(6):服务端常用参数配置
  • 2023爱分析·云原生智能运维中台市场厂商评估报告:秒云(miaoyun.io)
  • hadoop容器化部署
  • 【07-JVM面试专题-JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态链接吧?】
  • Java性能优化-GC优化基础
  • 【Tomcat】IDEA编译Tomcat源码-手把手教程
  • 如何弄小程序?公司企业可以这样做小程序
  • 【Git】IDEA集合Git和码云
  • [USACO03FALL / HAOI2006] 受欢迎的牛 G(C++,强连通分量)
  • Vue 动态路由接口数据结构化为符合VueRouter的声明结构及菜单导航结构、动态路由懒加载方法
  • Python----------字符串
  • 日志收集笔记(架构设计、Log4j2项目初始化、Lombok)
  • 一文教你玩转 Apache Doris 分区分桶新功能|新版本揭秘
  • 数据挖掘,计算机网络、操作系统刷题笔记54
  • 将数组中的每个元素四舍五入到指定的精度numpy.rint()
  • Web安全之服务器端请求伪造(SSRF)类漏洞详解及预防
  • LeetCode:239. 滑动窗口最大值
  • JS 函数参数(动态参数、剩余参数)