Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Java basics Chapter 2 (part 1 of 2) Spring 2007 CS 101 Aaron Bloomfield.

Similar presentations


Presentation on theme: "1 Java basics Chapter 2 (part 1 of 2) Spring 2007 CS 101 Aaron Bloomfield."— Presentation transcript:

1 1 Java basics Chapter 2 (part 1 of 2) Spring 2007 CS 101 Aaron Bloomfield

2 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 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 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 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."); } }

6 6 A whitespacing aside: IOCCC The International Obfuscated C Code Contest The International Obfuscated C Code Contest –Online at http://www.ioccc.org C has very terse syntax C has very terse syntax –So the contest tries to make it terser! One common method is by modifying the whitespace One common method is by modifying the whitespace

7 7 A whitespacing aside: IOCCC #define _ -F<00||--F-OO--; int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO() { _-_-_-_ _-_-_-_ _-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_ _-_-_-_ _-_-_-_} #define X #define XX #define XXX #define XXXX #define XXXXX #define XXXXXX #define XXXXXXX #define orfa for #define XXXXXXXXX #define archa char #define ainma main #define etcharga getchar #define utcharpa putchar #include #define Q r=R[*p++-'0'];while( #define B ;break;case char*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 aP4HC%T\ Qs\\q,,^>m,2 aP4HC%SD12N1\nJNQm>s\\..q^aHC%NHb%GN1!D32P3%RN1UP1D12JPQUaP1H\ R%PN4\nQ aP2Q,2 aP4Hb%OD12D12N2!N3\nJVP3Q,, 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 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=0 B'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 X X X X X X X X X X X X X X X X X X X X X X X X XX X X XX X X XX X X XX X X XXX X XXXXXXXXX X XXX X X XXX X XXXX XXXX X XXX X X XXXX X XX ainma(){ archa XX X XXXX X X XXXX X oink[9],*igpa, X XXXX X X XXXXXX atinla=etcharga(),iocccwa XXXXXX X X XXXX,apca='A',owla='a',umna=26 XXXX X X XXX ; orfa(; (atinla+1)&&(!((( XXX X X XX atinla-apca)*(apca+umna-atinla) XX X X X >=0)+((atinla-owla)*(owla+umna- X X X X >=0)+((atinla-owla)*(owla+umna- X X X atinla)>=0))); utcharpa(atinla), X X atinla)>=0))); utcharpa(atinla), X X X atinla=etcharga()); orfa(; atinla+1; X X X X atinla=etcharga()); orfa(; atinla+1; X X X X ){ orfa( igpa=oink,iocccwa=( X X X X ){ orfa( igpa=oink,iocccwa=( X X X X (atinla- XXX apca)*( XXX apca+umna- X X X X (atinla- XXX apca)*( XXX apca+umna- X X X atinla)>=0) XXX XXX ; (((( X X atinla)>=0) XXX XXX ; (((( X X atinla-apca XXXXX XXXXXXX XXXXX )*(apca+ X X atinla-apca XXXXX XXXXXXX XXXXX )*(apca+ X X umna-atinla XXXXXX )>=0) XXXXXX +((atinla- X X umna-atinla XXXXXX )>=0) XXXXXX +((atinla- X X owla)*(owla+ XXXX umna- XXXX atinla)>=0)) X X owla)*(owla+ XXXX umna- XXXX atinla)>=0)) X X &&"-Pig-" XX "Lat-in" XX "COb-fus" X X &&"-Pig-" XX "Lat-in" XX "COb-fus" X X "ca-tion!!"[ X (((atinla- X apca)*(apca+ X X "ca-tion!!"[ X (((atinla- X apca)*(apca+ X X umna-atinla) X >=0)?atinla- X apca+owla: X X umna-atinla) X >=0)?atinla- X apca+owla: X X atinla)-owla X ]-'-')||((igpa== X oink)&&!(*( X X igpa++)='w') X )||! X (*( X igpa X ++)=owla); * X X (igpa++)=(( X ( XXX XXX X atinla-apca X X )*(apca+ X umna XXX - XXX X atinla)>=0) X X ?atinla- X apca XXX + XXX owla X :atinla), X X atinla= X X X X etcharga()) X X atinla= X X X X etcharga()) X X ; orfa( X atinla=iocccwa?(( X (atinla- X X ; orfa( X atinla=iocccwa?(( X (atinla- X X owla)*(owla+ X umna-atinla)>=0 X )?atinla- X X owla)*(owla+ X umna-atinla)>=0 X )?atinla- X X owla+apca: X atinla): X atinla; ((( X X owla+apca: X atinla): X atinla; ((( X X atinla-apca)* X (apca+umna- X atinla)>=0)+( X X atinla-apca)* X (apca+umna- X atinla)>=0)+( X X (atinla-owla)* X (owla+ X umna-atinla)>= X X (atinla-owla)* X (owla+ X umna-atinla)>= X X 0)); utcharpa( XX XX atinla),atinla X X 0)); utcharpa( XX XX atinla),atinla X X =etcharga()); XXXXXXX orfa(*igpa=0, X X =etcharga()); XXXXXXX orfa(*igpa=0, X X igpa=oink; * igpa; utcharpa( X X igpa=oink; * igpa; utcharpa( X X *(igpa++))); orfa(; (atinla+1)&&(!((( X X *(igpa++))); orfa(; (atinla+1)&&(!((( X X atinla-apca )*(apca+ X X atinla-apca )*(apca+ X X umna- XXXXX XXXXX atinla)>=0 X X umna- XXXXX XXXXX atinla)>=0 X X )+(( XXXXX atinla- X X )+(( XXXXX atinla- X XX owla)*( owla+umna- XX XX owla)*( owla+umna- XX XX atinla)>=0))); utcharpa XX XX atinla)>=0))); utcharpa XX XX (atinla),atinla= XX XX (atinla),atinla= XX XX etcharga()); } XX XX etcharga()); } XX XXXX } XXXX XXXX } XXXX XXXXXXXXX XXXXXXXXX a(X){/*/X=-a(X){/*/X=- -1;F;X=--1;F;X=- -1;F;}/*/-1;F;}/*/ 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(*", "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(","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);","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",";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=- -1;F;X=--1;F;X=- -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(* 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(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);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;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=- -1;F;X=--1;F;X=- -1;F;}/*/-1;F;}/*/

