Notater

GENERELT.

Javaprogram skal funke på alle plattformer og OS'er.

Et Javaprogram funker gjennom JVM, Java Virtual Maskin.
JVM ser etter en metode som heter main når den skal kjøre.

JSDK - Java Softvare Development Kit. Vi kan lage program i SDK.

En Java Compiler omformer, eller "kompilerer" programmet til kjørbar kode. Det blir i utgangspunktet lagd i extension java. Etter koplilering får det extension class.

Komentarer.
// komentarer på ei linje
/* Kommentarer som
strekker seg over flere
linjer */
/** Egen komentartype som kalles javadoc */

Java er et objektorientert språk. Vi beskriver et objekt i egen fil, gir det egenskaper og metoder, for siden å opprette instanser av objektet og kalle på det fra andre program.
Når vi lager klasser og objekter er det for å kunne bruke dem etterpå, gjerne knytta sammen i pakker.

Java består av en rekke ferdiglagede klasser, f.eks java.lang (language) og java.math, eller java.swing for grafisk grensesnitt.

Vi kan i tillegg lage våre egne.

For å bruke hverandres filer og holde orden i systemet bør man følge en navnekonvensjon, snu maskinnavnet.
Eks; geir, student.itat.no blir
no.itat.student.geir og deretter filnavn.
På min maskin:
c:\source\java\packages\no\itat\student\geir\servering for å komme til alle filene i mappa servering.

Husk å endre settinga i kontrollpanelet:
Kontrollpanel => System => Advanced => Environment Variables => New Systemvariable
Valiabel navn:
Legg til i CLASSPATH  .;\source\java\packages

Mer under Komme igang

 

 

 

 

 

 

 

 

 

Komme igang.

Et eksempel:

//det er mulig å begynne med en kommentar
//en, kun en eventuell pakkedeklarasjon må først

package no.itat.student.geir.servering;

//deretter må en eller flere eventuelle importer

import javax.swing.*;

//navnet på klassen, lagres som FilNavn.java
public class FilNavn {

//deklarering av klassevariabler (gyldig i hele klassen)
public static float grunnProvisjon = 200.00f;
public static float PRODUKT_A = 239.99f;
public static float sum = 0.00f;
public static float provisjon = 0.00f;

//eventuelle metoder
public float ukesProvisjon() {

//eventuelle hjelpevariabler (gyldig kun i metoden)
int lokalVaribel

float provisjon= grunnProvisjon + (sum * 0.09f);
return provisjon;
}
//sluttparentes for public float ukesProvisjon()

//main metoden hvis fila skal gjøre noe selvstendig arbeid
public static void main(String[] args) {

System.out.println("Ukelønn: " + provisjon);
}
//sluttparentes for public static void main

} //sluttparentes for public class FilNavn

 

Dersom programmet skal bruke pakker, packages, klassebibliotek som henger sammen, må man starte fila med nøkkelord i toppen av fila. Man kan kun ha kommentar eller blanke linje foran.

Vil man gjøra ei fil i mappa servering tilgjengelig, skriv:
package no.itat.student.geir.servering

Vil man bruke filer fra mappa servering, skriv:
import no.itat.student.geir.servering.*;
// Du kan nå bruke alle filer fra denne katalogen
se også generelt

For å lage ei java fil skriver man:

public class FilNavn {

     Innhold i fila

}

Javafiler bruker å ha stor forbokstav.
Hele innholdet i fila kommer så mellom to engleparenteser.{}

For å kjøre et program leter Java etter en metode som heter main.
Derfor må denne setninga med i en av filene for å kunne kjøre et program:

public static void main(String[] args) {

}

 

 

 

 

 

 

IDENTIFIERS

Identifiers skal begynne med bokstaver, dollartegn($) eller underscore (_).

Man kan ikke bruke keywords eller reserverte ord.
Husk at keywords begynner med små bokstaver, slik at f.eks Abstract, Boolean eller Interface er tillatt som indentifiers.

 

 

 

 

 

 

 

 

 

 


UTSKRIFT:

System.out.println("Denne tekststreng blir skrevet ut på ei linje.");
System. out.print("Disse tegnene" + 'a' + 'b' + 'c' + "blir");
System. out.print(" skrevet ut på to linjer.");

 

 

 

 

 

 

 

 

 

 

LAGE ET OBJEKT:

