1 java basics chapter 2 spring 2005 cs 101 aaron bloomfield

Post on 14-Dec-2015

219 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Java basics

Chapter 2Spring 2005CS 101Aaron Bloomfield

2

DisplayForecast.java

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}}

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} Three statements make up the action of method

main()

Method main() is part of class DisplayForecast

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} A method is a named piece of code that performs

some action or implements a behavior

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} An application program is required to have a

public static void method named main().

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} public, static, and void are keywords. They

cannot be used as names

public means the method is shareable

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} We will discuss static and void later

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} Java allows a statement to be made up of

multiple lines of text

Semicolons delimit one statement from the next

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} A class defines an object form. An object can

have methods and attributes

Keyword class indicates a class definition follows

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} A class like a method must have a name

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} A class like a method must have a name

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} Programs are read by people – make sure they are

readable.

Use whitespace, comments, and indentation to aid understanding

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} // indicates rest of the line is a comment

Comments are used to document authors, purpose, and program elements

Three comments

3

Indentation

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}}

Indentation indicates subcomponents

Method main() is part of DisplayForecast

Statements are part of method main()

4

Good whitespacing

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");

}} Whitespace separates program elements

Whitespace between program elements is ignored by Java

Whitespace

5

Bad whitespacing The same program without any whitespacing or comments:

public class DisplayForecast2 { public static void main (String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } }

66

A whitespacing aside: A whitespacing aside: IOCCCIOCCC

The International Obfuscated C Code The International Obfuscated C Code ContestContest– Online at http://www.ioccc.orgOnline at http://www.ioccc.org

C has very terse syntaxC has very terse syntax– So the contest tries to make it terser!So the contest tries to make it terser!

One common method is by modifying One common method is by modifying the whitespacethe whitespace

77

A whitespacing aside: A whitespacing aside: IOCCCIOCCC

#define _ -F<00||--F-OO--;#define _ -F<00||--F-OO--;int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO(){{ _-_-_-__-_-_-_ _-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-__-_-_-_-_-_-_-_ _-_-_-__-_-_-_}}

#define X#define X#define XX#define XX#define XXX#define XXX#define XXXX#define XXXX#define XXXXX#define XXXXX#define XXXXXX#define XXXXXX#define XXXXXXX#define XXXXXXX#define orfa for#define orfa for#define XXXXXXXXX#define XXXXXXXXX#define archa char#define archa char#define ainma main#define ainma main#define etcharga getchar#define etcharga getchar#define utcharpa putchar#define utcharpa putchar

#include <stdio.h>#define Q r=R[*p++-'0'];while(#define B ;break;casechar*s="Qjou!s\\311^-g\\311^-n\\311^-c\\::^-q-ma%mO1JBHm%BQ-aP1J[O1HB%[Q<nbj\o)*|gps)<<*txjudi)m*|aQdbtf!::::;sfuvso<aQefgbvmu;aQ<m,,a%CQ<csfbla%bQ<aN2!Q\\ndbtf!aP2Q;m>aP2Q<a%!D12J!JGJHJOJQJFJSJJJMHS%HD12D12N3!N4\nJUJT%UQm>aP4HC%T\Qs\\q,,^>m,2<m>aP4HC%SD12N1\nJNQm>s\\..q^aHC%NHb%GN1!D32P3%RN1UP1D12JPQUaP1H\R%PN4\nQ<g\\(aP3Q(^>aP2Q,2<n\\(aP3Q(^>aP4Hb%OD12D12N2!N3\nJVP3Q,,<jg)aP3Q=>n\\\(aP3Q(^*m>g\\(aP3Q(^<fmtf!m,,aHC%QN1!N1\nJ#Qqsjoug)#&e]o#-aP1Q*aHb%#Qqvut)\aP1Q*aHb%FN1\nQm>::::aHC%VP3Q>bupj)hfut)c**aHb%JD12JON1!Qjg)a%LN1UP1D12JIQUa\P1HL%IQ*m>aN2!N2\nP2Q<fmtf!m,,aHC%MN1!N2>P2Q>aN2\nP2Hbdd!b/d";k;char R[4][99];main(c,v)char**v;{char*p,*r,*q;for(q=s;*q;q++)*q>' '&&(*q)--;{FILE*i=fopen(v[1],"r"),*o=fopen(q-3,"w");for(p=s;;p++)switch(*p++){B'M':Q(k=fgetc(i))!=EOF&&k!=*p)*r++=k;if(k==EOF){fputs("}}\n",o);fclose(o);return system(q-6);}*r=0B'P':while(*p!='`')fputc(*p++,o)B'O':Q*r)fputc(*r++,o);p--B'C':k=0;Q k<*p-'0')(*r++=fgetc(i),k++);*r=0 B'I':k= *p;if(**R==k)goto G B'G':k= *p;G:p=s;while(*p!='$'||p[1]!= k)p++;p++B'N':R[*p-'0'][0]++;}}}

