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

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【java基础】java八大基本数据类型和运算符,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

说明

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

八大基本数据类型

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

整型

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

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

        // 二进制表示
        int e = 0b1; // 二进制使用0b或者0B开头,表示为二进制的1,也可以写成0B1
        int 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.1f
        double j = 1.1; // 或者1.1d、1.1D

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

        double x = Double.POSITIVE_INFINITY; // 这个值表示无穷大 例如1.0 / 0.0
        double y = Double.NEGATIVE_INFINITY; // 这个值表示无穷小 例如-1.0 / 0.0
        double 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的值为2
         b = 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填充高位,而>>使用符号位填充高位

运算符优先级

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146262.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!