c vs java top 30 differences between c
Denne dybdegående tutorial forklarer nogle af de vigtigste forskelle mellem to objektorienterede programmeringssprog C ++ Vs Java:
C ++ og Java er begge objektorienterede programmeringssprog. Alligevel adskiller begge sprog sig fra hinanden på mange måder.
C ++ er afledt af C og har funktionerne i både proceduremæssige og objektorienterede programmeringssprog. C ++ blev designet til applikation og systemudvikling.
Java er bygget på en virtuel maskine, der er meget sikker og meget bærbar. Det er grupperet med et omfattende bibliotek for at yde support til abstraktion af den eksisterende platform.
Java blev hovedsageligt designet til applikationsprogrammering og har en funktionalitet som en tolk til udskrivningssystemer, som senere blev udviklet til netværkscomputering.
Foreslået læsning => C ++ træningsvejledning til alle
Hvad du vil lære:
- Nøgleforskelle mellem C ++ Vs Java
- Tabelformat: C ++ Vs Java
- Ofte stillede spørgsmål i C ++ og Java
- Konklusion
- Anbefalet læsning
Nøgleforskelle mellem C ++ Vs Java
Lad os nu diskutere nogle af de vigtigste forskelle mellem C ++ Vs Java, når vi fortsætter i dette
vejledning.
# 1) Platform Uafhængighed
C ++ | Java | ||
---|---|---|---|
7 | Biblioteksgrænseflade | Tillader direkte opkald til oprindelige systembiblioteker. | Opkald kun via Java Native-interface og Java Native Access. |
C ++ er et platformafhængigt sprog. Kildekoden skrevet i C ++ skal kompileres på hver platform. | Java er platformuafhængig. Når den er samlet i bytekode, kan den udføres på enhver platform. |
# 2) Compiler og tolk
C ++ | Java |
---|---|
C ++ er et kompileret sprog. Kildeprogrammet skrevet i C ++ kompileres til en objektkode, som derefter kan udføres for at producere en output. | Java er et kompileret såvel som et fortolket sprog. Det kompilerede output af en Java-kildekode er en bytekode, der er platformuafhængig. |
# 3) Bærbarhed
C ++ | Java |
---|---|
C ++ - kode er ikke bærbar. Det skal udarbejdes for hver platform. | Java oversætter dog koden til bytekode. Denne bytekode er bærbar og kan udføres på enhver platform. |
# 4) Hukommelsesstyring
C ++ | Java |
---|---|
Hukommelsesstyring i C ++ er manuel. Vi er nødt til at allokere / deallocere hukommelse manuelt ved hjælp af de nye / slet operatorer. | I Java er hukommelsesstyringen systemstyret. |
# 5) Flere arv
C ++ | Java |
---|---|
C ++ understøtter forskellige typer arv, herunder enkelt og flere arv. Selvom der er problemer, der skyldes flere arv, bruger C ++ det virtuelle nøgleord til at løse problemerne. | Java understøtter kun en enkelt arv. Effekter af flere arv kan opnås ved hjælp af grænsefladerne i Java. |
# 6) Overbelastning
C ++ | Java |
---|---|
I C ++ kan metoder og operatører overbelastes. Dette er statisk polymorfisme. | I Java er kun metodeoverbelastning tilladt. Det tillader ikke overbelastning af operatøren. |
# 7) Virtuelt nøgleord
C ++ | Java |
---|---|
Som en del af dynamisk polymorfisme, i C ++, bruges det virtuelle nøgleord med en funktion til at angive den funktion, der kan tilsidesættes i den afledte klasse. På denne måde kan vi opnå polymorfisme. | I Java er det virtuelle nøgleord fraværende. Men i Java kan alle ikke-statiske metoder som standard tilsidesættes. Eller i enkle vendinger er alle ikke-statiske metoder i Java som standard virtuelle. |
# 8) Tip
C ++ | Java |
---|---|
C ++ handler om henvisninger. Som set i tutorials tidligere har C ++ stærk understøttelse af pekere, og vi kan udføre en masse nyttig programmering ved hjælp af pegepinde. | Java har begrænset support til markører. Oprindeligt var Java helt uden pegepinde, men senere versioner begyndte at give begrænset support til pegepinde. Vi kan ikke bruge markører i Java så afslappet som vi kan bruge i C ++. |
# 9) Dokumentationskommentar
C ++ | Java |
---|---|
C ++ understøtter ikke dokumentationskommentarer. | Java har en indbygget understøttelse af dokumentationskommentarer (/ ** ... * /). På denne måde kan Java-kildefiler have deres egen dokumentation. |
# 10) Trådstøtte
C ++ | Java |
---|---|
C ++ har ikke indbygget trådunderstøttelse. Det er hovedsageligt afhængig af trådbiblioteker fra tredjepart. | Java er indbygget trådstøtte med en klasse “tråd”. Vi kan arve trådklassen og derefter tilsidesætte køremetoden. |
Nogle flere forskelle ...
# 11) Rodhierarki
C ++ er proceduremæssigt såvel som et objektorienteret programmeringssprog. Derfor følger det ikke noget specifikt rodhierarki.
Java er et rent objektorienteret programmeringssprog og har et enkelt rodhierarki.
# 12) Kildekode og klasseforhold
I C ++ har både kildekoden og filnavnet ikke noget forhold. Dette betyder, at vi kan have mange klasser i C ++ - programmet, og filnavnet kan være hvad som helst. Det behøver ikke at være det samme som klassens navne.
I Java er der et tæt forhold mellem kildekodeklassen og filnavnet. Klassen, der indeholder kildekoden og filnavnet, skal være den samme.
For eksempel , hvis vi har en klasse i Java, der hedder løn, skal filnavnet, der indeholder denne klassekode, være 'løn.java'.
# 13) Koncept
Konceptet bag C ++ - programmer er skrevet en gang og kompileres overalt, da C ++ ikke er platformuafhængig.
Tværtimod, for Java-programmer skrives den en gang, køres overalt og hvor som helst, da bytekoden genereret af Java-kompilatoren er platformuafhængig og kan køre på enhver maskine.
# 14) Kompatibilitet med andre sprog
C ++ er bygget på C. C ++ sprog er kompatibelt med de fleste andre sprog på højt niveau.
Java er ikke kompatibelt med andre sprog. Da Java blev inspireret af C og C ++, ligner dens syntaks disse sprog.
#femten) Type programmeringssprog
C ++ er både et proceduremæssigt og objektorienteret programmeringssprog. Derfor har C ++ funktioner, der er specifikke for proceduremæssige sprog såvel som funktioner i objektorienteret programmeringssprog.
Java er et helt objektorienteret programmeringssprog.
# 16) Biblioteksgrænseflade
C ++ tillader direkte opkald til de oprindelige systembiblioteker. Derfor er det mere egnet til programmering på systemniveau.
Java har ingen direkte opkaldssupport til sine oprindelige biblioteker. Vi kan ringe til bibliotekerne via Java Native Interface eller Java Native Access.
# 17) Særlige træk
Funktioner relateret til de processuelle sprog og det objektorienterede sprog er de karakteristiske træk ved C ++.
.net c # interviewspørgsmål
Automatisk affaldsindsamling er det kendetegnende ved Java. I mellemtiden understøtter Java ikke destruktører.
# 18) Skriv semantik
Hvad angår typesemantik til C ++, er primitive og objekttyper ensartede.
Men for Java er der ingen sammenhæng mellem de primitive og objekttyper.
# 19) Inputmekanisme
C ++ bruger cin og cout sammen med '>>' og '<<’ operators respectively to read in and write the data.
I java bruges systemklassen til input-output. For at læse input bruges System.in, der læser en byte ad gangen. Konstruktionen System.out bruges til at skrive output.
#tyve) Adgangskontrol og objektbeskyttelse
C ++ har en fleksibel model til objekter med adgangsspecifikatorer, der styrer adgangen og stærk indkapsling, der sikrer beskyttelse.
Java har en forholdsvis besværlig model med svag indkapsling.
#enogtyve) Gå til erklæring
C ++ understøtter goto-erklæringen, men brugen af den skal minimeres for at forhindre konsekvenserne af at bruge den i et program.
Java yder ikke support til goto-erklæringen.
# 22) Scope Resolution Operator
Scope resolution operator bruges til at få adgang til de globale variabler og definere metoder uden for klassen.
C ++ understøtter operatør for omfangsopløsning, da den bruger den til at få adgang til globale variabler. Det giver os også mulighed for at definere funktioner uden for klassen og få adgang til dem ved hjælp af operatøren for omfangsopløsning.
I modsætning hertil understøtter Java ikke omfangsopløsningsoperatøren. Java tillader heller ikke at definere funktionerne uden for. Alt relateret til programmet inklusive hovedfunktionen skal være inde i en klasse.
# 2. 3) Prøv / Catch Block
I C ++ kan vi ekskludere prøve / fangst-blokken, selvom vi ved, at koden muligvis kaster en undtagelse.
Men i Java, hvis vi er sikre på, at koden vil kaste en undtagelse, skal vi inkludere denne kode under prøve / fangst-blokken. Undtagelser er forskellige i Java, da det ikke understøtter destruktører.
# 24) Runtime Error Detection
I C ++ er detektering af runtime-fejl programmørens ansvar.
I Java styres detektion af kørselsfejl af systemet.
# 25) Sprogstøtte
På grund af sin nærhed til hardware og biblioteker, der giver adgang til systemressourcer, er C ++ mere velegnet til systemprogrammering, selvom vi har en bred vifte af applikationer, herunder database, enterprise, gaming osv. Udviklet i C ++.
# 26) Data og funktioner
C ++ har et globalt omfang såvel som et navneområde. Således kan data og funktioner også eksistere uden for klassen.
I Java skal alle data og funktioner være i klassen. Der er ikke noget globalt omfang, men der kan være pakkeomfang.
# 27) Strukturer og fagforeninger
Strukturer og fagforeninger er datastrukturer, der kan have medlemmer med forskellige datatyper. C ++ understøtter både strukturer og fagforeninger.
Java understøtter dog ikke strukturer eller fagforeninger.
# 28) Objektstyring
I C ++ styres objekter manuelt. Oprettelse og destruktion af objekter udføres manuelt ved hjælp af henholdsvis de nye og sletoperatorer. Vi bruger også konstruktører og destruktorer til klasseobjekter.
Java understøtter ikke destruktører, selvom det understøtter konstruktører. Java er også stærkt afhængig af automatisk affaldsindsamling for at indsamle og ødelægge objekter.
# 29) Parameter passerer
Pass by Value og pass by reference er de to vigtige teknikker til parameteroverføring, der bruges i programmering. C ++ understøtter begge disse teknikker.
Java understøtter dog kun pass by Value-teknik til parameteroverføring.
# 30) Hardware
C ++ er tæt på hardware og har mange biblioteker, der kan manipulere hardwarressourcerne. På grund af dens nærhed til hardware bruges C ++ ofte til systemprogrammering, spilapplikationer, operativsystem og compilere.
Java er for det meste et sprog til applikationsudvikling og er ikke tæt på hardwaren.
Tabelformat: C ++ Vs Java
Nedenfor er den tabelrepræsentation af sammenligningen mellem C ++ og Java, som vi allerede har diskuteret.
Lade være med. | Sammenligningsparameter | C ++ | Java |
---|---|---|---|
1 | Platform uafhængighed | C ++ er platformafhængig. | Java er platformuafhængig. |
to | Kompilator og tolk | C ++ er et kompileret sprog. | Java er et kompileret såvel som et fortolket sprog. |
3 | Kildekode og klasseforhold | Intet strengt forhold til klassenavne og filnavne. | Håndhæver et strengt forhold mellem klassens navn og filnavn. |
4 | Koncept | Skriv en gang kompil hvor som helst. | Skriv en gang køre hvor som helst og overalt. |
5 | Kompatibilitet med andre sprog | Kompatibel med C undtagen objektorienterede funktioner. | Syntaksen er taget fra C / C ++. Ingen bagudkompatibilitet med noget andet sprog. |
6 | Type programmeringssprog | Procedurel og objektorienteret. | Objektorienteret. |
8 | Rødhierarki | Intet rodhierarki. | Følger enkelt rodhierarki. |
9 | Særlige træk | Understøtter såvel proceduremæssige som objektorienterede funktioner. | Ingen destruktører. Automatisk affaldsindsamling. |
10 | Bærbarhed | C ++ - kode er ikke bærbar. | Java er bærbar. |
elleve | Skriv semantik | Konsistent mellem primitive og objekttyper. | Ikke konsistent. |
12 | Inputmekanisme | Cin og Cout bruges til I / O. | System.in og System.out.println |
13 | Adgangskontrol og objektbeskyttelse | En fleksibel objektmodel og ensartet beskyttelse. | Objektmodellen er besværlig og indkapslingen er svag. |
14 | Hukommelsesstyring | Håndbog | Systemstyret. |
femten | Flere arv | Til stede | Fraværende |
16 | Gå til erklæring | Understøtter Goto-erklæring. | Understøtter ikke goto-erklæringen. |
17 | Scope Resolution Operator | Til stede | Fraværende |
18 | Prøv / Catch Block | Kan ekskludere prøve / fangstblok. | Kan ikke ekskludere, hvis koden skal give en undtagelse. |
19 | Overbelastning | Understøtter overbelastning af operatører og metoder. | Understøtter ikke operatørens overbelastning. |
tyve | Virtuelt nøgleord | Understøtter virtuelt nøgleord, der letter tilsidesættelse. | Intet virtuelt nøgleord, alle ikke-statiske metoder er som standard virtuelle og kan tilsidesættes. |
enogtyve | Runtime Error Detection | Overladt til programmør. | Systemansvar |
22 | Sprogstøtte | Bruges hovedsageligt til systemprogrammering. | Bruges hovedsageligt til programmering af applikationer. |
2. 3 | Data og funktioner | Data og funktion findes uden for klassen. Globale omfang og navneområdet understøttes. | Data og funktioner findes kun inden for klassen, pakkeomfang er tilgængeligt. |
24 | Markører | Understøtter markører. | Kun begrænset support til markører. |
25 | Strukturer og fagforeninger | Understøttet | Ikke understøttet |
26 | Objektstyring | Manuel objektstyring med nyt og slet. | Automatisk objektstyring ved hjælp af affaldsindsamling. |
27 | Parameter passerer | Understøtter opkald efter værdi og opkald ved reference. | Understøtter kun opkald efter værdi. |
28 | Trådstøtte | Trådstøtten er ikke særlig stærk, den er afhængig af tredjepart. | Meget stærk trådstøtte. |
29 | Hardware | Tættere på hardware. | Ikke meget interaktiv med hardware. |
30 | Dokumentationskommentar | Understøtter ikke dokumentationskommentarer. | Understøtter dokumentationskommentarer (/ ** ... * /), der opretter dokumentation til Java-kildekode. |
Indtil videre har vi set de vigtigste forskelle mellem C ++ og Java i detaljer. Den kommende sektion vil besvare nogle af de ofte stillede spørgsmål vedrørende C ++ og Java i programmeringsverdenen.
Ofte stillede spørgsmål i C ++ og Java
Q # 1) Hvilken er bedre C ++ eller Java?
Svar: Vi kan bestemt ikke sige, hvad der er bedre. Både C ++ og Java har deres egne fordele og ulemper. Mens C ++ for det meste er godt til systemprogrammering, kan vi ikke gøre det med Java. Men Java udmærker sig i applikationer som web, desktop osv.
Faktisk kan C ++ gøre alt fra systemprogrammering til virksomhed til spil. Java kan gøre mere af et web eller en virksomhed. Der er nogle applikationer som visse programmeringsapplikationer på lavt niveau eller spil osv., Som ikke kan overlades til Java at udvikle.
Således afhænger det helt af, hvilken applikation vi udvikler. Den bedste måde er på forhånd at evaluere fordele og ulemper ved begge sprog og kontrollere deres entydighed for den applikation, som vi udvikler, og derefter konkludere, hvilken der er den bedste.
Q # 2) Er C ++ stærkere end Java?
Svar: Igen er dette et vanskeligt spørgsmål! Når det kommer til, hvor lettere syntaksen er eller at lære sproget, scorer Java. Når det kommer til systemprogrammering og / eller andre applikationer på lavt niveau, er C ++ mere kraftfuld.
Nogle mennesker hævder måske, at det at have automatiske GC-samlinger, ingen pekere, ingen flere arv gør Java mere kraftfuld.
Men når det kommer til hastighed, er C ++ stærk. Også i applikationer som spil, hvor vi har brug for at gemme staten, kan automatisk affaldsindsamling ødelægge opgaverne. Således er C ++ tydeligvis stærk her.
Q # 3) Kan vi lære Java uden at kende C eller C ++?
Svar: Ja helt sikkert!
Når vi først kender fundamentet i programmering og objektorienterede programmeringskoncepter, kan vi begynde at lære Java.
Q # 4) Er C ++ ligesom Java?
Svar: På nogle måder, ja, men på nogle måder, nej
Som for eksempel er både C ++ og Java objektorienterede programmeringssprog. De kan bruges til applikationsudvikling. De har lignende syntaks.
Men i andre tilfælde som hukommelsesadministration, arv, polymorfisme osv. Er C ++ og Java helt forskellige. På samme måde, når det kommer til primitive datatyper, objekthåndtering, pointer osv., Er begge sprog forskellige.
Q # 5) Er Java skrevet i C ++?
Svar: Java i den forstand Java Virtual Machine (JVM) fra Sun og IBM er skrevet i C ++. Java-bibliotekerne findes i Java. Nogle andre JVM'er er skrevet i C.
Konklusion
C ++ og Java er begge objektorienterede programmeringssprog. Derudover er C ++ også et proceduremæssigt sprog. Der er nogle funktioner som arv, polymorfisme, pointer, hukommelsesadministration osv., Hvor begge sprog er helt forskellige fra hinanden.
Der er nogle karakteristika ved C ++ som nærhed til hardware, bedre objektstyring, hastighed, ydeevne osv., Hvilket gør det mere kraftfuldt end Java og dermed motiverer udviklerne til at bruge C ++ til programmering på lavt niveau, højhastigheds-spilapplikationer, systemprogrammering , etc.
På samme måde gør Java's lettere syntaks, automatisk affaldsindsamling, mangel på markører, skabeloner osv. Java til en favorit for webbaserede applikationer.
=> Besøg her for den komplette C ++ tutorials liste .
Anbefalet læsning
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Java-interface og abstrakt klasseundervisning med eksempler
- OOP Java: Introduktion til objektorienteret programmering i Java
- Adgang modifikatorer i Java - vejledning med eksempler
- Java-implementering: Oprettelse og udførelse af Java JAR-fil
- Introduktion til Java-programmeringssprog - Video-tutorial
- Java Virtual Machine: Hvordan JVM hjælper med at køre Java-applikationer
- Java Reflection Tutorial med eksempler