X XX X

X X X XX X X X

X X X XX X X X

X X X XX X X X

X X X XX X X X

X X X XX X X X

X X X XX X X X

X X X X X XX X X X X X

X XX X X XX XX XX X X XX X

X XXX X XXXXXXXXX X XXX XX XXX X XXXXXXXXX X XXX X

X XXX X XXXX XXXX X XXX XX XXX X XXXX XXXX X XXX X

X XXXX X XX ainma(){ archa XX X XXXX XX XXXX X XX ainma(){ archa XX X XXXX X

X XXXX X oink[9],*igpa, X XXXX XX XXXX X oink[9],*igpa, X XXXX X

X XXXXXX atinla=etcharga(),iocccwa XXXXXX XX XXXXXX atinla=etcharga(),iocccwa XXXXXX X

X XXXX ,apca='A',owla='a',umna=26 XXXX XX XXXX ,apca='A',owla='a',umna=26 XXXX X

X XXX ; orfa(; (atinla+1)&&(!((( XXX XX XXX ; orfa(; (atinla+1)&&(!((( XXX X

X XX atinla-apca)*(apca+umna-atinla) XX XX XX atinla-apca)*(apca+umna-atinla) XX X

X X >=0)+((atinla-owla)*(owla+umna- X XX X >=0)+((atinla-owla)*(owla+umna- X X

X atinla)>=0))); utcharpa(atinla), XX atinla)>=0))); utcharpa(atinla), X

X X atinla=etcharga()); orfa(; atinla+1; X XX X atinla=etcharga()); orfa(; atinla+1; X X

X X ){ orfa( igpa=oink ,iocccwa=( X XX X ){ orfa( igpa=oink ,iocccwa=( X X

X X (atinla- XXX apca)*( XXX apca+umna- X XX X (atinla- XXX apca)*( XXX apca+umna- X X

X atinla)>=0) XXX XXX ; (((( XX atinla)>=0) XXX XXX ; (((( X

X atinla-apca XXXXX XXXXXXX XXXXX )*(apca+ XX atinla-apca XXXXX XXXXXXX XXXXX )*(apca+ X

X umna-atinla XXXXXX )>=0) XXXXXX +((atinla- XX umna-atinla XXXXXX )>=0) XXXXXX +((atinla- X

X owla)*(owla+ XXXX umna- XXXX atinla)>=0)) XX owla)*(owla+ XXXX umna- XXXX atinla)>=0)) X

X &&"-Pig-" XX "Lat-in" XX "COb-fus" XX &&"-Pig-" XX "Lat-in" XX "COb-fus" X

X "ca-tion!!"[ X (((atinla- X apca)*(apca+ XX "ca-tion!!"[ X (((atinla- X apca)*(apca+ X

X umna-atinla) X >=0)?atinla- X apca+owla: XX umna-atinla) X >=0)?atinla- X apca+owla: X

X atinla)-owla X ]-'-')||((igpa== X oink)&&!(*( XX atinla)-owla X ]-'-')||((igpa== X oink)&&!(*( X

X igpa++)='w') X )||! X (*( X igpa X ++)=owla); * XX igpa++)='w') X )||! X (*( X igpa X ++)=owla); * X

X (igpa++)=(( X ( XXX XXX X atinla-apca XX (igpa++)=(( X ( XXX XXX X atinla-apca X

X )*(apca+ X umna XXX - XXX X atinla)>=0) XX )*(apca+ X umna XXX - XXX X atinla)>=0) X

X ?atinla- X apca XXX + XXX owla X :atinla), XX ?atinla- X apca XXX + XXX owla X :atinla), X

X atinla= X X X X etcharga()) XX atinla= X X X X etcharga()) X

X ; orfa( X atinla=iocccwa?(( X (atinla- XX ; orfa( X atinla=iocccwa?(( X (atinla- X

X owla)*(owla+ X umna-atinla)>=0 X )?atinla- XX owla)*(owla+ X umna-atinla)>=0 X )?atinla- X

X owla+apca: X atinla): X atinla; ((( XX owla+apca: X atinla): X atinla; ((( X

X atinla-apca)* X (apca+umna- X atinla)>=0)+( XX atinla-apca)* X (apca+umna- X atinla)>=0)+( X

X (atinla-owla)* X (owla+ X umna-atinla)>= XX (atinla-owla)* X (owla+ X umna-atinla)>= X

X 0)); utcharpa( XX XX atinla),atinla XX 0)); utcharpa( XX XX atinla),atinla X

X =etcharga()); XXXXXXX orfa(*igpa=0, XX =etcharga()); XXXXXXX orfa(*igpa=0, X

X igpa=oink; * igpa; utcharpa( XX igpa=oink; * igpa; utcharpa( X

X *(igpa++))); orfa(; (atinla+1)&&(!((( XX *(igpa++))); orfa(; (atinla+1)&&(!((( X

X atinla-apca )*(apca+ XX atinla-apca )*(apca+ X

X umna- XXXXX XXXXX atinla)>=0 XX umna- XXXXX XXXXX atinla)>=0 X

X )+(( XXXXX atinla- XX )+(( XXXXX atinla- X

XX owla)*( owla+umna- XXXX owla)*( owla+umna- XX

XX atinla)>=0))); utcharpa XXXX atinla)>=0))); utcharpa XX

XX (atinla),atinla= XXXX (atinla),atinla= XX

XX etcharga()); } XXXX etcharga()); } XX

XXXX } XXXXXXXX } XXXX