8 8 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!

9 9 // 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

10 10 Capitalization  Case matters!  public ≠ Public ≠ PUBLIC This is different than FORTRAN and BASIC This is the same as C/C++  You can use Public as a identifier Not recommended, though!

11 11 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

12 12 A bit of humor: 1989 Computer Advertisement Guess the price!

13 13 Variables

14 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; Visualization: This defines an integer variable with value 5  The variable is x  The type is int 5 x

15 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.3 d

16 16  Assignment operator = Allows the memory location for a variable to be updated  Consider int j = 11; j = 1985;  Assignment operator = Allows the variable to be updated  Consider int j = 11; j = 1985; Primitive variable assignment

17 17  Consider int a = 1; int aSquared = a * a; a = 5; aSquared = a * a;  Consider int i = 0; i = i + 1;  Consider int asaRating; asaRating = 400; Primitive variable assignment int a = 1; int aSquared = a * a; a = 5; aSquared = a * a; int i = 0; i = i + 1; int asaRating; asaRating = 400;

18 18 Primitive variable assignment  Consider double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX;  Consider double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX;  Consider double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX;  Consider double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX;  Consider double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX;  Consider double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX;

19 19 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

20 public class SolvingABC { public static void main(String[] args) { // variable definitions and initializations int a = 3; int b = 12; int c = 6; int d = 1; // calculate results double result1 = d * a; double result2 = c + 2 * a; double result3 = d - b / c; double result4 = c * b % c; double result5 = b / 2; // display the results System.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

21 21 Variable initialization  Note that the following int x; x = 5;  is (mostly) the same as the following: int x = 5;

22 22 You can only declare variables once  The following code will not work: int x = 5; int x = 6;  Java can have only one variable named x So you can’t declare multiple variables with the same name (we’ll see ways around this later in the semester)

23 23 Today’s demotivators

24 24 End of lecture on 22 January 2007

25 25 Types

26 26 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”, which we will see later  We’ll only be using half of the types in this course: int, double, boolean, and char

27 27 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!

28 28 Primitive integer types  Consider a byte: 01000101  1 byte = 8 bits  Each bit has two possibilities: 0 or 1  2 8 = 256  Thus, a byte can have any one of 256 values  A Java byte can have values from -128 to 127 From -2 7 to 2 7 -1  C/C++ has unsigned versions; Java does not

29 29 Primitive integer types TypeBytesMinimum valueMaximum value byte1-2 7 =-1282 7 -1=127 short2-2 15 = -32,768 2 15 -1= 32,767 int4-2 31 =-2,147,483,6482 31 -1=2,147,483,647 long8-2 63 =-9,223,372,036, 854,775,808 2 63 -1=9,223,372,036, 854,775,807

30 30 Increment and decrement operators  ++ Increments a number variable by 1  -- Decrements a numeric variable by 1  Consider int 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  Consider int i = 4; ++i; // increment 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  Consider int i = 4; ++i; System.out.println(i); // display System.out.print(++i); System.out.println(i++); System.out.println(i);  ++ Increments a number variable by 1  -- Decrements a numeric variable by 1  Consider int i = 4; ++i; System.out.println(i); System.out.print(++i); // update then display System.out.println(i++); System.out.println(i);  ++ Increments a number variable by 1  -- Decrements a numeric variable by 1  Consider int 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  Consider int 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  Consider int i = 4; ++i; System.out.println(i); System.out.print(++i); System.out.println(i++); System.out.println(i);

31 31 Why C++ was named C++ The increment operator adds one to the integer value The increment operator adds one to the integer value –Or makes it ‘one better’ So when Bjarne Stroustrup was making the successor to C, he was making a ‘one better’ language So when Bjarne Stroustrup was making the successor to C, he was making a ‘one better’ language

32 32 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

33 33 Primitive boolean type  The boolean type has only two values: true false  There are boolean-specific operators && is and || is or ! is not etc.  We’ll see those operators in a few slides

34 34 Carved egg shells (done via laser)

35 35 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

36 36 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

37 37 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  Constants have a specific naming scheme MILES_PER_KILOMETER All caps, with underscores for spaces

38 38 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

39 39 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;

40 40 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

41 41 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

42 42 New York Drivers

43 43 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 lines System.out.println ( “hello world!” ) ;  But can’t have the String on multiple lines System.out.println ( “hello world!” );

44 44 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

45 45 End of lecture on 24 January 2007

46 46 Methods

47 47 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

48 import java.util.*; public class MathFun { public static void main(String[] args) { // set up the Scanner object Scanner stdin = new Scanner(System.in); // have the user input the values for x and y System.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

49 49 Scanner usage

50 50 Interactive programs  Programs that interact with their users through statements performing input and output  Temperature conversion (coming up shortly) Not interactive – Celsius temperature is fixed  BMI.java (coming up somewhat less shortly) Not interactive – weight and height are fixed

51 51 Reading in a value from the keyboard  We will see this in more detail later in this slide set  For now (and for lab 2), this is what you need to know  To read in values from the keyboard, you first have to create a Scanner object Don’t worry about what an object is, what a Scanner is, or about creation of these things We’ll get to them later To do this, use the following code: Scanner stdin = new Scanner (System.in); NOT the following code: Scanner stdin = Scanner.create (System.in);

52 52 Reading in more values from the keyboard  You should have this only once in your program.  From then on, when you want to read in a value into a variable, use the following: int x = stdin.nextInt(); double d = stdin.nextDouble();  Or x = stdin.nextInt(); d = stdin.nextDouble();

53 53 Scanner usage example import java.util.*; public class ScannerUsage { public static void main (String args[]) { Scanner stdin = new Scanner (System.in); System.out.println ("Enter first value"); int x = stdin.nextInt(); int y; System.out.println ("Enter second value"); y = stdin.nextInt(); int z = x + y; System.out.println ("The sum of " + x + " and " + y + " is " + z); }

54 54 Program demo… ScannerUsage.java ScannerUsage.java Note that all this code is available on the website! Note that all this code is available on the website!

55 55 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);

56 56 Today’s demotivators

57 57 Program Examples

58 58 Example program: temperature conversion // Purpose: Convert a Celsius temperature to Fahrenheit public class CelsiusToFahrenheit { // main(): application entry point public 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); }

59 59 Program demo… CelsiusToFahrenheit.java CelsiusToFahrenheit.java

60 60 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

61 61 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 }

62 62 // 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

63 63 BMI.java: personal characteristics // 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

64 64 BMI.java: convert to metric equivalents // 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;

65 65 BMI.java: perform BMI calculation // perform bmi calculation double bmi = metricWeight / (metricHeight * metricHeight);

66 66 // 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

67 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)); }

