You are on page 1of 24

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)

CS-2303, C-Term 2010 Differences between Java 1


and C
Java and C

Java is derived from C


Many of its syntactic characteristics are
similar to C

However, there are some huge differences

CS-2303, C-Term 2010 Differences between Java 2


and C
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


CS-2303, C-Term 2010 Differences between Java 3
and C
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
CS-2303, C-Term 2010 Differences between Java 4
and C
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
CS-2303, C-Term 2010 Differences between Java 5
and C
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
CS-2303, C-Term 2010 Differences between Java 6
and C
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

CS-2303, C-Term 2010 Differences between Java 7


and C
Statements

Statements in C/C++:
Labeled statement
Expression statement
Compound statement
Selection statement
Iteration statement
Jump statement

CS-2303, C-Term 2010 Differences between Java 8


and C
Statements

Statements in C/C++:
Labeled statement E.g., cases of a switch
Expression statement statement
Similar to Java
Compound statement
Selection statement
Iteration statement
Jump statement

CS-2303, C-Term 2010 Differences between Java 9


and C
Statements

Statements in C/C++:
Labeled statement
Expression statement Any expression
followed by ';'
Compound statement
Much like to Java
Selection statement
Iteration statement
Jump statement

CS-2303, C-Term 2010 Differences between Java 10


and C
Statements

Statements in C/C++:
Labeled statement
Expression statement
Compound statement Sequence of statements
enclosed in "{}"
Selection statement
Called a block in Java
Iteration statement
Jump statement

CS-2303, C-Term 2010 Differences between Java 11


and C
Statements

Statements in C/C++:
Labeled statement
Expression statement
Compound statement switch (expr)
Selection statement if (expr)statement
if (expr) statement
Iteration statement
else statement
Jump statement
Same as in Java

CS-2303, C-Term 2010 Differences between Java 12


and C
Statements

Statements in C/C++:
Labeled statement
Expression statement
Compound statement
Selection statement while (expr) statement
Iteration statement do statement while (expr
Jump statement for (exp1; exp2, exp3)
statement
Very similar to Java

CS-2303, C-Term 2010 Differences between Java 13


and C
Statements

Statements in C/C++:
Labeled statement
Expression statement
Compound statement
Selection statement
Iteration statement goto
break;
Jump statement continue;
Not present in Java
return
Not expr
allowed in this
course
Very similar to Java

CS-2303, C-Term 2010 Differences between Java 14


and C
Summary about Statements

Pretty much the same in C/C++ and Java

Be sure to check details in textbooks

CS-2303, C-Term 2010 Differences between Java 15


and C
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!

CS-2303, C-Term 2010 Differences between Java 16


and C
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
CS-2303, C-Term 2010 Differences between Java 17
and C
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
CS-2303, C-Term 2010 Differences between Java 18
and C course
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
CS-2303, C-Term 2010 Differences between Java 19
and C
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.
CS-2303, C-Term 2010 Differences between Java 20
and C
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.
CS-2303, C-Term 2010 Differences between Java 21
and C
scanf() Details

K&R Table B-2 (p. 246), D&D Chapter 9

printf() and scanf() are both needed for


Lab #1
Programming Assignment #1

CS-2303, C-Term 2010 Differences between Java 22


and C
Summary

Differences and similarities between Java


and C
Expressions
Statements
There are lots of other differences
Will be covered during the course

CS-2303, C-Term 2010 Differences between Java 23


and C
Questions?

CS-2303, C-Term 2010 Differences between Java 24


and C

You might also like