XXXXXXXXXXXXXXXXXX

a(X){/*/X=-a(X){/*/X=- a(X){/*/X=-a(X){/*/X=-

-1;F;X=--1;F;X=- -1;F;X=--1;F;X=-

-1;F;}/*/-1;F;}/*/ -1;F;}/*/-1;F;}/*/

char*z[]={"char*z[]={","a(X){/*/X=-","-1;F;X=-","-1;F;}/*/","9999999999 :-| ",char*z[]={"char*z[]={","a(X){/*/X=-","-1;F;X=-","-1;F;}/*/","9999999999 :-| ",

"int q,i,j,k,X,O=0,H;S(x)int*x;{X+=X;O+=O;*x+1?*x+2||X++:O++;*x=1;}L(n){for(*","int q,i,j,k,X,O=0,H;S(x)int*x;{X+=X;O+=O;*x+1?*x+2||X++:O++;*x=1;}L(n){for(*",

"z[i=1]=n+97;i<4;i++)M(256),s(i),M(128),s(i),M(64),N;X*=8;O*=8;}s(R){char*r=z","z[i=1]=n+97;i<4;i++)M(256),s(i),M(128),s(i),M(64),N;X*=8;O*=8;}s(R){char*r=z",

"[R];for(q&&Q;*r;)P(*r++);q&&(Q,P(44));}M(m){P(9);i-2||P(X&m?88:O&m?48:32);P(","[R];for(q&&Q;*r;)P(*r++);q&&(Q,P(44));}M(m){P(9);i-2||P(X&m?88:O&m?48:32);P(",

"9);}y(A){for(j=8;j;)~A&w[--j]||(q=0);}e(W,Z){for(i-=i*q;i<9&&q;)y(W|(1<<i++&","9);}y(A){for(j=8;j;)~A&w[--j]||(q=0);}e(W,Z){for(i-=i*q;i<9&&q;)y(W|(1<<i++&",

"~Z));}R(){for(k=J[*J-48]-40;k;)e(w[k--],X|O);}main(u,v)char**v;{a(q=1);b(1);","~Z));}R(){for(k=J[*J-48]-40;k;)e(w[k--],X|O);}main(u,v)char**v;{a(q=1);b(1);",

"c(1);*J=--u?O?*J:*v[1]:53;X|=u<<57-*v[u];y(X);K=40+q;q?e(O,X),q&&(K='|'),e(X","c(1);*J=--u?O?*J:*v[1]:53;X|=u<<57-*v[u];y(X);K=40+q;q?e(O,X),q&&(K='|'),e(X",

",O),R(),O|=1<<--i:J[*J-48+(X=O=0)]--;L(q=0);for(s(i=0);q=i<12;)s(i++),i>4&&N",",O),R(),O|=1<<--i:J[*J-48+(X=O=0)]--;L(q=0);for(s(i=0);q=i<12;)s(i++),i>4&&N",

";s(q=12);P(48);P('}');P(59);N;q=0;L(1);for(i=5;i<13;)s(i++),N;L(2);}",0};";s(q=12);P(48);P('}');P(59);N;q=0;L(1);for(i=5;i<13;)s(i++),N;L(2);}",0};

b(X){/*/X=-b(X){/*/X=- b(X){/*/X=-b(X){/*/X=-

-1;F;X=--1;F;X=- -1;F;X=--1;F;X=-

-1;F;}/*/-1;F;}/*/ -1;F;}/*/-1;F;}/*/

