深入理解:Java是類型安全的語言,而C++是非類型安全的語言
更新時間:2013年06月04日 10:34:23 作者:
本篇文章是對Java是類型安全的語言,而C++是非類型安全的語言進行了詳細的分析介紹,需要的朋友參考下
有過C++開發(fā)經驗的人會發(fā)現,我們可以將0作為false,非零作為true。一個函數即使是bool類型的,但是我們還是可以返回int類型的,并且自動將0轉換成false,非零轉換成true。代碼實例如下:
#include<iostream>
#include<stdlib.h>
using namespace std;
bool fun()//函數返回類型是bool,但是我們在函數中可以返回int類型。
{
return 1;
}
void main()
{
int a=1;
if(a)//a是int類型的,但是可以作bool類型來使用。
{
cout<<"C++是非類型安全的。"<<endl;
}
system("pause");
}
但是,在java中,我們就不能這樣使用了,java中不能做到int類型轉bool類型,比如以下代碼:
public class TypeSafeTest {
public static void main(String[] args) {
int i=1;
if(i)
{
System.out.println("java是類型安全語言");
}
}
}
執(zhí)行上述代碼會報如下錯誤:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from int to boolean
at TypeSafeTest.main(TypeSafeTest.java:4)
上述錯誤表明在java中int類型不能在自動轉變成bool類型了。這就是類型安全的意思。
復制代碼 代碼如下:
#include<iostream>
#include<stdlib.h>
using namespace std;
bool fun()//函數返回類型是bool,但是我們在函數中可以返回int類型。
{
return 1;
}
void main()
{
int a=1;
if(a)//a是int類型的,但是可以作bool類型來使用。
{
cout<<"C++是非類型安全的。"<<endl;
}
system("pause");
}
但是,在java中,我們就不能這樣使用了,java中不能做到int類型轉bool類型,比如以下代碼:
復制代碼 代碼如下:
public class TypeSafeTest {
public static void main(String[] args) {
int i=1;
if(i)
{
System.out.println("java是類型安全語言");
}
}
}
執(zhí)行上述代碼會報如下錯誤:
復制代碼 代碼如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from int to boolean
at TypeSafeTest.main(TypeSafeTest.java:4)
上述錯誤表明在java中int類型不能在自動轉變成bool類型了。這就是類型安全的意思。

