C++与java中布尔数据类型的比较

布尔数据类型是C++和java中的原始数据类型之一。尽管如此,它似乎是所有数据类型中最简单的一种,因为它只能有两个值- 符合事实的 错误的 但是,它确实是一个棘手的问题,因为java和C++中的用法有一定的差异,如果不小心,就会导致错误。在C++和java中使用的差异是:

null
  1. 宣言: C++中布尔数据类型的声明涉及关键字的使用 布尔 ,而Java中的声明是通过关键字完成的 布尔值 . C++代码:

    #include<iostream>
    using namespace std;
    int main()
    {
    bool a = true ;
    // Syntax of Java
    // boolean b = false;
    return 0;
    }

    
    

    Java代码:

    class A
    {
    public static void main(String args[])
    {
    boolean a = true ;
    // Syntax of C++
    // bool b = false;
    }
    }

    
    

  2. 默认值: 默认值是声明变量时最初存储在变量中的值,但未初始化为任何值。java中的布尔数据类型的默认值是false,而C++中,它没有默认值,包含垃圾值(只有在全局变量的情况下,它将具有默认值为false)。

    C++代码:

    #include<iostream>
    using namespace std;
    int main()
    {
    // Declaring a boolean type array in C++
    bool a[5];
    int i;
    for (i=0; i<5; ++i)
    {
    cout << a[i] << " " ;
    }
    return 0;
    }

    
    

    上述程序中存储在数组中的所有值都是垃圾值,不是固定值。

    Java代码:

    class A
    {
    public static void main(String args[])
    {
    // Declaring a boolean type array in Java
    boolean a[];
    a = new boolean [ 5 ];
    int i;
    for (i= 0 ; i< 5 ; ++i)
    {
    System.out.println(a[i]);
    }
    }
    }

    
    

    输出:

    false
    false
    false
    false
    false
    

    数组中的所有值 A. 错误的 默认情况下,如上面的输出所示。

  3. 在数学表达式中使用: 一个重要的区别是,布尔数据类型变量不能用于java中的数学表达式,因为它会给出错误,而C++中可以很容易地使用布尔数据类型变量。

    这种行为的原因是,在Java中,布尔变量没有转换为整数值(0或1),因此不能这样使用它们。

    C++代码:

    #include<iostream>
    using namespace std;
    int main()
    {
    int a;
    bool b = true ;
    bool c = false ;
    a = b + c;
    cout << a;
    return 0;
    }

    
    

    输出:

    1
    

    输出将为1,如下所示 符合事实的 将转换为值1和 错误的 将转换为值0,因此 A. 将存储1,而相同的代码将在java中给出一个错误,如下所示-

    Java代码:

    class A
    {
    public static void main(String args[])
    {
    int a;
    boolean b = true ;
    boolean c = false ;
    //The following line will give an error
    a = b + c;
    System.out.println(a);
    }
    }

    
    

  4. 与关系运算符一起使用: 在Java中,布尔变量不能与关系运算符一起使用,比如 ,<=,和>= ,而在C++中,它们可以以这种方式使用。 但是,它们可以与==和!=java和C++中的运算符。

    这可以解释为关系操作符以数值方式运行,布尔变量不以java数值存储,而是以C++存储。 错误的 存储为0和 符合事实的 如表1所示。

    C++代码:

    #include<iostream>
    using namespace std;
    int main()
    {
    bool a = true ;
    bool b = false ;
    if (a > b)
    {
    cout << "a is greater than b" ;
    }
    else
    {
    cout << "a is smaller than b" ;
    }
    return 0;
    }

    
    

    输出:

    a is greater than b

    Java代码:

    class a
    {
    public static void main(String args[])
    {
    boolean a = true ;
    boolean b = false ;
    //The following line will give an error
    if (a > b)
    {
    System.out.println( "a is greater than b" );
    }
    else
    {
    System.out.println( "a is smaller than b" );
    }
    }
    }

    
    

  5. 浮点值: 在C++中,浮动的整数值可以很容易地分配给布尔变量,因为它们将隐式类型转换成布尔函数,而java中这样做会导致错误。

    C++代码:

    #include<iostream>
    using namespace std;
    int main()
    {
    // storing integer value in bool type variable
    bool a = 7;
    // storing floating value in bool type variable
    bool b = 7.0;
    cout << a << " " << b;
    return 0;
    }

    
    

    输出:

    1 1

    上面的输出结果是将任何值存储在除0以外的布尔变量中,将导致该变量中存储1。

    Java代码:

    class a
    {
    public static void main(String args[])
    {
    // invalid assignment in Java
    boolean a = 7 ;
    // invalid assignment in Java
    boolean b = 7.0 ;
    System.out.println(a);
    System.out.println(b);
    }
    }

    
    

  6. C++中的布尔数据类型的大小是1字节,而java中的布尔大小不是精确定义的,它依赖于java虚拟机(JVM)。

    Java中的布尔值总是占用一个以上的字节,但占用的字节数取决于值存储的位置——在堆栈中还是在堆中。JVM使用32位堆栈单元,这将导致每个布尔值占据32位的完整堆栈单元。然而,堆上布尔值的大小取决于实现。

    本文由 辛格先生 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

    如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享