int q,i,j,k,X,O=0,H;S(x)int*x;{X+=X;O+=O;*x+1?*x+2||X++:O++;*x=1;}L(n){for(*int q,i,j,k,X,O=0,H;S(x)int*x;{X+=X;O+=O;*x+1?*x+2||X++:O++;*x=1;}L(n){for(*

z[i=1]=n+97;i<4;i++)M(256),s(i),M(128),s(i),M(64),N;X*=8;O*=8;}s(R){char*r=zz[i=1]=n+97;i<4;i++)M(256),s(i),M(128),s(i),M(64),N;X*=8;O*=8;}s(R){char*r=z

[R];for(q&&Q;*r;)P(*r++);q&&(Q,P(44));}M(m){P(9);i-2||P(X&m?88:O&m?48:32);P([R];for(q&&Q;*r;)P(*r++);q&&(Q,P(44));}M(m){P(9);i-2||P(X&m?88:O&m?48:32);P(

9);}y(A){for(j=8;j;)~A&w[--j]||(q=0);}e(W,Z){for(i-=i*q;i<9&&q;)y(W|(1<<i++&9);}y(A){for(j=8;j;)~A&w[--j]||(q=0);}e(W,Z){for(i-=i*q;i<9&&q;)y(W|(1<<i++&

~Z));}R(){for(k=J[*J-48]-40;k;)e(w[k--],X|O);}main(u,v)char**v;{a(q=1);b(1);~Z));}R(){for(k=J[*J-48]-40;k;)e(w[k--],X|O);}main(u,v)char**v;{a(q=1);b(1);

c(1);*J=--u?O?*J:*v[1]:53;X|=u<<57-*v[u];y(X);K=40+q;q?e(O,X),q&&(K='|'),e(Xc(1);*J=--u?O?*J:*v[1]:53;X|=u<<57-*v[u];y(X);K=40+q;q?e(O,X),q&&(K='|'),e(X

,O),R(),O|=1<<--i:J[*J-48+(X=O=0)]--;L(q=0);for(s(i=0);q=i<12;)s(i++),i>4&&N,O),R(),O|=1<<--i:J[*J-48+(X=O=0)]--;L(q=0);for(s(i=0);q=i<12;)s(i++),i>4&&N

;s(q=12);P(48);P('}');P(59);N;q=0;L(1);for(i=5;i<13;)s(i++),N;L(2);};s(q=12);P(48);P('}');P(59);N;q=0;L(1);for(i=5;i<13;)s(i++),N;L(2);}

c(X){/*/X=-c(X){/*/X=- c(X){/*/X=-c(X){/*/X=-

-1;F;X=--1;F;X=- -1;F;X=--1;F;X=-

-1;F;}/*/-1;F;}/*/ -1;F;}/*/-1;F;}/*/

9

Identifiers Identifiers are names for variables, classes, etc.

Good ones are compact, but inidicate what they stand for radius, width, height, length

Bad ones are either too long theRadiusOfTheCircle theWidthOfTheBoxThatIsBeingUsed the_width_of_the_box_that_is_being_used

Or too short a, b, c, d, e

Good identifiers will help the graders understand your program!

10

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); }}

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); }}

Keywords

// Authors: J. P. Cohoon and J. W. Davidson// Purpose: display a quotation in a console window

