• 【Java SE】数据类型常见错误及字符串拼接与转换


    96fded2715d54a1a9dbf8d591b0f6cc6.png作者简介:一名大一在校生 

    1dcdea841dc84e5daf2868d121ca7b4e.png个人主页:月亮嚼成星~

    06594baba3894494a77f632d61a0a55d.png个人WeChat:yx1552029968

    cf768df40706413e9fef3a992ed367c8.png系列专栏:JavaSE基础

    39190fda869b4100bc23b9d7a235d91c.png每日一句:如果你要做一件事,不要到处宣言自己的想法,只管安安静静地去做,值不值,时间是最好的证明,自己的人生,得自己负责。

    目录

    🐳1.基本数据类型一览表:

    🐳2.数据类型常见错误:

    🐬2.1使用变量没有赋初值

    🐬 2.2变量超出表示范围

    🐬 2.3精度舍弃错误

    🐬2.4boolean类型理解错误

    🐬2.5数据类型转换错误

    🐳3.字符串拼接

    ​🐳 4.字符串转换

    🐬4.1 int转换为String

    🐬4.2 String转换为int


    🐳1.基本数据类型一览表:

    注意:不管几位的操作系统Java中基本数据类型内存占用情况都是如上表所示!并且整型和浮点型都是有符号的。

    🐳2.数据类型常见错误:

    🐬2.1使用变量没有赋初值

    1. public class Test {
    2. //使用变量没有赋初值
    3. public static void main(String[] args) {
    4. int a;
    5. System.out.println(a);
    6. }
    7. }

    🐬 2.2变量超出表示范围

    1. public class Test {
    2. public static void main(String[] args) {
    3. //表示int类型的范围
    4. System.out.println(Integer.MIN_VALUE);
    5. System.out.println(Integer.MAX_VALUE);
    6. int a=2147483648;
    7. }
    8. // //使用变量没有赋初值
    9. // public static void main1(String[] args) {
    10. // int a;
    11. // System.out.println(a);
    12. // }
    13. }
     
    

     出现超过范围系统会直接报错,如果是以表达式的形式需要运行才能显示错误,如:

    1. public class Test {
    2. public static void main(String[] args) {
    3. System.out.println(2147483647+1);
    4. }
    5. // public static void main2(String[] args) {
    6. // //表示int类型的范围
    7. // System.out.println(Integer.MIN_VALUE);
    8. // System.out.println(Integer.MAX_VALUE);
    9. // int a=2147483648;
    10. // }
    11. // //使用变量没有赋初值
    12. // public static void main1(String[] args) {
    13. // int a;
    14. // System.out.println(a);
    15. // }
    16. }

    🐬 2.3精度舍弃错误

    1. public class Test {
    2. public static void main(String[] args) {
    3. int a=1;
    4. int b=2;
    5. int c=a/b;
    6. System.out.println(c);
    7. }
    8. }

    按我们一般的看法来说,结果应该是0.5,这里的结果却是0,原因是:在 Java中, int除以int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.5, 需要使用 double 类型计算.

    1. public class Test {
    2. public static void main(String[] args) {
    3. int a=1;
    4. int b=2;
    5. double c=1.0/b;
    6. System.out.println(c);
    7. }
    8. }

     我们再来看一个:

    1. public class Test {
    2. public static void main(String[] args) {
    3. double a=1.1;
    4. System.out.println(a*a);
    5. }
    6. }

    一般我们会认为它的结果是1.21,但是结果呢?

    原因是:double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

    🐬2.4boolean类型理解错误

    1. public class Test {
    2. public static void main(String[] args) {
    3. boolean a=true;
    4. System.out.println(a);
    5. boolean b=1;//可行吗?
    6. }
    7. }

     这里报错了,原因是:boolean 类型的变量只有两种取值, true 表示真, false 表示假。
    Java的boolean类型和 int不能相互转换, 不存在1表示 true, 0表示false这样的用法.

    🐬2.5数据类型转换错误

    1. public class Test {
    2. public static void main(String[] args) {
    3. int a=100;
    4. long b=500L;
    5. b=a;//可行?
    6. a=b;//可行?
    7. }
    8. }

     为什么报错:原因在于Java的自动类型转换(隐式):代码不需要经过任何处理,在代码编译时,编译会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。所以int可以自动转换为long,反过来就不行。

    再看一个:

    1. public class Test {
    2. public static void main(String[] args) {
    3. byte a=10;
    4. byte b=20;
    5. byte c=a+b;
    6. System.out.println(c);
    7. }
    8. }

     

     为什么会报错?可能有人会问这同种数据类型运算也会报错??

    原因:byte和byte都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a和b都提升成int, 再进行计算, 得到的结果也是int, 这是赋给 c, 就会出现上述错误.
    由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如byte 和short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算。

    🐳3.字符串拼接

    1. public class Test {
    2. public static void main(String[] args) {
    3. String a="hello";
    4. String b="world";
    5. System.out.println(a);
    6. System.out.println(b);
    7. System.out.println((a + b));
    8. }
    9. }

    🐳 4.字符串转换

    在有些情况下,需要将字符串和整形数字之间进行转换:


    🐬4.1 int转换为String

    1. public class Test {
    2. public static void main(String[] args) {
    3. int num=10;
    4. //方法一
    5. String sr=num+"";
    6. //方法二
    7. String st=String.valueOf(num);
    8. System.out.println(sr);
    9. System.out.println(st);
    10. }
    11. }

     

    🐬4.2 String转换为int

    1. public class Test {
    2. public static void main(String[] args) {
    3. String str = "10000";
    4. //方法一
    5. int num = Integer.parseInt(str);
    6. //方法二
    7. int number=Integer.valueOf(str);
    8. System.out.println(num);
    9. System.out.println(number);
    10. }
    11. }

     

     推荐使用第一种。

    多谢兄弟们

    码字不易,求个三连。

    查看源图像

  • 相关阅读:
    [极客大挑战 2019]Upload--BUUCTF
    tcp checksum 0xffff instead of 0x0000 see rfc 1624
    【redis】SpringBoot整合+geo地理位置应用
    Leetcoder Day32| 贪心算法part05
    长短期记忆网络(LSTM)
    vue-h5移动Web的Flex布局
    java计算机毕业设计学生选课系统源码+系统+mysql数据库+lw文档+部署
    Neodynamic ZPLPrinter Web API for Docker
    数据结构_第二章 线性表
    EasyExcel
  • 原文地址:https://blog.csdn.net/m0_67995737/article/details/125987103