Java giver to typer
Java-referencetyper
Der er følgende fem typer referencetyper i Java:
Referencetype | Beskrivelse |
---|---|
Klasse | Det er et sæt instruktioner. Den beskriver objektets indhold. |
Array | Det giver den faste størrelse datastruktur, der gemmer elementer af samme type. |
Anmærkninger | Det giver en måde at associere metadata med programelementer. |
Interface | Det er implementeret af Java-klasser. |
Optælling | Det er en særlig slags klasse, der er typesikker. Hvert element inde i enumet er en forekomst af det enum. |
Reference vs primitive datatyper
Referencetype | Primitiv type |
---|---|
Den er ikke foruddefineret undtagen strengen. | Det er foruddefineret i Java. |
Alle referencetyper begynder med stort bogstav. | Alle primitive typer begynder med et lille bogstav. |
Ikke-primitive typer har alle samme størrelse. | Størrelsen af en primitiv type afhænger af datatypen. |
Det bruges til at påkalde eller kalde metoder. | Vi kan ikke påberåbe os metoden med en primitiv type. |
Det kan være nul. | Det kan ikke være nul. Det har altid værdi. |
Eksempler på referencedatatyper er klasse, Arrays, String, Interface osv. | Eksempler på primitive datatyper er int, float, double, Boolean, long osv. |
JVM tildeler som standard 8 bytes for hver referencevariabel. | Dens størrelse afhænger af datatypen. |
Eksempel : Demo d1; | Eksempel : int num=78; |
Hukommelsestildeling og affaldsopsamling
I Java er nyt søgeord bruges til at skabe en eksempel af klassen. Med andre ord instansierer den en klasse ved at allokere hukommelse for et nyt objekt og returnere en reference til denne hukommelse. Objekter optager hukommelse i Java-heaprummet. Vi kan også bruge det nye søgeord til at oprette array objekt .
ClassName objectName = new ClassName();
Hvis der ikke er nogen referencer til et objekt, kan den hukommelse, der bruges af det pågældende objekt, genvindes under affaldsindsamlingsprocessen.
Konvertering mellem primitiv type og referencetype
Konverteringen af primitiv type til referencetype kaldes autoboksning og konverteringen af referencetype til primitiv type kaldes unboxing .
Sammenligning af referencetype
Vi kan også sammenligne referencetyperne i Java. Java giver to måder at sammenligne referencetyper på:
Ved at bruge operatoren lige (==).
Den sammenligner objekternes hukommelsesplaceringer. Hvis hukommelsesadressen (referencen) for begge objekter er den samme, er objekterne ens. Bemærk, at det ikke sammenligner indholdet af objektet. For eksempel:
Demo d1 = new Demo('Atlanta'); //creating a reference of Demo class Demo d2 = d1; //assigning the reference d1 into d2 if(d1=d2) //comparing reference
Ved at bruge String.equals() metoden
Metoden tilhører Snor klasse. Det tilsidesætter lige med() metoden til Objekt klasse . Den bruger også lige-operatoren (==) til at sammenligne referencetypen. Overvej f.eks. følgende kodestykke:
String str1='JAVA'; String str2='JAVA'; String str3='java'; System.out.println(str1.equals(str2)); //returns true because content and case is same System.out.println(str1.equals(str3)); //returns false because case is not same
Kopiering af referencetype
Der er to muligheder, når vi kopierer referencetyper, enten laves en kopi af referencen til et objekt, eller der laves en egentlig kopi (opretter en ny kopi) af objektet.
I det følgende eksempel har vi tildelt en reference til objektet. Hvis vi har foretaget ændringer i objektet, vil det også afspejle referencen og omvendt.
Sum s1 = new Sum(); Sum s2= s1;