public class DisplayForecast {

// method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); }}

Some words are reserved, and can’t be used as identifiers

11

Capitalization Case matters!

public ≠ Public ≠ PUBLIC This is different that FORTRAN and BASIC This is the same as C/C++

You can use Public as a identifier Not recommended, though!

12

Statements A statement in Java is (usually) a single line

Example: System.out.println (“Hello world!”);

All statements must end with a semi-colon That tells Java that the statement is finished

1313

VariablesVariables

14

Defining variables We’ve seen variables before in math

y = mx + b Here y, m, x, and b can hold any value

To store things in a computer program, we also use variables

Example: int x = 5; This defines an integer variable with value 5

The variable is x The type is int

15

More on variables An integer variable can only hold integers

In other words, it can’t hold 4.3

To hold floating point values, we use the double type double d = 4.3;

The variable is d The type is double

4.3d

16

Assignment operator = Allows the memory location for a variable to be updated

Considerint j = 11;j = 1985;

Assignment operator = Allows the variable to be updated

Considerint j = 11;j = 1985;

Primitive variable assignment

11j

Expression to beevaluated

Name of previouslydefined object

target = expression ;

1985j

17

1a

1aSquared

Considerint a = 1;int aSquared = a * a;a = 5;aSquared = a * a;

Considerint i = 0;i = i + 1;

Considerint asaRating;asaRating = 400;

Primitive variable assignment

5a

1aSquared

5a

25aSquared

0i 1i

-asaRating 400asaRating

int a = 1;int aSquared = a * a;a = 5;aSquared = a * a;

int i = 0;i = i + 1;

int asaRating;asaRating = 400;

18

19.28x

5.12y

5.12rememberX

5.12x

Primitive variable assignment

5.12x

19.28y

5.12x

19.28y

5.12rememberX

19.28x

19.28y

5.12rememberX

Considerdouble x = 5.12;double y = 19.28;double rememberX = x; x = y; y = rememberX;

Considerdouble x = 5.12;double y = 19.28;double rememberX = x; x = y; y = rememberX;

Considerdouble x = 5.12;double y = 19.28;double rememberX = x; x = y; y = rememberX;

Considerdouble x = 5.12;double y = 19.28;double rememberX = x; x = y; y = rememberX;

Considerdouble x = 5.12;double y = 19.28;double rememberX = x; x = y; y = rememberX;

Considerdouble x = 5.12;double y = 19.28;double rememberX = x; x = y; y = rememberX;

1919

A bit of humor…A bit of humor…

20

Printing variables To print a variable to the screen, put it in a

System.out.println() statement:

int x = 5; System.out.println (“The value of x is “ + x);

Important points: Strings are enclosed in double quotes If there are multiple parts to be printed, they are

separated by a plus sign

public class SolvingABC {

public static void main(String[] args) {

// variable definitions and initializationsint a = 3;int b = 12;int c = 6;int d = 1;

// calculate resultsdouble result1 = d * a;double result2 = c + 2 * a;double result3 = d - b / c;double result4 = c * b % c;double result5 = b / 2;

// display the resultsSystem.out.println();System.out.println("result1 : " + result1);System.out.println("result2 : " + result2);System.out.println("result3 : " + result3);System.out.println("result4 : " + result4);System.out.println("result5 : " + result5);System.out.println();

}}

From this week’s lab

Note that I don’t show a lot of comments so that the code will fit on a single slide

Also note all the semi-colons

22

Variable initialization Note that the following

int x; x = 5;

is the same as the following:

int x = 5;

23

Primitive variable types Java has 8 (or so) primitive types:

float double boolean char byte short int long

real numbers

integer numbers

two values: true and false

a single character

Also the void “type”

We’ll only be using half of the types in this course: int, double, boolean, and char

24

Primitive real (floating-point) types A float takes up 4 bytes of space

Has 6 decimal places of accuracy: 3.14159

A double takes up 8 bytes of space Has 15 decimal places of accuracy: 3.14159265358979

Always use doubles It will save you quite a headache!

25

Primitive integer types Consider a byte:

0 1 0 0 0 1 0 1

1 byte = 8 bits Each bit has two possibilities: 0 or 1

28 = 256 Thus, a byte can have any one of 256 values

A Java byte can have values from -128 to 127 From -27 to 27-1

C/C++ has unsigned versions; Java does not

26

Primitive integer types

Type Bytes Minimum value Maximum value

byte 1 -27=-128 27-1=127

short 2 -215=-32,768

215-1=32,767

int 4 -231=-2,147,483,648 231-1=2,147,483,647

long 8 -263=-9,223,372,036,854,775,808

263-1=9,223,372,036,854,775,807

27

Increment and decrement operators ++

Increments a number variable by 1 --

Decrements a numeric variable by 1

Considerint i = 4; // define++i;System.out.println(i);System.out.print(++i);System.out.println(i++);System.out.println(i);

++ Increments a number variable by 1

-- Decrements a numeric variable by 1

Considerint i = 4;++i; // incrementSystem.out.println(i);System.out.print(++i);System.out.println(i++);System.out.println(i);

++ Increments a number variable by 1

-- Decrements a numeric variable by 1

Considerint i = 4;++i;System.out.println(i); // displaySystem.out.print(++i);System.out.println(i++);System.out.println(i);

++ Increments a number variable by 1

-- Decrements a numeric variable by 1

Considerint i = 4;++i;System.out.println(i);System.out.print(++i); // update then displaySystem.out.println(i++); System.out.println(i);

++ Increments a number variable by 1

-- Decrements a numeric variable by 1

Considerint i = 4;++i;System.out.println(i);System.out.print(++i); System.out.println(i++); // display then update System.out.println(i);

++ Increments a number variable by 1

-- Decrements a numeric variable by 1

Considerint i = 4;++i;System.out.println(i);System.out.print(++i);System.out.println(i++);System.out.println(i); // display

++ Increments a number variable by 1

-- Decrements a numeric variable by 1

Considerint i = 4;++i;System.out.println(i);System.out.print(++i);System.out.println(i++);System.out.println(i);

4i 5i 6i 7i

2828

Why C++ was named C++Why C++ was named C++

The increment operator adds one to The increment operator adds one to the integer valuethe integer value– Or makes it ‘one better’Or makes it ‘one better’

So when Bjarne Stroustrup was So when Bjarne Stroustrup was making the successor to C, he was making the successor to C, he was making a ‘one better’ languagemaking a ‘one better’ language

2929

Why you should get the Why you should get the extended warrantyextended warranty

30

Primitive character type All characters have a integer equivalent

‘0’ = 48 ‘1’ = 49 ‘A’ = 65 ‘a’ = 97

Thus, you can refer to ‘B’ as ‘A’+1

31

Primitive boolean type

The boolean type has only two values: true false

There are boolean-specific operators && is and || is or ! is not etc.

32

Variables must be declared before use The following code will not work:

x = 5; System.out.println (x);

Java requires you to declare x before you use it

33

Variable initialization Consider the following code:

int x;System.out.println(x);

What happens?

Error message: variable x might not have been initialized

Java also requires you to give x a value before you use it

34

Constants Consider the following:

final int x = 5;

The value of x can NEVER be changed! The value assigned to it is “final”

This is how Java defines constants

35

Expressions What is the value used to initialize expression

int expression = 4 + 2 * 5;

What value is displayed

System.out.println(5 / 2.0);

Java rules in a nutshell

Each operator has a precedence level and an associativity

Operators with higher precedence are done first

* and / have higher precedence than + and -

Associativity indicates how to handle ties

When floating-point is used the result is floating point

36

Question on expressions Does the following statement compute the average of double

variables a, b, and c? Why or why not?

double average = a + b + c / 3.0;

37

Java operators The following are the common operators for ints:

+ - / * % Division is integer division

6 / 2 yields 3 7 / 2 yields 3, not 3.5 Because everything is an int, the answer is an int

Modulus is % Returns the remainder 7 % 2 yields 1 6 % 2 yields 0

Floats and doubles use the same first four operators + - / * 7.0 / 2.0 yields 3.5 7.0 / 2 yields 3.5 7 / 2.0 yields 3.5 7 / 2 yields 3

38

Java operators Booleans have their own operators

&& is AND Only true when both operands are true true && true yields true false && true yields false

|| is OR True when either of the operands (or both) are true true || false yields true false || false yields false

! is NOT Changes the value !true yields false !false yields true

39

System.out.println Can print multiple things by using the + operator Let int i = 7; Example: System.out.println (“i = “ + i);

Prints i = 7

Can also have the statement on multiple linesSystem.out.println (

“hello world!”);

Can’t have the String on multiple linesSystem.out.println (

“hello world!”);

40

System.out.println System.out.println (“result: “ + 3/5);

What does it print? result: 0

System.out.println (“result: “ + 5 % 3); What does it print? result: 2

System.out.println (“result: “ + 3/5.0); What does it print? result: 0.6

System.out.println (“result: “ + 3+4.0); What does it print? result: 34.0

System.out.println (“result: “ + (3+4.0)); What does it print? result: 7.0

4141

More demotivatorsMore demotivators

4242

MethodsMethods

43

Functions In Java, functions are called methods

Think of mathematical functions: sin() cos() tan()

They take input (the angle) And produce output (the result)

In Java, they are called Math.sin(), Math.cos(), etc. Meaning, from the Math library, call the sin() method

import java.util.*;

public class MathFun {

public static void main(String[] args) {// set up the Scanner objectScanner stdin = new Scanner(System.in);

// have the user input the values for x and ySystem.out.print("Enter a decimal number: ");double x = stdin.nextDouble();System.out.print("Enter another decimal number:

");double y = stdin.nextDouble();

double squareRootX = Math.sqrt(x);

System.out.println ("Square root of " + x + " is "

+ squareRootX); }

}

From this week’s lab

45

System.out.println()

public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943.");}

Class System supplies objects that can print and read values

System variable out references the standard printing object Known as the standard output stream

Variable out provides access to printing methods print(): displays a value println(): displays a value and moves cursor to the next

line

46

Escape sequences Java provides escape sequences for printing special

characters \b backspace \n newline \t tab \r carriage return \\ backslash \" double quote \' single quote

47

Escape sequences What do these statements output?

System.out.println("Person\tHeight\tShoe size");System.out.println("=========================");System.out.println("Hannah\t5‘1\"\t7");System.out.println("Jenna\t5'10\"\t9");System.out.println("JJ\t6'1\"\t14");

Output

Person Height Shoe size=========================Hannah 5‘1" 7Jenna 5'10" 9JJ 6'1" 14

48

System.out

+ println(String s) : void+ print(String s) : void

+ ...

System.out : PrintStream

- destination =- ...

Variable System.out givesaccess to an output stream

of type PrintStream

The printing destination attributefor this PrintStream object is the

console window

The behaviors of a PrintStreamobject support a high-level view of

printing

49

Selection

System . out . print ( "string " )

Literal character string that isthe parameter to print().

Member out of System is an outputstream object automatically

associated with the console windowrunning the application

Class System is definedin the standard

package java.lang

The period indicates that we want to select anindividual class member of System

The period indicates that we want toselect an individual class member of out

Method member of out. The execution of member print()causes its parameter to be displayed to the output stream

The method we are calling

50

I/O streams System.out

Prints to standard output Equivalent to cout in C++, and print() in C

System.err Prints to standard error Equivalent to cerr in C++, and fprintf(stderr) in C

System.in Reads from standard input Equivalent to cin in C++, and scanf() in C

5151

Program ExamplesProgram Examples

52

Example program: temperature conversion// Purpose: Convert a Celsius temperature to Fahrenheit

public class CelsiusToFahrenheit {

// main(): application entry pointpublic static void main(String[] args) { // set Celsius temperature of interest int celsius = 28;

// convert to Fahrenheit equivalent int fahrenheit = 32 + ((9 * celsius) / 5);

// display result System.out.println("Celsius temperature"); System.out.println(" " + celsius); System.out.println("equals Fahrenheit temperature"); System.out.println(" " + fahrenheit);}

}

5353

Program demo…Program demo…

55

Computation Programmers frequently write small programs for computing

useful things

Example – body mass index (BMI) Measure of fitness

Ratio of person’s weight to the square of the person’s height Weight in is kilograms, height is in meters

Person of interest is 4.5 feet and weighs 75.5 pounds

Metric conversions Kilograms per pound 0.454 Meters per foot 0.3046

56

Program outline for BMI.java// Purpose: Compute BMI for given weight and height public class BMI { // main(): application entry point public static void main(String[] args) { // define constants // set up person's characteristics // convert to metric equivalents // perform bmi calculation // display result } }

57

// define constants final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046;

// define constants final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046;

// define constants final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046;

BMI.java: define constants

0.454KILOGRAMS_PER_POUND

0.3046METERS_PER_FOOT

58

BMI.java: personal characteristics

75.5weightInPounds

// set up person's characteristics double weightInPounds = 75.5; // our person’s weight double heightInFeet = 4.5; // our person’s height

// set up person's characteristics double weightInPounds = 75.5; // our person’s weight double heightInFeet = 4.5; // our person’s height

// set up person's characteristics double weightInPounds = 75.5; // our person’s weight double heightInFeet = 4.5; // our person’s height

4.5heightInFeet

59

BMI.java: convert to metric equivalents

34.2770metricWeight

// convert to metric equivalents

double metricWeight = weightInPounds * KILOGRAMS_PER_POUND;

double metricHeight = heightInFeet * METERS_PER_FOOT;

// convert to metric equivalents

double metricWeight = weightInPounds * KILOGRAMS_PER_POUND;

double metricHeight = heightInFeet * METERS_PER_FOOT;

// convert to metric equivalents

double metricWeight = weightInPounds * KILOGRAMS_PER_POUND;

double metricHeight = heightInFeet * METERS_PER_FOOT; 1.3706metricHeight

60

BMI.java: perform BMI calculation

// perform bmi calculation double bmi = metricWeight / (metricHeight *

metricHeight);