En klasse er beskrivelse av et objekt og får sin egen .class - fil.
En klasse består av data og metoder.
Man kan ha flere klasser i en javafil, men bare en public???(sjekk)
Vi lager et objekt fra en klasse. Dette kaller vi en "instanse" av klassen.

Syntax for å lage en instans av et objekt:
Picture myPic = new Picture();
Det første "Picture" er dataklassen Picture.
Sammenlikning med primitiv datatype:
int myNumber = 42;
Vi bruker nøkkelordet new for objekter samt (). Denne er med eller uten parametere, avhengig av hva slags construktor objektet har.
For primitiv datatype trenger vi ikke bruke new, det er bare for objekter.

 

 

 

 

 

 

 

 

 

Deklarere & Tilordne
- - - - eller - - - - - -
Initialisere

Alle variabler må først opprettes, deklareres før de kan brukes. Datatypen oppgis.
Når man deklarerer nye objekter er datatypen = navnet på klassen.
Etter deklareringen må man tilordne en verdi.
Disse to prosessene kan gjøres i en kortform ved å Initialisere.

Eks:

Deklarere: int i;
Tilordne: i = 0;

Initialisere: int i = 0;

Vi deklarerer en konstant med nøkkelordet final, og bruker store bokstaver i navnet, slik:

private float final PRODUKT_A = 239.99f

 

 

 

 

 

 

 

 

 

METODER

(Lage egne metoder)
Noen vanlige metoder fra Javas standardbibliotek:

minVariable.length();
// fra java.lang - gir lengden på en streng

 

 

 

 

 

 

 

 

LAGE EGNE METODER

Et eksempel:
// I denne Klassen har vi metoden tilFahr som tar en float parameter.

public class FahrCels {

public static float tilFahr(float celsius) {

float fahr;
fahr = (9.00f * celsius) / 5.00f + 32.00f;
return fahr;

}

public static void main(String[] args) {

float celsius = 0.00f;

float sum = tilFahr(celsius);

System.out.print(celsius + " grader Celsius tilsvarer ");
System.out.print(sum + " grader Fahrenheit.");
}

}

 

 

 

 

 

 

 

MODIFIERS

  • public
    Tilgjengelig fra alle steder klassen kan nåes

  • protected
    Kan aksesseres fra samme pakke eller arvede klasser

  • private
    Mest begrenset. Kan bare kalles fra samme klasse

 

 

 

 

 

 

 

 

CASTING.

Vi kan gjøre om datatyper fra en slag til en annen. Dette kalles casting. EXPLICIT CAST (int) caster nedover. F.eks fra long til int. Vi setter ned nye typen vi ønsker i (parentes) foran variabelen vi skal caste.
IMPLISIT CAST - AUTOMATISK CAST caster oppover - f.eks fra int til long. Dette gjør Java sjøl.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DATATYPER

Java er strongly typed, det betyr at alle variabler må defineres, man må deklarere hva slags type de skal bestå av.

Hva slags typer har Java?

  • 4 slags integer: byte, short, int og long.
  • 2 floating point: float og double
  • Boolean som kan være true eller false (default er false)
  • Char: Bokstaver og tegn. Default \u000

 

 

 

 

 

 

 

Litteraler og konstanter.

En litteral kan være et enkelt tall.

En konstant deklareres ved nøkkelordet final, samt datatype og normalt ved å gi variabelen store bokstaver, slik:

final float KRONER_PR_TIME = 42.37;

 

 

 

 

 

 

 

 

 

 

Assignment operator

Enkel tilordning skjer ved =.
+= eller *+ kan også brukes
x += 2 betyr x = x+2
x kan være en binær ikke boolsk operator
Merk: x evalueres kun en, ikke to ganger, f.eks x-- += 3 betyr en ned, ikke to
dessuten impliserer bruk av assignment operatorene en implisit cast.
byte x = x + 1 fører til kompileringsfeil siden + er en unary operator og svaret blir int.
Korrekt kode blir
byte x = (byte)x + 1;
Siden bruk av assignment operatorene innebærer implesitt casting er
byte +=x lovlig.

 

 

 

 

 

 

 

 

Modulo operator %

Gir verdien til resten i en divisjon.
Eks: 7/4 = 1 med 3 i rest
7 % 4 = 3

Ved negative tall eller ved desimaltall regner vi som ved positive tall, men resultatet følger tegnet til den venstre operanden. Tegnet til høyre operand er likegyldig.

Kan caste en ArithmeticException ved deling med 0.

 

 

 

 

 

 

 

 

Hva slags exceptions må behandles?

