Differences between Java and C
CS-2303, C-Term 2010 1
Differences between Java and C
CS-2303, System Programming Concepts
(Slides include materials from The C Programming Language, 2nd edition, by Kernighan and Ritchie and from C: How to Program, 5th and 6th editions, by Deitel and Deitel)
Differences between Java and C
CS-2303, C-Term 2010 2
Java and C
• Java is derived from C
• Many of its syntactic characteristics are similar to C
• However, there are some huge differences
Differences between Java and C
CS-2303, C-Term 2010 3
Expressions
• Arithmetic operators are the same:–+, –, *, /, %, ++, ––
• Numerical type conversion is mostly the same– Java spells out divide by zero, NaN (not a
number, etc.)– C & C++ are machine dependent
• Check the textbooks for details
Differences between Java and C
CS-2303, C-Term 2010 4
Relational Operators
• Relational operators work the same way but return different results:–
>, >=, <, <=, ==, !=
• In Java, they return values FALSE and TRUE• In C/C++, they return values 0 and 1• In C/C++,
– a value of zero means false
– any value that is not zero means true
– E.g., 1, 5, -1000000, 3.14159, 6.626068 × 10-34
Very important!
Differences between Java and C
CS-2303, C-Term 2010 5
Conditional and Bitwise Operators
• Conditional execution operators are same in Java and C/C++:–
||, &&, ? followed by :
• Bitwise operators are same in Java and C/C++:–|, &, ^ for bit-by-bit operations with a word
• Shift operators differ a little bit<< (left shift) is the same
>> (right shift) is machine dependent in C/C++• I.e., whether to fill from left with zeros or sign bits
Differences between Java and C
CS-2303, C-Term 2010 6
Assignment and Unary Operators
• Assignment operators work the same:–=, +=, -=, *=, /=, &=, |=, ^=
• The following unary operators are available C/C++ but not in Java
~ invert the bits of a word
* pointer dereference
& pointer creation
(type) cast (i.e., forceable type conversion)
sizeof # of bytes in operand or data type
-> pointer dereference with field selection
Differences between Java and C
CS-2303, C-Term 2010 7
Summary about Expressions and Operators
• Pretty much the same in C/C++ and Java
• Be sure to check details in textbook
• Be sure to check operator precedence• Table 2-1 in K&R
• Distributed throughout text in D&D
Differences between Java and C
CS-2303, C-Term 2010 8
Statements
• Statements in C/C++:–• Labeled statement
• Expression statement
• Compound statement
• Selection statement
• Iteration statement
• Jump statement
Differences between Java and C
CS-2303, C-Term 2010 9
Statements
• Statements in C/C++:–• Labeled statement
• Expression statement
• Compound statement
• Selection statement
• Iteration statement
• Jump statement
E.g., cases of a switchstatement
Similar to Java
Differences between Java and C
CS-2303, C-Term 2010 10
Statements
• Statements in C/C++:–• Labeled statement
• Expression statement
• Compound statement
• Selection statement
• Iteration statement
• Jump statement
Any expression followed by ';'
Much like to Java
Differences between Java and C
CS-2303, C-Term 2010 11
Statements
• Statements in C/C++:–• Labeled statement
• Expression statement
• Compound statement
• Selection statement
• Iteration statement
• Jump statement
Sequence of statementsenclosed in "{}"
Called a “block” in Java
Differences between Java and C
CS-2303, C-Term 2010 12
Statements
• Statements in C/C++:–• Labeled statement
• Expression statement
• Compound statement
• Selection statement
• Iteration statement
• Jump statement
switch (expr)if (expr)statementif (expr) statementelse statement
Same as in Java
Differences between Java and C
CS-2303, C-Term 2010 13
Statements
• Statements in C/C++:–• Labeled statement
• Expression statement
• Compound statement
• Selection statement
• Iteration statement
• Jump statement
while (expr) statementdo statement while (expr);for (exp1; exp2, exp3) statement
Very similar to Java
Differences between Java and C
CS-2303, C-Term 2010 14
Statements
• Statements in C/C++:–• Labeled statement
• Expression statement
• Compound statement
• Selection statement
• Iteration statement
• Jump statementbreak;continue;return exprVery similar to Java
gotoNot present in JavaNot allowed in this
course
Differences between Java and C
CS-2303, C-Term 2010 15
Summary about Statements
• Pretty much the same in C/C++ and Java
• Be sure to check details in textbooks
Differences between Java and C
CS-2303, C-Term 2010 16
Formatted Input & Output
• Very different between C and Java
• Very different between C and C++
• Handled by library functions in C• printf()• scanf()• getc()• putc()
• Many others!
Differences between Java and C
CS-2303, C-Term 2010 17
printf() – Print formatted data
printf("string containing '%' specifiers",expr1, expr2, expr3, …);
• Copy the string, character-by-character, to the output.
• When the ith '%' is encountered, treat it as a conversion specifier for converting the value of expri
• Copy the converted value to the output per instructions encoded in the conversion specifier
• Return number of characters printed
Differences between Java and C
CS-2303, C-Term 2010 18
printf() conversion specifiers
• See K&R, p 154 & 244 or D&D Chapter 9• %d or %i
• Treat expression as a decimal number (with sign)• %u
• Treat expression as unsigned decimal number• %f
• Treat expression as double precision floating point number; print without exponent
• %e or %E• Treat expression as double precision floating point number; print with
exponent (base 10) — scientific notation• %c
• Treat value of expression as the code for a single character• %s
• Treat expression as a pointer to a string
• … Later in this course
Differences between Java and C
CS-2303, C-Term 2010 19
printf() conversion specifiers (continued)
• Conversion specifiers may optionally contain
• Right or left alignment in the field• Minimum field width (padded on right or left)• Precision – i.e.,
– Maximum length of string– Number of decimal places of floating point value
• Examples%6d – print signed decimal number in 6-char field%8.4f – print floating point number with four places
after decimal point, field width of 8 characters
Differences between Java and C
CS-2303, C-Term 2010 20
scanf() – Scan formatted data
scanf("string containing '%' specifiers",&var1, &var2, &var3, …);
• Scan the input, matching the string character by character.
• When the ith '%' is encountered, treat as a conversion specifier for converting next sequence of characters and storing result in vari
• Copy the converted value to the output per instructions encoded in the conversion specifier
• Stop if input does not match string or conversion not successful
• Return number of successful conversions.
Differences between Java and C
CS-2303, C-Term 2010 21
scanf() – Typical Usage
int j;double x;scanf("%d%f", &j, &x);
• Scan the input, skipping blanks and tabs• Try to match a signed integer; if successful, store
result in j• Continue scanning, skipping blanks and tabs• Try to match a floating point number. If successful,
store in x• Return number of items stored.
Differences between Java and C
CS-2303, C-Term 2010 22
scanf() Details
• K&R Table B-2 (p. 246), D&D Chapter 9
printf() and scanf() are both needed for Lab #1Programming Assignment #1
Differences between Java and C
CS-2303, C-Term 2010 23
Summary
• Differences and similarities between Java and C
• Expressions
• Statements
• There are lots of other differences• Will be covered during the course
Differences between Java and C
CS-2303, C-Term 2010 24
Questions?
Top Related