18.2439bmi

61

// display result System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi));

BMI.java: display result

// display result System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi));

Operator evaluation depend upon its operands

Math.round(bmi) is 18

18.2439bmi

public static void main(String[] args) { // define constants final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; // set up person's characteristics double weightInPounds = 75.5; // our person’s weight double heightInFeet = 4.5; // our person’s height // convert to metric equivalents double metricWeight = weightInPounds *

KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // perform bmi calculation double bmi = metricWeight / (metricHeight * metricHeight); // display result System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); }

6363

Program demo…Program demo…

6464

Beware!!!Beware!!!

65

Common program elements Type

Set of values along with operators that can manipulate and create values from the set

Primitive types support numeric, character, logical values double and float

Values with decimals byte, short, int, long

Integers char

Characters (considered numeric) boolean

Logical values

Basic operators + addition - subtraction * multiplication / division

66

Common program elements Constant

Symbolic name for memory location whose value does not change KILOGRAMS_PER_POUND

Variable Symbolic name for memory location whose value can

change weightInPounds

67

Interactive programs Programs that interact with their users through statements

performing input and output

Temperature conversion Not interactive – Celsius temperature is fixed

BMI.java Not interactive – weight and height are fixed

68

Support for interactive console programs Variable System.in

Associated with the standard input stream – the keyboard

Class Scanner Makes obtaining input from the keyboard easy

Scanner stdin = new Scanner (System.in);

+ nextDouble() : double+ ...

stdin : Scanner

- source =- ...

Variable stdin gives Scanneraccess to an input stream

Input source attribute for thisScanner is the keyboard

Behaviors of a Scanner supporthigh-level view of inputting text

69

How to make Java work with the Scanner class In Java 1.5, do a:

import java.util.*;

To create a new Scanner:Scanner stdin = new Scanner (System.in);

Do NOT use the following (it won’t work):Scanner stdin = Scanner.create (System.in);

This is the big difference between the textbook versions!!!

70

Program outline

import java.util.*;

// Purpose: Compute BMI for user-specified// weight and height

public class BMICalculator {

// main(): application entry pointpublic static void main(String[] args) {

// defining constants// displaying legend// set up input stream// get person's characteristics// convert to metric equivalents// perform bmi calculation// display result

}}