Exceptions er objekter som kommer fra java.langThrowable og dens subklasser.

Det finnes tre hovedgrener:

  • java.lang.Error
Error
  • java.lang.RuntimeExceptions
Runtime
  • java.lang.Exception Checked
Checked

Det er kun de Checked exceptions vi må behandle. Error kan vi likevel ikke gjøre noe med, og runtime bør vi kode oss bort fra, f.eks med if-betingelser.

Vi kan behandle runtime exceptions på to måter:
I try og catch blokker. Eller vi kan bruke nøkkelordet throws og sende ansvaret for behandlinga videre til stedet metoden som lagde dem blei kalt.
Denne vil så få de samme to muligheter.

Se også try, catch, finally, throw og throws. her

Exceptions og overkjøring.

Når du arver fra en klasse og overkjører en metode som kaster exceptions, kan ikke den nye metoden kaste exceptions fra andre klasser eller subklasser enn originalen. Man kan ikke utvide exceptions, men man kan godt la være å kaste noen exceptions fra den nye metoden.

 

 

 

 

 

 

 

 

Garbage collection

Man kan ikke tvinge JAVA til Søppeltømming. Det skjer automatisk når JAVA sjøl vil av en lavprioritets tråd i bakgrunnen, men man kan gjøre klar til tømming på flere måter:

  • Ved å kalle metoden System.gc(),
  • Ved å kalle metoden Runtime.gc() eller
  • ved å tilordne null variablen man vi kaste i søpla.

 

 

 

 

 

 

 

Arrays(tabeller)

Arrays er organiserte samlinger av primitivs, objekt referanser eller andre arrayer.

For å lage og bruke en array må man:

  • deklarere
  • konstruere og
  • initialisere

Deklarasjon og konstruksjon på en linje:

