Movatterモバイル変換


[0]ホーム

URL:


Spring til indhold
WikipediaDen frie encyklopædi
Søg

Java (programmeringssprog)

Fra Wikipedia, den frie encyklopædi
For alternative betydninger, seJava.(Se også artikler, som begynder med Java)
Java
ParadigmeGenerisk, objektorienteret, imperativ, reflektiv
Designet afJames Gosling
UdviklerOracle Corporation
Først udgivet23. maj, 1995
Stabile versionJava SE 21[1] / 19. September, 2023
Filtyper.java, .class, .jar
Hjemmesideoracle.com/java/
Java Programming på Wikibooks
Denne artikel eller dette afsnit er forældet.
Hvis teksten er opdateret, kan denne skabelon fjernes. Se artiklensdiskussionsside ellerhistorik
(Lær hvordan og hvornår man kan fjerne denne skabelonbesked)

Java er etobjektorienteret tredjegenerations-programmeringssprog inspireret afC++. Sproget er udviklet afSun. Java var oprindeligt døbtOak, men dette navn havde et andet firma allerede benyttet. Herefter faldt navnet på Java.

Java er også et stortklassebibliotek, der er defineret med en grænseflade i programmeringssproget Java, men også kan bruges fra en lang række andre programmeringssprog, deriblandtAda ogEiffel.

Slutteligt er Java envirtuel maskine beregnet, men ikke begrænset, til at køre programmer skrevet i programmeringssproget Java. Dette vil sige at andenkildekode, end den af Java, efter tilstrækkelig kompilation også kan anvendes af Javas virtuelle maskine.

Java programmer er ofte skrevet iIntelliJ IDEA ellerEclipse IDE.

Beskrivelse

[redigér |rediger kildetekst]

Programmeringssproget Java er blandt andet kendetegnet ved at etcomputerprogram skrevet i Java kan afvikles på ethvertstyresystem, hvis styresystemet har en Java virtuel maskine, og det har stort set alle moderne styresystemer. Som programudvikler skal man derfor ikke bekymre sig om slutbrugerens maskinel og programmel. Mens et Javaprogram udføres, sørger den virtuelle maskine selv for at fjerne unødvendige objekter, som optager plads i maskinens arbejdshukommelse (garbage collection). Som software-udvikler skal man dog holde styr på andre ressourcer som f.eks. filer.

Java findes i 3 forskellige "hovedudgaver". Disse erJ2SE (Standard Edition),J2EE (Enterprise Edition) ogJ2ME (Micro Edition). 2-tallet i forkortelsen refererer til Java 2, der trods nyere versioner end 1.2 fortsat benyttes.

I praksis er der nogle faldgruber. Java findes i flere versioner, og for at sikre at et program kan afvikles flest mulige steder, kan det være nødvendigt, at man som software-udvikler begrænser sig til mulighederne i en tidlig version. Andre firmaer endSun har lavet udgaver af den virtuelle maskine til Java, og det er ikke alle, der giver helt de samme muligheder.

Java var i de første år, fra 1995, mest kendt for sloganet 'write once, run anywhere' (skriv en gang, kør alle steder), og så applets: små programmer med begrænsede rettigheder, som kan køre integreret i en hjemmeside. I de første år var det disse elementer der drev interessen for Java. Kritikere af Java blev ved med at henvise til, hvor sløvt (langsomt) Javaprogrammer og -applets kørte, specielt på desktoppen.Udviklingen inden for programmering oghardware har dog de sidste par år overhalet disse kritikpunkter.

  1. Javas hovedområde er ikke, og har aldrig været, desktopprogrammer, hvor det altid vil være langsommere end et program skrevet direkte til platformen, men man kan dog køre et Javaprogram på en almindelig computer tilfredstillende i dag, hvis det er det man ønsker.
  2. Java bruges i dag langt mere på serverniveau, til programmer der ligger på enserver og f.eks. styrer forretningslogik, genererer hjemmesider mm.

Som et direkte modsvar på Javas dominans på serverområdet komMicrosoft med deres.NET platform. .NET har dog endnu ikke vundet Javas popularitet.

Syntaks

[redigér |rediger kildetekst]

Navngivningspraksiser

[redigér |rediger kildetekst]

Der er standardenavngivningspraksiser[2] i Java, som er anbefalet at overholde. I skemaet kan du se eksempler på dem

TypeForklaringEksempel
VariabelDet første bogstav i en variabels navn burde være med småt,

og begyndelsesbogstavet af hvert efterfølgende ord burde

være med stort.[2] En variable burde starte med et bogstav, men

kan også starte med "$" eller "_", det er dog ikke anbefalet.[3]

String variabelNavn = "";

private String variabel = "";

KonstanterNavnet af en konstant burde være med stort, med underscores

mellem hvert ord.[2]

static final int VARIABEL_NAVN = 0;

static final int VARIABEL = 0;

Klasse (Class)Navnet af en class burde være substantiver, hvor