Interactive program for BMI Program outline

import java.util.*;

// Purpose: Compute BMI for user-specified// weight and height

public class BMICalculator {

// main(): application entry pointpublic static void main(String[] args) {

// defining constants// displaying legend// set up input stream// get person's characteristics// convert to metric equivalents// perform bmi calculation// display result

}}

public static void main(String[] args) { // define constants //...

// displaying legend System.out.println ("BMI Calculator\n");

// set up input stream Scanner stdin = new Scanner (System.in);

// get person's characteristics System.out.print("Enter weight (lbs): "); double weight = stdin.nextDouble();

System.out.print("Enter height (feet): "); double height = stdin.nextDouble();

// convert to metric equivalents double metricWeight = weight * KILOGRAMS_PER_POUND; double metricHeight = height * METERS_PER_FOOT;

// perform bmi calculation double bmi = metricWeight / (metricHeight * metricHeight);

// display result //...}

import java.util.*;class BMICalculator {

public static void main(String[] args) { // define constants final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046;

// displaying legend System.out.println ("BMI Calculator\n");

// set up input stream Scanner stdin = new Scanner (System.in);

// get person's characteristics System.out.print("Enter weight (lbs): "); double weight = stdin.nextDouble();

System.out.print("Enter height (feet): "); double height = stdin.nextDouble(); // convert to metric equivalents double metricWeight = weight * KILOGRAMS_PER_POUND; double metricHeight = height * METERS_PER_FOOT; // perform bmi calculation double bmi = metricWeight / (metricHeight * metricHeight); // display result System.out.println("A person with"); System.out.println(" weight " + weight + " lbs"); System.out.println(" height " + height + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); }}

7373

Program demo…Program demo…

7474

An optical illusionAn optical illusion

75

Scanner APIpublic Scanner(InputStream in) // Scanner(): convenience constructor for an

// InputStream

public Scanner(File s) // Scanner(): convenience constructor for a filename

public int nextInt() // nextInt(): next input value as an int

public short nextShort() // nextShort(): next input value as a short

public long nextLong() // nextLong(): next input value as a long

public double nextDouble() // nextDouble(): next next input value as a double

public float nextFloat() // nextFloat(): next next input value as a float

public String next() // next(): get next whitespace-free string

public String nextLine() // nextLine(): return contents of input line buffer

public boolean hasNext() // hasNext(): is there a value to next

76

Casting Consider the following code

double d = 3.6;int x = Math.round(d);

Java complains (about loss of precision). Why?

Math.round() returns a long, not an int So this is forcing a long value into an int variable

How to fix thisdouble d = 3.6;int x = (int) Math.round(d);

You are telling Java that it is okay to do this This is called “casting” The type name is in parenthesis

77

More casting examples Consider

double d = 3.6;int x = (int) d;

At this point, x holds 3 (not 4!) This truncates the value!

Considerint x = 300;byte b = (byte) x;System.out.println (b);

What gets printed? Recall that a byte can hold values -128 to 127 44! This is the “loss of precision”

78

About the assignment statement Assign the value 5 to the variable x

int x; x = 5; 5 = x; NOT VALID!

This is not a mathematical equals It’s a Java assignment

The variable you want to copy the value to MUST be on the left

The value you want to copy MUST be on the right

Assignment copies the value on the right to the variable on the left

7979

Today’s demotivatorsToday’s demotivators

top related