Đề tài Điểm giống và khác nhau giữa C++, C# và Java - Lưu Văn Diệp
Java sử dụng các từ khóa “static final”
để tạo nên các biến hằng; trong Java
một biến “static final” là một biến lớp
thay vì là một biến đối tượng, và trình
biên dịch sẽ ngăn ngừa bất kỳ các đối
tượng khác thay đổi giá trị của biến.
n = 100;
/* Biến maxn là biến toàn cục, có thể sử dụng bất
kỳ nơi nào trong chương trình */
int main()
{
cout << maxn;//xuất ra màn hình 100
int maxn = 200;
//biến maxn này là biến cục bộ
cout << maxn;//xuất ra màn hình 200
cout << ::maxn;//xuất ra màn hình 100
//sử dụng toán tử ::, trình biên dịch hiểu đó //là
biến toàn cục
return 1;
}
Tương tự C++
Java sử dụng các từ khóa “static final”
để tạo nên các biến hằng; trong Java
một biến “static final” là một biến lớp
thay vì là một biến đối tượng, và trình
biên dịch sẽ ngăn ngừa bất kỳ các đối
tượng khác thay đổi giá trị của biến.
2.Hằng
#define
//vd:
#define maxn 100
/* Nơi nào xuất hiện maxn thì trình biên dịch tự
động hiểu đó là 100 */
#define get_max a>b?a:b
int main()
{
cout<<maxn;//xuất ra màn hình 100
int maxn = 200;//báo lỗi
// vì không thể gán giá trị 200 cho 100
int a = 2 , b = 3;
int max = get_max;
cout << max;//xuất ra màn hình 3
return 0;
}
readonly <kiểu dữ
liệu> =
;
Kiểu dữ liệu
1.Kiểu giá
trị
2.Kiểu tham
chiếu
Từ
khóa
Mô tả Kích
cỡ
Tối
thiểu
Tối đa
bool Kiểu
logic
true /
false
int Số
nguyê
n
32 bit -231 231-1
long Số
nguyê
n dài
64 bit -263 263-1
unsigned
float Kiểu
thực
32 bit
double 64 bit
char Kiểu
ký tự
16 bit Unicode
0
Unicode
216-1
void
bool
byte, sbyte
char
short, ushort, int, uint,
long, ulong
float, double
decimal
datetime
object
string
Tương tự C++
Kiểu dữ liệu Mô tả
Mảng(array) Tập hợp các dữ
liệu cùng kiểu
Lớp (class) Là sự cài đặt mô
tả về 1 đối tượng
trong bài toán
Giao
diện(interface)
Là một lớp
thuần trừu tượng
được tạo ra cho
phép cài đặt đa
thừa kế trong
Java.
Kiểm tra
kiểu, đổi
kiểu
int i;//kiểu số nguyên
float f = 3.14;//kiểu số thực
i = (int) f;//chuyển kiểu tường minh
//hoặc
i = int (f);
Tương tự C++
Tương tự C++
Nếu trong một phép toán có sự tham
gia của nhiều toán hạng có kiểu khác
nhau thì java sẽ chuyển kiểu tự động
cho các toán hạng một cách tự động
theo quy tắc sau:
byte short int long float
double
Chuyển đổi kiểu tường minh
Để chuyển đổi kiểu một cách tường
minh ta sử dụng cú pháp sau:
(type) biểu_thức;
khi gặp câu lệnh này java sẽ tính toán
giá trị của biểu thức sau đó chuyển đổi
kiểu giá trị của biểu thức thành kiểu
type.
Ví dụ:
(int) 2.5 * 2 = 4 (int) 2.5 * 2.5 = 5
(int)(2.5 * 2.5) = 6
1+(float)5/2=1+5/(float)2=
1+(float)5/(float)2=3.5
Chú ý:
1. Phép toán chuyển kiểu là phép toán
có độ ưu tiên cao, nên
(int)3.5*2≠(int)(3.4*2)
2. Cần chú ý khi chuyển một biểu thức
kiểu dữ liệu có miền giá trị lớn sang
một kiểu có miền giá trị nhỏ hơn.
Trong trường hợp này có thể bạn sẽ bị
mất thông tin.
Nhập / Xuất #include
#include
using namespace std;
int main()
{
int x;
cin >> x; //nhập giá trị của x
cout << x <<endl; // xuất giá trị của x
//ra màn hình sau đó con trỏ xuống dò
namspace System;
class program
{
static void Main()
{
int x = 4;
Console.WriteLine(“{
0}”,x);
//xuất ra //màn hình giá
class test
{
public static void main(String[] args)
{
int i = 3;
System.out.println(i); //xuất ra //màn
hình giá 3
}
}
scanf(“%d”,&x);
printf(“%d”,x);
return 0;
}
4
Console.Read();
/*dừng chương trình
đến khi nhấn 1 phím
bất kỳ để thoát*/
}
}
Không gian
tên
Mỗi ngôn ngữ lập trình có một tập các từ khoá, người lập trình phải sử dụng từ khoá theo đúng nghĩa mà người thiết
kế ngôn ngữ đã đề ra, ta không thể định nghĩa lại nghĩa của các từ khoá, cũng như sử dụng nó để đặt tên biến, hàm..
Java:
Abstract Sử dụng để khai báo lớp, phương thức trừu tượng
boolean Kiểu dữ liệu logic
Break Được sử dụng để kết thúc vòng lặp hoặc cấu trúc switch
Byte Kiểu dữ liệu số nguyên
case Được sử dụng trong lệnh switch
cast Chưa được sử dụng
catch Được sử dụng trong xử lý ngoại lệ
Char Kiểu dữ liệu ký tự
Class Dùng để khai báo lớp
Const Hằng
Continue Được dùng trong vòng lặp để bắt đầu một vòng lặp mới
default Dùng trong switch
do Lệnh điều kiện
Double Kiểu dữ liệu số thực
else Khả năng lựa chon thứ 2 trong câu lệnh if
extends Chỉ rằng một lớp được kế thừa từ một lớp khác
false Giá trị logic
final Dùng đẻ khai báo hằng số, phương thức không thể ghi đè, hoặc lớp không thể kế thừa
finally phần cuối của khối xử lý ngoại lệ
float kiểu số thực
for Câu lệnh lặp
goto Lệnh nhảy
if Câu lệnh lựa chọn
implements chỉ rằng một lớp triển khai từ một giao diện
import Khai báo sử dụng thư viện
instanceof kiểm tra một đối tượng có phải là một thể hiện của lớp hay không
interface sử dụng để khai báo giao diện
long kiểu số nguyên
native Khai báo phương thức được viết bằng ngông ngữ biên dịch C++
new tạo một đối tượng mới
null một đối tượng không tồn tại
package Dùng để khai báo một gói
private đặc tả truy xuất
protected đặc tả truy xuất
public đặc tả truy xuất
return Quay từ phương thức về chỗ gọi nó
short kiểu số nguyên
static Dùng để khai báo biến, thuộc tính tĩnh
Super Truy xuất đến lớp cha
switch lệnh lựa chọn
synchronized một phương thức độc quyền truy xuất trên một đối tượng
this Ám chỉ chính lớp đó
throw Ném ra ngoại lệ
throws Khai báo phương thức ném ra ngoại lệ
true Giá trị logic
try sử dụng để bắt ngoại lệ
void Dùng để khai báo một phương thức không trả về giá trị
While Dùng trong cấu trúc lặp
Định danh (tên)
Tên dùng để xác định duy nhất một đại lượng trong chương trình. Trong java tên được đặt theo quy tắc sau:
- Không trùng với từ khoá
- Không bắt đầu bằng một số, tên phải bắt đầu bằng kí tự hoặc bắt đầu bằng kí $,_
- Không chứa dấu cách, các kí tự toán học như +, -, *,/, %..
- Không trùng với một định danh khác trong cùng một phạm vi
Chú ý:
- Tên nên đặt sao cho có thể mô tả được đối tượng trong thực tế
- Giống như C/C++, java có phân biệt chữ hoa chữ thường
- Trong java ta có thể đặt tên với độ dài tuỳ ý
- Ta có thể sử dụng các kí tự tiếng việt để đặt tên
C#
abstract default foreach object sizeof unsafe
as delegate goto operator stackalloc ushort
base do if out static using
bool double implicit override string virtual
break else in params struct volatile
byte enum int private switch void
case event interface protected this while
catch explicit internal public throw
char extern is readonly true
checked false lock ref try
class finally long return typeof
const fixed namespace sbyte uint
continue float new sealed ulong
decimal for null short unchecked
Hàm trùng
tên
#include
int divide (int a, int b)
{
return (a/b);
}
using System;
public class program
{
public int divide (int a, int b)
{
public class OverloadingOrder
{
static void print(String s, int i)
{
System.out.println( "String: " + s +",
int: " + i);
float divide (float a, float b)
{
return (a/b);
}
int main ()
{
int x=5,y=2;
float n=5.0,m=2.0;
cout << divide (x,y);
//gọi hàm divide (int a, int b)
cout << "\n";
cout << divide (n,m);
//gọi hàm divide (float a, float b)
return 0;
}
C++ cho phép đặt tên các hàm trùng
nhau. Nó có thể có các tham số khác
nhau, kiểu dữ liệu của các tham số
khác nhau, thậm chí kiểu trả về khác
nhau, trong thân hàm quá tải có thể
có nội dung khác nhau.
return (a/b);
}
public float divide(float a, float b)
{
return (a / b);
}
public int x;
public float y;
}
public class test
{
public static void Main()
{
program a = new program(),
b = new program();
a.x = 5;
b.x = 8;
Console.WriteLine("{0}",a.divide(a.x,
b.x));
a.y = 5;
b.y = 8;
Console.WriteLine("{0}",a.divide(a.y,
b.y));
Console.Read();
}
}
}
static void print(int i, String s)
{
System.out.println( "int: " + i + ",
String: " + s);
}
public static void main(String[] args)
{
print("String first", 11);
print(99, "Int first");
}
}
Nhận xét:
C# là ngôn ngữ ít từ khóa. C# là ngôn ngữ sử dụng giới hạn những từ khóa. Phần lớn các từ khóa được sử
dụng để mô tả thông tin. Không nhất thiết một ngôn ngữ mạnh là có nhiều từ khóa. Đúng vậy, ít nhất là
trong trường hợp ngôn ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữ này có thể được sử dụng để làm
bất cứ nhiệm vụ nào.
Mã nguồn C# không đòi hỏi phải có tập tin header. Tất cả mã nguồn được viết trong khai báo một lớp.
.NET runtime trong C# thực hiện việc thu gom bộ nhớ tự động. Do điều này nên việc sử dụng con trỏ
trong C# ít quan trọng hơn trong C++. Những con trỏ cũng có thể được sử dụng trong C#, khi đó những
đoạn mã nguồn này sẽ được đánh dấu là không an toàn (unsafe code).
C# cũng từ bỏ ý tưởng đa kế thừa như trong C++. Và sự khác nhau khác là C# đưa thêm thuộc tính vào
trong một lớp giống như trong Visual Basic. Và những thành viên của lớp được gọi duy nhất bằng toán
tử “.” khác với C++ có nhiều cách gọi trong các tình huống khác nhau.
Java là một ngôn ngữ mạnh, giống như C++ và C# được phát triển dựa trên C. Điểm giống nhau C# và
Java là cả hai cùng biên dịch ra mã trung gian: C# biên dịch ra MSIL còn Java biên dịch ra bytecode. Sau
đó chúng được thực hiện bằng cách thông dịch hoặc biên dịch just-in-time trong từng máy ảo tương
ứng. Tuy nhiên, trong ngôn ngữ C# nhiều hỗ trợ được đưa ra để biên dịch mã ngôn ngữ trung gian sang
mã máy. C# chứa nhiều kiểu dữ liệu cơ bản hơn Java và cũng cho phép nhiều sự mở rộng với kiểu dữ liệu
giá trị. Ví dụ, ngôn ngữ C# hỗ trợ kiểu liệt kệ (enumerator), kiểu này được giới hạn đến một tập hằng
được định nghĩa trước, và kiểu dữ liệu cấu trúc đây là kiểu dữ liệu giá trị do người dùng định nghĩa.
Tương tự như Java, C# cũng từ bỏ tính đa kế thừa trong một lớp, tuy nhiên mô hình kế thừa đơn này được
mở rộng bởi tính đa kế thừa nhiều giao diện.
File đính kèm:
Đề tài Điểm giống và khác nhau giữa C++, C# và Java - Lưu Văn Diệp.pdf

