深入理解:Java是類(lèi)型安全的語(yǔ)言,而C++是非類(lèi)型安全的語(yǔ)言
更新時(shí)間:2013年06月04日 10:34:23 作者:
本篇文章是對(duì)Java是類(lèi)型安全的語(yǔ)言,而C++是非類(lèi)型安全的語(yǔ)言進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
有過(guò)C++開(kāi)發(fā)經(jīng)驗(yàn)的人會(huì)發(fā)現(xiàn),我們可以將0作為false,非零作為true。一個(gè)函數(shù)即使是bool類(lèi)型的,但是我們還是可以返回int類(lèi)型的,并且自動(dòng)將0轉(zhuǎn)換成false,非零轉(zhuǎn)換成true。代碼實(shí)例如下:
#include<iostream>
#include<stdlib.h>
using namespace std;
bool fun()//函數(shù)返回類(lèi)型是bool,但是我們?cè)诤瘮?shù)中可以返回int類(lèi)型。
{
return 1;
}
void main()
{
int a=1;
if(a)//a是int類(lèi)型的,但是可以作bool類(lèi)型來(lái)使用。
{
cout<<"C++是非類(lèi)型安全的。"<<endl;
}
system("pause");
}
但是,在java中,我們就不能這樣使用了,java中不能做到int類(lèi)型轉(zhuǎn)bool類(lèi)型,比如以下代碼:
public class TypeSafeTest {
public static void main(String[] args) {
int i=1;
if(i)
{
System.out.println("java是類(lèi)型安全語(yǔ)言");
}
}
}
執(zhí)行上述代碼會(huì)報(bào)如下錯(cuò)誤:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from int to boolean
at TypeSafeTest.main(TypeSafeTest.java:4)
上述錯(cuò)誤表明在java中int類(lèi)型不能在自動(dòng)轉(zhuǎn)變成bool類(lèi)型了。這就是類(lèi)型安全的意思。
復(fù)制代碼 代碼如下:
#include<iostream>
#include<stdlib.h>
using namespace std;
bool fun()//函數(shù)返回類(lèi)型是bool,但是我們?cè)诤瘮?shù)中可以返回int類(lèi)型。
{
return 1;
}
void main()
{
int a=1;
if(a)//a是int類(lèi)型的,但是可以作bool類(lèi)型來(lái)使用。
{
cout<<"C++是非類(lèi)型安全的。"<<endl;
}
system("pause");
}
但是,在java中,我們就不能這樣使用了,java中不能做到int類(lèi)型轉(zhuǎn)bool類(lèi)型,比如以下代碼:
復(fù)制代碼 代碼如下:
public class TypeSafeTest {
public static void main(String[] args) {
int i=1;
if(i)
{
System.out.println("java是類(lèi)型安全語(yǔ)言");
}
}
}
執(zhí)行上述代碼會(huì)報(bào)如下錯(cuò)誤:
復(fù)制代碼 代碼如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from int to boolean
at TypeSafeTest.main(TypeSafeTest.java:4)
上述錯(cuò)誤表明在java中int類(lèi)型不能在自動(dòng)轉(zhuǎn)變成bool類(lèi)型了。這就是類(lèi)型安全的意思。
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(60.序列排序)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(60.序列排序),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C/C++ 實(shí)現(xiàn)簡(jiǎn)易HTTP服務(wù)器的示例
這篇文章主要介紹了C/C++ 實(shí)現(xiàn)簡(jiǎn)易HTTP服務(wù)器的示例,幫助大家更好的理解和學(xué)習(xí)C/C++編程,感興趣的朋友可以了解下2020-10-10
用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷游戲
這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
C/C++?Qt?TabWidget?實(shí)現(xiàn)多窗體創(chuàng)建詳解
TabWidget組件配合自定義Dialog組件,可實(shí)現(xiàn)一個(gè)復(fù)雜的多窗體分頁(yè)結(jié)構(gòu)。這篇文章就主要介紹了如何通過(guò)TabWidget實(shí)現(xiàn)多窗體的創(chuàng)建,感興趣的小伙伴可以了解一下2021-12-12
Qt6遠(yuǎn)程連接MySQL數(shù)據(jù)庫(kù)的簡(jiǎn)單易上手版
在Qt應(yīng)用程序里,可實(shí)現(xiàn)遠(yuǎn)程MySQL服務(wù)器的連接操作,本文就來(lái)介紹一下Qt6遠(yuǎn)程連接MySQL數(shù)據(jù)庫(kù),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
利用Matlab仿真實(shí)現(xiàn)圖像煙霧識(shí)別(k-means聚類(lèi)圖像分割+LBP+PCA+SVM)
本文主要介紹了利用k-means聚類(lèi)實(shí)現(xiàn)圖像分割+LBP算法進(jìn)行特征提取+PCA算法進(jìn)行特征降維+SVM算法訓(xùn)練二分類(lèi)模型從而實(shí)現(xiàn)煙霧識(shí)別。文中介紹很詳細(xì),感興趣的朋友可以了解一下2021-12-12
C++使用map實(shí)現(xiàn)多進(jìn)程拷貝文件的程序思路
這篇文章主要介紹了C++使用mmap實(shí)現(xiàn)多進(jìn)程拷貝文件,通過(guò)本文給大家分享程序思路及完整代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12

