Programmering 2 Flashcards
(47 cards)
Hva er primitive datatyper
Hva er de 8 primitive datatypene?
Hvor mange bits er de?
De er predefinerte datatyper i java.
Altså datatyper som bruker ikke har definert selv.
Det andre er Objekt datatyper, som bruker lager selv
Eks på ikke-primitive datatyper: String, array, klasser, interfaces osv.
int: +-210^9, 32bits
byte: -128/127, 8bits
short: +-310^4, 16bits
boolean: true/false, 1bit
float: opp til 7 desimaler, 32bits
double: opptil 16 desimaler, 64bits
long: +-9*10^19, 64bits
char: unicode character, 16bits
Aritmetiske operatorer
Relasjonelle operatorer
Assigment operatorer
\+ - * / % - returnerer det gjenværende \++ --
== != >< >= <=
= \+= -= *= /= %= <<= >>= && ||
Hva er en metode?
Hva må metodesyntax ha
eks på metode syntax
En blokk med kode som skal gjøres når peogram kaller på den.
Må inneholde: acsess modifier return type, potensielt void metode navn parametere exceptionlist kropp innenfor lukkede paranteser
public int calulateEarnings(int firstJob, int secondJob) {
earnings = firstJob + secondJob;
return earnings;
}
Hva er en klasse?
Et blueprint fra hvilket objekter er laget
Hva er et objekt?
En instanse av en klasse
Hva er en pakke?
Hvordan bruker man en pakke?
Folder av klasser
Brukes for å organisere kode
import static packagepath
eks
import static Circle.java
Hva er de fire pillarene av OOP?
Hvordan brukes de i java?
Innkapsling/Encapsulation
At man bare har adgang til en del av kode innenfor et sted.
Arv/Inheretance
At en klasser kan bruke metoder og variabler fra andre klasser
Polymorfi/Polymorphism
At man kan kalle en klasse flere gsnger for å lage forskjellige objekter
Abtract/Abcstraction
At man kan lett benytte kompleks kode med bruk av ting som klassekall og parametere
===== I java kan man bruke accsess modifisers for å styre hvordan adgangen til kode skal være Erklær klasser og metoder som public Fordi man skal h adgang til metodene Erklær variabler som private
Gjøres med extends og super
Kan gjøres i java ved at man kaller en klasse flere ganger. Vil fungere så lenge klassen ikke er static eller singleton Car car = new Car();
Abstraction:
Gjøres med ting som parameter osv
Hvordan lage ArrayList? Hvordan hente data ut ifra index Hvordan modifisere noe i en arraylist? Hvordan skette noe fra ArrayList? Hvordan tømme liste? Hvordan få mengde elementer i liste?
ArrayList cars = new ArrayList();
cars. get(0)
cars. set(0, “modifisert”)
cars. remove(0)
cars. remove
cars. size()
while loop
for loop
do while loop
while loop: kjører mens et tilfelle er
for loop: kjører en viss mendge ganger
do while: vil kjøre ihvertfall en gang uavhengig om while statementet stemmer eller ikke.
do ( [kodeblikk]) while([kondisjon]);
Hvordan ta brukerinout?
Scanner sc = new Scanner(System.in) sout("gi et tall) int a = sc.nextInt eller String str = sc.nextLine()
Hvordan gjøre string til int?
int i = Integer.parseInt(“200”)
Forskjeller på Array, ArrayList og LinkedList
Array:
Størrelsen på listen må spesifiseres når listen lages.
Man kan derfor ikke fjerne eller legge til i listen, man kan bare endre på elementene
String[] myList = new String[4]; - erklær uten verdier
String[] myList = {“H”, “L”, “T”, “K”}; -erklær med verdier
myList[2] = “hallo” - erklære verdi
ArrayList
Størrelsen trengs ikke å erklæres før.
Man kan dynamisk legge til og slette.
ArrayList myList = new ArrayList<>();
ArrayList myList =
newArrayList<>(Arrays.asList(“H”, “X”);
myList.add(“J”)
myList.([index])
nums.forEach(System.out::println);
LinkedList
Lages og håndteres på akkuratt same måte som ArrayList.
Birtsett fra at man bytter ut ArrayList med LinkedList.
Hva er forskjellen på disse?
Array sin størrelse kan ikke endres dynamisk.
ArrayList kan endres dynamisk
LinkedList kan også endres dynamisk
Fotskjell på ArtayList og LinkedList?
ArrayList bruker lite tid på å referere til ting,
men mye tid på å fjerne og legge til.
LinkedList bruker mye tid på å referere,
men lite tid på å legge til og fjerne
Hva er HashMap Hvirdan refererer man Hvordan legger man til Hvordan sletter man ting Hvordan endrer man Hvordan looper man Hvirdan legger man til en liste som value/key
Som en dictionary
HashMap myMap = new HashMap<>();
var entrySet = myMap.entrySet(); for (var entry : entrySet) { if (entry.getKey() == key) { entry.getValue(); } }
var entrySet = myMap.entrySet();
myMap.put(key, value);
myMap.remove(key);
myMap.replace(key, value);
myMap.forEach(key, value) -> {
System.out.println(key + “ “ + value);
});
HashMap> myMap =
new HashMap<>();
myMap.put(“H”, new ArrayList<>(Arrays.asList(1, 2, 3)));
Hva gjør static
Hvorfor er main static
Hvorfor man ikke kan ha en non-static metode i en static metode
static refererer til et variabel/metode i seg selv. det er sltså felles for alle objekter
Hvis man har to objekter, og klassen de kommer fra har en static variabel, vil det være slik at hvis man endrer på variablet i objekt2, vil også objekt1 ha det variablet endret.
Når en metode/variabel er static, avhenger det ikke av klassens initialisering for å kunne eksistere.
Eks når man kan si [class].[static metode] uten å ha initialisert metoden. Dette er fordi static refererer til variablet/metoden i seg selv.
Når man starter et program må man kunne initialisere forskjellige ting. Hvis main ikke hadde vært static, hadde det ikke vært noen måte å kjøre programmet, fordi det ikke kunne blitt initialisert noe.
Hvorfor static metoder bare kan bruker i andre static metoder:
Static metoder initlialiseres ikke. Derimot non-static metoder initialiseres.
Hvis man putter en non-static metode i en static metode, vil aldri den non-static metoden initialiseres.
input med buffered reader
BufferedReader reader =
new BufferedReader
(new InputStreamReader(System.in))
reader.readLine()
Float.parseFloat(reader.readLine())
Char
Hvordan endre karakterer i en string
[String].substring(0,1).replace(oldchar, newchsr)
[String].substring(0,1).replace(oldchar, newchsr)
[string].substring(1, [string].lenght() -1)
newstring = s1 + mid + s2
Hva er JRE?
Hva er JVM
Hva er JDK
Hvordan compile
Hva er compile-time error
Hva er run-time error
jre
inneholder jvm og flere mapper som er nødvendig for at java skal kjøre
jvm er det som kjører java bytekode, altså det som står i .class
jdk inneholder ting nødvendig for å programmere, som klasser og metoder, java, javac,
Hvis man ikke skulle ha programmert, hadde man bare trengt jre
Oppsumert: Lag en .java fil med java kode Gå i cdm, skriv javac [java fil].java Da får man en .class fil Så skriver man i cdm: java [class fil]
Skjer ved feil syntax (eks flemmer semikolon)
Dette gjør at programmet ikke kjører
Skjer ved at det er en error mens programmet kjører (eks ArrayIndexOutOfBounds). Dette gjør at programmet stopper mens det kjører
Hva er singleton
Hvordan lage det
En klasse som bare kan lage en objekt en gang.
Man kan bare eks ha student, ikke student2 osv
Class singleton
public static Singleton instance;
public static Singleton getInstance() { if (instance == null) { instance = new Singleton()} } }
Hva betyr “static typed”
Man må erklære hvilket type variabel noe er når man erklærer variablet.
eks int number
Hva er en constructor?
Syntax?
Brukes for å sette variabler til en klasse.
Litt som __init__ i python
class [className] {
public int number;
public String hilsen;
public className(int number, string hilsen) { this.number = number; this.hilsen = hilsen } }
Hva er en abstract class?
synatx
En abstract klasse er en slags bygge-plan for en subclass. Eks man kan ha en Animal class, så har man en Cat class som er subclass. Men det er rart å ha en Animal class som man kan instansiere, hvis man ikke skal instansiere den, men heller man ha det som en struktur for subclass'er.
public abstract class Animal { public String sound;
public abstract void setSound(String sound); public void { System.out.println("Im an animal"); } }
//Cat vil nå ha det slik at med et enkelt tastetrykk kan man legge til abstract metodene fra Animal, og modifisere dem public class Cat extends Animal { String sound;
@Override public void setSound { this.sound = sound; }
}
Hva er inheretance
Hvordan bruke det
I java er det slik at man ha arve syntax fra parent.
Hvis man har et variabel med inheretance fra parent, refererer man altså ikke til parent, men til det variablet i child.
class public Parent { this.number;
public Parent(int number) { this.number = number; } }
class public Child extends Parent { int number; String name;
public Child(int number, String hilsen) { super(number) this.hilsen = hilsen }
}
Finne det objektet med den minste verdien i et visst attributt?
Finne ganger en verdi er i en liste?
Planet planet = planets.stream().min(
Comparator.ComparingDouble(Planet::getMass))
.get()
Collections.frequency(liste, verdi);
Hvordan typecasting?
Hvordan fungerer typecasting fra mindre verdi, til større verdi, og motsatt?
Hva er en static metode?
Hvordan sende parametere inn i main metode? Hvordan bruke de parameterene?
Hva er interface?
Hva er comparable?
Comparable syntax
Hva er UML?
Forskjell på abstrakt og interface?
Hva er en anonym klasse?
Hvordan bruke en barnemetode i en foreldreklasse?
typecasting:
implicit: fra noe “Mindre” til noe “større
byte -> short -> long -> float -> double
Dette tar java automatisk hensyn til.
så eks int double sko = int num + double num
explicit - Fra noe større til noe mindre
double alder = 8.5;
int orendAlder = int(alder);
static metode høerr ikke til et visst objekt, men heller klassen.
Et innebygget eksempel på dette er eks Math.pow().
En slik metode kan man bruke uavhengig av objekt, og om objektet er
opprettet eller ikke.
En static metode avhenger ikke av om klasse er instansiert.
I en static metode kan man ikke bruke “this” nøkkelordet.
Man bruker navnet til klassen når man bruker metoden, ikke navnet til et
objekt.
Sende inn paramtere til main metoden (String[] args)
GJøres slik i intellj: Edit configuration - her kan man gjøre det
Man kan så referere til parameterene slik i koden:
arg[index]
Hva er et interface?
Hva er interface?
Et slags grensesnitt for en klasse.
Et interface kan ikke instansieres,
dets metoder kan heller ikke ha noen kropp.
Andre klasser kan arve fra en interface ved å bruke “implements”
nøkkelordet,
men man sier ikke at en klasse “arver” fra et interface, men heller
“implementerer” et interface.
Interface er en slags kontrakt for hva en klasse skal innholde
En klasse kan implementere flere interface.
En interface metode er by default public, så man tregner ikke å
inkludere “public” nøkkelordet
public interface tegn { void metode(); }
Man kan også gjøre dette:
if (klasse implements interface) {
((interface) klasse.interface-metode)
Comparable - innebygget interface, kan brukes til å sotere ting i en
liste på, ut ifra en verdi i objekt.
Klassen til objektene som skal sammenlignes implementerer Comparable
interface
Comparable
så
@Override
public int compareTo(klassenavn) {
returnValue = this.verdi - objektnavn.verdi
if (returnValue == 0) { return this.annenVerdi - objektnavn.annenVerdi } return returnValue; } Denne klasse setter opp hvordan sort skal sortere. Den sorterer etter den verdien som er størst. Først sammenligner den "verdi", hvis de verdiene er like, sammenligner den heller "annenVerdi"
main:
liste med objekter = liste
Collections.sort(liste)
class Student implements Comparable{
int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; }
public int compareTo(Student st){ if(age==st.age) return 0; else if(age>st.age) return 1; else return -1; } }
Hva er UML?
Hva betyr de forskjellige pilene i en UML?
Arv ——-|>
Aggregering <>———- : en sammling ev en klassetype i en annen?
Eks hvis man har en klasse for en liste av objekter av en annen klasse
(Direkte) assosiasjon —————> : Eks hvis man har en klasse for
en liste av objekter av en annen klasse
Forskjell på interface og abstrakt klasse?
interface:
Har bare abstrakte og static variabler som er final
En klasse kan implementere flere interface
Metoder er naturlig public
Abstrakt:
Har både abstrakt og konkrete metoder, og konstruktører
En klasse kan bare arve en abstrakt klasse
Metoder kan være public, private, og protected
va er en anonym klasse?
En type nestet klasse
Er til å gjøre kode mer konsis
Man lager blueprinten og instanserer klassen samtidig
Brukes gjerne i forbindelse med å lage en implementasjon av en interface
main: metode(new interface, en verdi) { @Overrride interface metode(en verdi) { kropp return verdi; } }
Man kan jo egentlig ikke instansiere et interface,
så det java lar en gjøre, er å la en implementere interface, for hvordan
det skal funke,
i parameteren