布尔数据类型是C++和java中的原始数据类型之一。尽管如此,它似乎是所有数据类型中最简单的一种,因为它只能有两个值- 符合事实的 或 错误的 但是,它确实是一个棘手的问题,因为java和C++中的用法有一定的差异,如果不小心,就会导致错误。在C++和java中使用的差异是:
- 宣言: 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;
}
}
- 默认值: 默认值是声明变量时最初存储在变量中的值,但未初始化为任何值。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. 将 错误的 默认情况下,如上面的输出所示。
- 在数学表达式中使用: 一个重要的区别是,布尔数据类型变量不能用于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);
}
}
- 与关系运算符一起使用: 在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"
);
}
}
}
- 浮点值: 在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);
}
}
- C++中的布尔数据类型的大小是1字节,而java中的布尔大小不是精确定义的,它依赖于java虚拟机(JVM)。
Java中的布尔值总是占用一个以上的字节,但占用的字节数取决于值存储的位置——在堆栈中还是在堆中。JVM使用32位堆栈单元,这将导致每个布尔值占据32位的完整堆栈单元。然而,堆上布尔值的大小取决于实现。
本文由 辛格先生 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。