int[]ints = new int[25;

Deklarasjon, konstruksjon og initialisering på en linje:

float[] diameters = {1.1f, 2.2f, 3.3f};

Deklarering: Man deklarerer elementtypen og navnet, sammen med et par firkantparenteser,
bruker nøkkelordet new og gir en størrelse, slik:

int lock[];
lock = new int[25];

Eller på en linje slik:

int[] lock = new int[25];

Henter vi en array fra dos-promten som vi ikke veit lengden av kan vi skrive:

int lock[] = new int[args.length];
-Siden den alltid kommer som en String Array må vi caste den til integer, slik:

for (i = 0; i < args.length; i++) {
lock[i] = Integer.parseInt(args[i]);
}

Vi bruker ofte for-løkker sammen med arrays, f.eks slik:

for (i = 0; i <lock.length; i++) {
sum += lock[i];
}

Her legger vi sammen alle tallene i arrayen.

Hvis vi skal referer til det første elementet i en allerede deklarert array lock skriver vi:

lock[0];

Hvis vi skal tilordne de første 3 elementene i arrayen lock en verdi, f.eks tallene 5, 4 og 9 skriver vi:

lock[0] = 5;
lock[1] = 4;
lock[2] = 9;

Man kan også skrive:

int lock = (5, 4, 9), men da får arrayen bare de tre verdiene.

Vi kan også lage en array av objekter. En array av 7 kanneobekter som vi kaller kjøkkenSkap vil se slik ut:

kanne kjøkkenSkap[] = new kanne[6];

Hvis vi skal sende arrayen lock til en metode som parameter skriver vi arrayens navn UTEN parenteser, slik;

minMetode(t);

En array av boolean blir automatisk initialisert til false.

 

 

 

 

 

 

 


 

KONSTRUKTØRER.

Konstruktøren har alltid samme navn som klassen, og ingen
returverdi.

Eksempel: Hvis klassen heter Kanne - public class Kanne
så vil kostruktøren se slik ut:

Kanne(en eller flere parameter) {

// en eller flere komandoer

}

Constructors og subclassing.

  • Subklasser arver ikke constructors og må lage sine egne.
  • En klasse uten constructor har en default c. Den er public og uten argument.
  • En c. kan kalle på andre c. i klassen med this(). Dette må gjøres i starten på c.
  • En c. kan kalle på en spesiell c. i superklassen med super( ). Det må gjøres i starten på c.
  • Hvis du verken kaller på super( ) eller this ( ) i en c. lager compileren et kall til super( ) for deg.
  • Hvis du arver fra en klasse som ikke har null argument c., eller hvis den c'en ikke er tilgjengelig i subklassen kan du ikke tillate default kall på super( ). Du må ekslesitt kalle super( ).

 

 

 

 

 

 

 

Threads

Med bruk av tråder får vi flere ting til å se ut til å skje samtidig.
Tråder kan opprettes i klasses som arve fra klassen Thread eller implementere interfacet Runnable. De må ha en run() metode hvor det som skal utføres er kodet. (Paralell til main().) De må startes med start().
Det er lurt å implementere Runnable for da kan man arve fra andre klasser.

En Monitor er et objekt som har noe synkronisert kode.
Synkronisert kode er markert med kodeordet Syncronized. Hele metoder eller blokker {}.

 

 

 

 

 

 

 

 

 

 

 

Indre klasser

  • Klasser definert i andre klasser kalles indre klasser.
  • Den kan være private, public, default eller protected. Static eller final.
  • Men: Klasser definert i en blokk kan IKKE være statisk eller ha aksess modifier. Den er default.
  • En klasse definert i en blokk kan være anonym.
  • Indre klasser har access til variabler i instanser av den omsluttende klassen.
    Merk:
    Statiske indre klasser har bare access til statiske variabler
    mens indre klasser i blokker har bare access til final variabler i den omsluttende blokka, men ellers access til de andre variablene i klassen som omslutter den.
  • Indre klasser kan implementere interfacer og arve.
  • Anonyme indre klasser kan ikke ha spesifikke konstruktører.

 

 

 

 

 

 

 

IF

int j;

if (j= =0) {

l = 1.0;
}
else if(j= =1) {

l = 1.5;
}
else if(j= =2) {

l = 2.0;
}

else {
System.out.println("Dette gikk i dass");
}

 

 

 

 

 

 

 

 

 

 

 

 

IF ELSE

if (temp <-50) {
System.out.println("Veldig kaldt!");
}
else {
System.out.println("Varmere enn - 50");
}

 

 

 

 

 

 

 

 

 

 

 

 

IF ELSE IF ELSE

int temp;

if (temp <-50) {
System.out.println("VELDIG sjelden det er så kalt.");
}
else if (temp <=0) {
System.out.println("Vannet fryser");
}
else {
System.out.println("Plussgrader");

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WHILE

int i = 4; //f.eks
while (i <=6) {
i++;
System.out.println(" + i + " Geir Sundet " + i );
}

Merk: Det er ikke lov å deklarere variabelen inne i parantesen etter while, slik vi gjør i for-løkker.

 

 

 

 

 

 

 

 

 

 

 

 

DO WHILE

int i;

do {
System.out.println( i );
i++;
}
while (i <59);

Merk: Variabelen må deklareres og tilordnes utenfor betingelsen.

 

 

 

 

 

 

 

 

 

 

 

 

FOR - LØKKE

int i = 0;

for (i = 0; i <object.length; i++) {
sum = intTall1 * i;
System.out.println("--------------------");
}

Merk: Fullt lovlig å deklarere variabelen i parantesen etter do, slik:

for(int i = 0; i < object.length; i++) osv...

Se også Arrays

 

 

 

 

 

 

 

 

 

 

 

 

 

SWITCH

  • Verdien til en case-etikett må være et heltall eller et tegn, altså char, bite, short eller int, ikke boolsk eller flyttall.
    (mer under koden)

switch (wash)
{
case 1:
j = 1.0;
break;

case 2:
j = 1.5;
break;

case 3:
j = 2.0;
break;

default:
System.out.println("Dette gikk i dass");
}

  • Det er ikke nødvendig å omslutte en handlingsliste med
    blokknotasjon {}.
  • Variabler deklarert i switchen kan ikke brukes utenfor.
  • Uttrykksverdien og verdien til en case-etikett testes for
    likhet, mens if-else setninger tillater vilkårlig sannhets-
    utrykk.

 

 

 

 

 

 

 

MySql

cd mysql
cd bin
mysql
show databases; //viser tilgjengelige databaser
use NavnetPåDatabasen //åpner spesifisert database
create database sample_db; //oppretter db som heter sample_db
show tables;
create table user; //oppretter en tabell som heter user

Man kan kjøre sql-setninger fra tilgjengelige tabeller, f.eks:
select * from kontakt //hvor kontakt er en av tabellene

 

 

 

 

 

 

 

ARV

Arv. arv Power Point

I ei pakke har vi et hovedobjekt,
men flere spesialiserete underobjekter som arver egenskaper og metoder fra det generelle hovedobjektet.

Feks
Bopel

//medlemsvariablene:
string betegnelse; //hva bopelen heter
int boligflate; //som sier seg sjøl
--------------------------------
toString () : String; // toString metode returnerer string
Bopel(String, int); // Constructor
---------------------------------

Alle objekter har en toString metode, fordi alle objekter er subklasser av Java's objektklasse og har arvet den. Vi lager en egen toString. Notasjonen String() : String betyr at den returnerer en string.

Med toString metoden kan alle objekter skrives ut slik: System.out.println(b); der b er et objekt b.

Ny subclass:
Telt
------------------------
// medlemsvariabler:
float vekt;
string dukType;
------------------------
toString() : String;
Telt(int, float,string); //Constructor

Bopel er nå er superklasse og Telt er en subclass.
Klassen Telt arver fra superklassen Bolig.
Vi kan også lage Leilighet, Campingvogn og Caravan som subklasser til Bolig.

Når vi lager constructor vil ikke Java lage default constructor for oss. Derfor er det viktig å lage en default constructor selv.

F.eks:
public Bopel() {

betegnelse = "Ukjent";
boareal = 0;

}

For å lage en subclass Telt i pakka oopDemo start fila med:
no itat.student.geir.oopDemo;

public class Telt extends Bopel {

float vekt;
public Telt(float vekt, int areal) { //(Constructor)

super("Telt", areal);
/*Kallet til superklassen må skje først. Merk at classenavnet skal stå i "anførselstegna"*/
this.vekt = vekt;
/*this
viser til medlemsvariabelen vekt, mens den andre er parameteretvekt. Brukes inne i en metode*/

 

 

 

 

 

 

 

 

 

 

Overloading og Overriding

Overlasting og overkjøring.

  • En metode kan ha samme navn som en annen metode i samme klasse hvis den følger regler for overloading og overriding
  • En lovlig overkjøring har forskjellig antall eller type argumenter. Forskjellig returtype er ikke nok.
  • Override:
  • Hvis vi lager en metode i en subklasse med samme navn som en metode i superklassen, vil metoden i subklassen "kjøre over" metoden i superklassen.
  • En overkjørende metode kan ikke plasseres i samme klasse som den overkjørte metoden men i en subklasse.
  • Lovlig overkjøring har identiske argument-typer og rekkefølge og er ikke mindre tilgjengelig enn originalen. Den overkjørende metoden må ikke kaste noen checked exceptions som var illegale for den overkjørte metoden.
  • Super; man kan kalle på den overkjørte metoden xxx i superklassen fra subklassen slik super.xxx( )

 

 

 

 

 

 

 

 

 


GUI

Grafic User Interface lar oss lage et grafisk grensesnitt.
Bygger nesten i sin helhet på javax.swing klassen. Desuten på java.awt. javax.swing er en videreutvikling av awt, de to klassene har mye felles og javax.swing bruker mye fra java.awt. (abstract window toolkit).

For å lage en grafisk applikasjon trenger vi et vindu,
JFrame
en instans av klassen JFrame
Oppå JFrame bruker vi en
container

som vi får tak på ved
getContentPane()
For å kontrollere hvordan ting fordeler seg i containeren brukes en
Layout Manager
Vi kan f.eks bruke BorderLayout (andre finnes).
Den deler containeren i fem deler,
NORTH, EAST, WEST, SOUTH og CENTER.

Inni de forskjellige delene kan vi plassere objekter, f.eks
JRadioButton, JCheckBox, JButton.

Komme igang med et GUI dokument.

//Vi arver som regel fra disse to :
import.javax.swing.*;
import.java.awt.*;


public class GUIDemo {
public static void main (String[] args) {

//Oppretter et JFrame objekt:
JFrame f = new JFrame ("GUIDemo");

//Objektet arver en masse Metoder:
f.setSize(400, 200); //sette størrelsen til 400 * 200

//metode for å stenge aplikasjonen:
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Vi kan opprette flere objekter:
Container c = f.getContentPane();

//Sette inn en ledetekst
c.add(new JLabel("Ledetekst"), BorderLayout.SOUTH);

JButton button = NewJButton("Trykk på meg!");
//legg til i containeren:
c.add(button, BorderLayout.NORTH); //Siste ledd valgfritt, default er center.s

Med BorderLayout kan man bare ha en komponent i hver del, men ved å bruke f.eks box kan vi legge flere komponenter i box og så plassere boks f.eks i EAST.

Box radioBox = new Box(BoxLayout, Y_AXIS); // der Y_AXIS vi sette elementene under hverandre. Fyll på med:
radioBoks.add(new JCheckBox("Sjekk 1"));
radioBoks.add(new JCheckBox("Sjekk 2"));

c.add(radioBoks, BorderLayout.EAST); //som plasserer boksen med alle checkBoxene i east

//Siden framen blir oppretta som skjult må den gjøres synlig, og det må gjøres tilslutt.
f.setVisible(true);

}
}

 

 

 

 

 

 

 

 

 

equals eller ==

== og != tester for likhet eller ulikhet og returnerer et boolsk true eller false.
For primitive verdier sammenlikner man tallverdier, og en float på 10.0 er lik en byte på 10.
For objekt variabler sammenlikner man objekt referansene, IKKE innholdet i objektreferansene.

For å sammenlikne innholdet i objektreferanser bruker man metoden equals().

f.eks slik:

String s = "Marcus";
String s2 = new String("Marcus");
if(s.equals(s2)){
System.out.println("Halleluja, we have a match!");
}
else {
System.out.println("No match");

 

 

 

 

 

 

 

 

 

Bitwise operators

&, ^, og |
~

  • & kalles bitwise AND
  • ^ kalles eXclusive OR
  • | kalles OR
  • ~ kalles Bitweise Inversion Operator

Brukes til å sammenlikne bits.

~ utfører bitwise inversion på integraler.
~ converterer alle 1 til 0 og alle 0 til 1.
Brukes ofte sammen med <<, >> og >>>


Regler:

&:
1 og 1 blir 1
Alt annet blir 0
1 AND 1 blir 1
^:
1 eller 0 blir 1
0 eller 1 blir 1
Alt annet blir 0
Bare 1 OG 0 blir 1
Kun ULIKE tall blir 1
|:
0 og 0 blir 0
Alt annet blir 1
1 OG hvaSomHelst blir 1

Disse operatorene kan også brukes på boolske operasjoner.

Regler:

&:
Sant og Sant blir Sant
Alt annet blir False
Sant AND Sant blir Sant
^:
Sant eller False blir Sant
False eller Sant blir Sant
Alt annet blir False
Bare Sant OG False blir Sant
|:
False og False blir False
Alt annet blir Sant
Sant OG hvaSomHelst blir Sant

 

 

 

 

 

 

 

 

 

Short-Circuit Logical Operators

&& og || brukes til logiske AND og OR operasjoner på boolske typer.

For && må må BEGGE betingelsen være true for at utrykket er true.
Hvis en den første betingelsen er falsk blir ikke den andre testet. Utrykket er false.

For || må begge være False for at utrykket blir false.
Hvis en den første betingelsen er true blir ikke den andre testet. Uttrykket er true.

    Altså:
  • De aksepterer boolsk operander.
  • De tester bare den høyre betingelsen hvis reultatet er usikkert etter å ha testa den venstre.

 

 

 

 

 

 

 

 

 

Unary operator

+, -, ++, -- og ~ kalles unaty operatorer når de opptrer sammen med bare et tall.

++ betyr et opp
-- betyr et ned
~ bitwise inversion operator

Når en unary operator brukes på en Byte, short eller char konverteres de automatisk til int.
Unntak: ++, --

~ konverterer alle 1 bits i binær verdi til 0 og alle 0 til 1.

 

 

 

 

 

 

 

 

 

 

Binary operator

+, -, *, /, %, <<, >>>, >>, &, ^, |
kalles binary operators når de opptrer sammen med to eller flere tall.

Konverteringsregler:
Det eller de andre tallene konverteres til den høyeste (av long, float og double). Hvis tallene er lavere enn int konverteres de til int.

&, ^, | se Bitwise Operators
<<, >>>, >> se Shift Operators

 

 

 

 

 

 

 

 

Shift Operators

<<, >>>, >>

 

 

 

 

 

 

 

 

Ternary operator
også kalt conditional operator

? :
tar 3 operander

Med denne kan vi kode if - else betingelser på ei linje, slik:

Hvis a, b og c er int variabler, og x er boolean:
a = x ? b : c;

betyr

if (x) {
a = b;
}
else {
a = c;
}

Merk: Resultat type bestemmes ved kompilering, så hvis variablene er av forskjellig type gjelde vanlige konverteringsregler. Eks: hvis et argument er int og et er float, blir svaret float uansett om int'en blir valgt.