begyndelsesbogstavet af hvert ord er stort.[2]

class ClassNavn;

class Class;

Metode/FunktionNavnet på en metode burde være et verbum efterfulgt af et

adjektiv eller substantiv, med det første bogstav lille, og

begyndelsesbogstavet af hvert efterfølgende ord med stort.[2]

metodeNavn()

metode()

Grænseflade (Interface)Ligesom en klasse.interface InterfaceNavn;

interface Interface;

Pakke (Package)Navnet af en package burde være udviklerens domænenavn

skrevet baglæns, efterfulgt af et punktum og projektnavnet.[2]

Et package navn burde kun være med små bogstaver.

Hvis udvikleren ikke har et domæne, bruges der ofte

me.udviklernavn.projektnavn

Efterfølgende elementer af navnet kan variere, og bruges

ofte som mapper.[2]

com.microsoft.windows.10

net.minecraft.server

java.util.list

dk.example.package

Hvis der er en publicclass i en .java fil, skal den hedde det samme som filen.[4] Eksempel:

publicclassFoo{// Kode her}

Denne fil skal hedde "Foo.java". Der kan kun være en public class i en fil.

Identifier

[redigér |rediger kildetekst]

En identifier er navnet på et element i koden. Der er normale navngivningspraksiser til elementer. Indentifiere i Java ercase-sensitive, altså

yourName

er ikke den samme indentifier som

yourname

En indentifier kan indeholde:

  • En hvilken som helst Unicode-tegn (også tal)
  • Valuta tegn (som $)
  • Understreger (underscores, _)

En indentifier kan ikke:

  • Starte med et tal
  • Have det samme navn som et reserveret nøgle-ord

Variabler

[redigér |rediger kildetekst]

Variabler er indentifierer med en værdi.

intcount;//Deklarer en variabel med navnet count uden en værdicount=35;//Sætter værdien til 35 aka initialiseringintcount=35;//initialiserer og deklarer på samme linie

Flere variable kan blive deklareret på en gang:

inta,b;//Deklarerer variablerne a og breaka=5,b=3;//Initialiserer variablerneinta=5,b=3;// Deklarerer og Initialiserer i samme linie

Blokke

[redigér |rediger kildetekst]

I Java er en blok koden mellem { og }. Altså er dette her imellem "programmet".

publicclassWikipedia{//Her starter blokken//Her imellem skriver du al din kode}// Her slutter blokken

men du har også brug for en main metode:

publicclassWikipedia{publicstaticvoidmain(String[]args){// MAIN METODEN//Al koden herinde bliver kørt når programmet bliver kørt}}

Kommentarer

[redigér |rediger kildetekst]

En til linje er slut kommentar:

//Det her er en single linie kommentarognuerdetherikkelængereenkommentar,fordidenikkestårlinjen

så er der flere linjer kommentaren:

/* Startes med disse tegnKommentar */IkkeKommentar

Eksempel på Javakode

[redigér |rediger kildetekst]

Her under ses et stykke Javakode:

// Hello.javapublicclassHello{publicstaticvoidmain(String[]args){System.out.println("Hello, World!");}}

Forklaring

publicclassHello{}

Erklærer at programmet hedder Hello, al den tekst der ligger mellem den første "{" og den sidste "}" bliver af Java opfattet som en del af klassen Hello, dvs. "programmet".

publicstaticvoidmain(String[]args){

Metoden/funktionen main som altid er påkrævet for at få et Javaprogram til at køre,eksekverer den del af koden, der ligger mellem de inderste "{" og "}". "{" er metodens bodystart og "}" er bodyslut.

System.out.println("Hello, World!");

Skriver Hello, World! på skærmen. Tegnet;(semikolon) sidst i hver linje angiver linjens afslutning.

Nøgleord

[redigér |rediger kildetekst]
abstractcontinuefornewswitch
assertdefaultgotopackagesynchronized
booleandoifprivatethis
breakdoubleimplementsprotectedthrow
byteelseimportpublicthrows
caseenuminstanceofreturntransient
catchextendsintshorttry
charfinalinterfacestaticvoid
classfinallylongstrictfpvolatile
constfloatnativesuperwhile

Literaler

Hele tal (Integer)
binary (introduced in Java SE 7)0b11110101 (0b followed by a binary number)
octal0365 (0 followed by an octal number)
hexadecimal0xF5 (0x followed by a hexadecimal number)
decimal245 (decimal number)
Værdier med decimaler
float23.5F.5f1.72E3F (decimal fraction with an optional exponent indicator, followed by F)
0x.5FP0F0x.5P-6f (0x followed by a hexadecimal fraction with a mandatory exponent indicator and a suffix F)
double23.5D.51.72E3D (decimal fraction with an optional exponent indicator, followed by optional D)
0x.5FP00x.5P-6D (0x followed by a hexadecimal fraction with a mandatory exponent indicator and an optional suffix D)
Tegn literaler
char'a''Z''\u0231' (character or a character escape, enclosed in single quotes)
Boolean literaler
booleantruefalse
null literaler
null referencenull
String literaler
String"Hello, World" (sequence of characters and character escapes enclosed in double quotes)
Tegn i strings
Unicode character\u3876 (\u followed by the hexadecimal unicode code point up to U+FFFF)
Octal escape\352 (octal number not exceeding 377, preceded by backslash)
Line feed\n
Carriage return\r
Form feed\f
Backslash\\
Single quote\'
Double quote\"
Tab\t
Backspace\b

Hele tal er af typen int ved standard, medmindre typen Long er specifikt indtastet og med et L eller l i slutningen af initialisationen.

Objekter

[redigér |rediger kildetekst]

Iobjektorienteret programmering er objekter selvfølgelig en vigtig del. De er ofte nødvendige for mere komplekse programmer.

Et objekt er en repræsentation af en ting, og indeholder data om den. Et eksempel kunne være et person-objekt der indeholder et navn, en alder, en adresse, og interesser. I Java findes der mange klasser som er meget brugbare som programmør.

Eksempel

[redigér |rediger kildetekst]

Her er en klasse for en "Person":

publicclassPerson{privateStringnavn;privateintalder;privateStringadresse;privateString[]interesser;publicPerson(Stringnavn,intalder,Stringadresse,String[]interesser){this.navn=navn;this.alder=alder;this.adresse=adresse;this.interesser=interesser;}}

public Person() er en konstruktør for en Person. Dette sætter objektets navn, alder, adresse, og interesser til de argumenter konstruktøren har fået.Variablerne er sat til privat pga.Indkapsling, som sørger for at de ikke kan ændres udefra. Men de kan dog stadig læses med disse metoder:

publicStringgetNavn(){returnthis.navn;}publicintgetAlder(){returnthis.alder;}publicStringgetAdresse(){returnthis.adresse;}publicString[]getInteresser(){returnthis.interesser;}

Når vi har dette kan vi lave et nyt Person-objekt i vores main-klasse med navnet Jens, alderen 21, adressen "En adresse", og interesserne "En interesse" og "En anden interesse":

publicclassOOPEksempel{publicstaticvoidmain(String[]args){String[]interesser={"En interesse","En anden interesse"};// Laver et array med interesserPersonjens=newPerson("Jens",21,"En adresse",interesser);// Laver et nyt person objekt}}

Så kan vi også printe Jens' data ud, med hjælp af de metoder vi definerede i Person klassen (og lidt regex som fjerner [ og ] fra arrayet):

System.out.println(jens.getNavn()+", "+jens.getAlder()+":");System.out.println(jens.getAdresse());System.out.println("Interesser: "+Arrays.toString(jens.getInteresser()).replaceAll("[\\[\\]]",""));// .replaceAll ændrer alle matches med den givne regex. Sæt den ind i regexr.com for at se hvad den gør

Dette giver:

Jens, 21:En adresseInteresser: En interesse, En anden interesse

Objekter kan også indholde metoder, som ofte ændrer på objektets data.

Eksempler på indbyggede objekter i java:

  • File(String pathname)
  • Point(int x, int y)
  • ArrayList()

Extends

[redigér |rediger kildetekst]

Hvis en klasse udvider (extends) en anden klasse, får den alle egenskaber og metoder af den klasse. Den klasse bliver så til en "subclass", og den klasse den arver egenskaber fra bliver til "superclassen".

Her bruges nøgleordet "protected" i stedet for private, fordi at subclassen ikke har adgang til variablen hvis den er private

classBil{protectedStringtype="Bil";protectedvoiddyt(){System.out.println("Dyyyt!");}}publicclassTeslaModel3extendsBil{privateStringmodelNavn="Tesla Model 3";publicstaticvoidmain(String[]args){TeslaModel3bil=newTeslaModel3();// Laver en ny TeslaModel3System.out.println(bil.type+": "+bil.modelNavn);// Printer type (fra Bil klassen) og bilens modelNavnbil.dyt();// Kalder dyt() metoden fra Bil klassen}}

Se også

[redigér |rediger kildetekst]
  • Ant – Program til styring af oversættelse af Javaprogrammer.

Referencer

[redigér |rediger kildetekst]
  1. ^JDK 21
  2. ^abcdefghttps://www.oracle.com/java/technologies/javase/codeconventions-namingconventions.html
  3. ^Variables (The Java™ Tutorials > Learning the Java Language > Language Basics)
  4. ^Can I compile a java file with a different name than the class? - Stack Overflow

Eksterne henvisninger

[redigér |rediger kildetekst]
Autoritetsdata
Hentet fra "https://da.wikipedia.org/w/index.php?title=Java_(programmeringssprog)&oldid=12067219"
Kategorier:
Skjulte kategorier:

[8]ページ先頭

©2009-2025 Movatter.jp