68 68 Program demo… BMI.java BMI.java

69 69 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

70 70 Removing your car in snow… SnowCar.wmv SnowCar.wmv

71 71 BMI Calculator

72 72  Program outline import java.util.*; // Purpose: Compute BMI for user-specified // weight and height public class BMICalculator { // main(): application entry point public 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 point public 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 }

73 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 //... }

74 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)); }

75 75 Program demo… BMICalculator.java BMICalculator.java

76 76 Scanner API public 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

77 77 End of lecture on 26 January 2007

78 78 Casting

79 79 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 this double 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

80 80 More casting examples  Consider double d = 3.6; int x = (int) d;  At this point, x holds 3 (not 4!) This truncates the value!  Consider int 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”

81 81 More on println()

82 82 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

83 83 print() vs. println()  What do these statements output? System.out.print (“foo”); System.out.println (“bar”); System.out.println (); System.out.println (“foo”); System.out.println (“bar”);  Output foobar foo bar

84 84 Escape sequences  Java provides escape sequences for printing special characters \bbackspace \nnewline \ttab \rcarriage return \\backslash \"double quote \'single quote

85 85 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" 7 Jenna 5'10" 9 JJ 6'1" 14

86 86 What we wish computers could do


Download ppt "1 Java basics Chapter 2 (part 1 of 2) Spring 2007 CS 101 Aaron Bloomfield."

Similar presentations


Ads by Google