-
21-09-2011, 03:05 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
So sánh C# với C++ và Java. Giống và khác như thế nào?
các bạn cho mình hỏi: những phương thức và lớp trong c# hoạt động giống và khác với c++ và java ở chỗ nào????
cảm ơn các bạn!!!!!!!!View more random threads:
- so sanh == va equal trong java?
- Chạy chương trình ở Server và Client trên cùng một máy ?
- So sánh C# với C++ và Java. Giống và khác như thế nào?
- Lỗi NetBeans 8.0.2
- Chat bằng giao diện giữa 2 client, không hiện nội dung lên giao diện được?
- làm sao để dãy số in trên cùng 1 dòng?
- [Urgent] Java Draw and design pattern, không hiển thị được thông tin lên table.
- Gọi system command từ java console?
- Mình muốn hiện thị số 001 thay vì là số 1 thì làm thế nào?
- ép kiểu int thành String trong Java có được k ?
-
21-09-2011, 03:14 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
3 thằng này về kiến trúc và môi trường chạy đều khác nhau hoàn toàn. Bạn hỏi rộng như thế thì sao mà trả lời được.
-
22-09-2011, 07:25 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cái này mình tìm được bên IT forum bạn xem có giúp ích được j không ? Có lẽ là khá đầy đủ (và có cái dư ý ! [IMG]images/smilies/biggrin.png[/IMG])
[meoconlongvang] : Mình nghĩ nó không đến mức hoàn toàn đâu ! Chẳng qua là bạn có tim giúp hoặc chia sẻ cho những người mới như mình không thôi !
Sự khác nhau giữa C# và C++
Thừa kế: Trong C++, class và struct hầu như giống nhau, ngược lại trong C#, chúng khá khác nhau. Lớp C# có thể hiện thực/thừa kế (implement) nhiều interface, nhưng chỉ được thừa kế từ chỉ 1 lớp cơ sở. Hơn nữa, struct C# không hỗ trợ thừa kế, và không hỗ trợ constructor mặc định
Mảng (Array): Trong C++ mảng chính là 1 con trỏ (pointer). Trong C#, mảng là đối tượng (object),có thuộc tính và phương thức. Ví dụ, số phần tử của mảng có thể lấy thông qua thuộc tính Length. Mảng C# còn kiểm tra chỉ số thứ tự khi truy xuất phần tử. Cú pháp khai báo mảng trong C# và C++ cũng khác: token "[] " theo sau khai báo kiểu của mảng chứ không phải đứng sau tên biến như trong C++
Boolean: Trong C++, kiểu bool thực ra là số integer. Trong C#, không có sự tự chuyển đổi qua lại giữa bool và các kiểu khác
Kiểu số nguyên long: Trong C#, kiểu long có độ dài 64 bit, trong C++ là 32 bit.
Kiểu số nguyên int: Trong C#, nó chắc chắn có độ dài 32 bit, trong VC++ là 32 bit, trong các trình biên dịch C++ khác, độ dài của nó có thể là 16 bit.
Truyền tham số: Trong C++, mọi biến được truyền bằng trị, nếu không phải là con trỏ hoặc biến tham khảo. Trong C#, đối tượng (một thực thể của class) được truyền tham khảo (truyền tham biến), struct được truyền tham trị, nếu không khai báo "ref" hoặc "out"
Phát biểu switch: Không giống C++, C# hỗ trợ việc nhảy từ nhãn này qua nhãn khác qua phát biểu goto
Delegate: Delegate C# giống như con trỏ hàm của C++, nhưng an toàn và bảo mật.
Phương thức trong lớp cha: C# hỗ trợ từ khóa "base" cho việc gọi lại các phương thức của lớp cha. Hàm nạp chồng (overload) được khai báo 1 cách tường minh bằng từ khóa "override"
Che khuất phương thức: Trong C++ phương thức trong lớp con chắc chắn che khuất phương thức trong lớp cha nếu chúng cùng prototype. Trong C#, bạn phải dùng từ khóa "new" trước phương thức hay thuộc tính bạn muốn che phủ
Chỉ thị tiền biên dịch: C# chỉ cho đặt dẫn hướng tiền biên dịch (là các symbol) trong configuration của project, mà không có các file header (.h)
Exception: C# cung cấp từ khóa "finally" cho đoạn code try {} catch để bắt Exception mà cần thêm những tác vụ bảo đảm an toàn
Toán tử: C# hỗ trợ một số toán tử mở rộng như: "is", "typeof".
Từ khóa "extern": Trong C++, "extern" dùng để khai báo kiểu/biến được định nghĩa trong file .obj khác. Trong C#, extern dùng để tạo ra một bí danh (alias) khi sử dụng version khác của 1 assembly.
Từ khóa "static": Trong C++, static dùng trong khai báo phương thức/thuộc tính/biến trong class, hàm. Trong C#, chỉ dùng đối với các thành viên của class, không có trong hàm
Hàm main: Trong C# hàm Main (M viết hoa) luôn khai báo là static
Con trỏ: Được phép trong C#, nhưng chỉ trong mode unsafe
Sự khác nhau ở các toán tử.
Chuỗi (string): Trong C++, string chỉ đơn giản là mảng ký tự. Trong C# string là 1 đối tượng (object) có hỗ trợ các phương thức tìm kiếm
Từ khóa foreach: Trong C#, cho phép duyệt qua các phần tử của mảng hoặc tập hợp
Tầm vực Toàn cục: Trong C#, biến phương thức không có tầm vực toàn cục, chúng bắt buộc phải thuộc 1 class/struct nào đó
Biến cục bộ: Trong C#, biến cục bộ có thể dùng trước khi khởi tạo giá trị
Quản lý bộ nhớ: C++ không có cơ chế dọn rác, bộ nhớ không được trả lại hệ thống cho đến khi process kết thúc hoặc tự giải phóng bằng phát biểu delete/free. C# làm một cách tự động
Hàm khởi tạo: Tương tự như C++, nếu bạn không viết hàm khởi tạo nào trong 1 lớp của C# thì 1 hàm khởi tạo mặc định tự động tạo ra (trong assembly) cho bạn. Hàm khởi tạo mặc định khởi tạo những giá trị mặc định cho các biến thành viên
Giá trị mặc định cho tham số hàm/phương thức: C# không có, bạn phải dùng cách nạp chồng phương thức để thực hiện
Kiểu generic: Khai báo như là một tham số của class hay method, tương tự như template trong C++
Từ khóa "as": toán tử chuyển đổi kiểu, sẽ ném một exception nếu việc chuyển đổi không thực hiện được. Giống với static_cast trong C++, nhưng khác với dynamic_cast vì dynamic_cast không thực hiện kiểm tra sự tương thích kiểu nên không ném exception nào nếu như thực sự có lỗi
Còn đây là C# và javatepj đính kèm nhé !
-
14-03-2012, 12:30 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
[IMG]images/smilies/biggrin.png[/IMG] Mình thấy độ khó của 3 ngôn ngữ này khác nhau rất rõ: thứ tứ theo độ khó giảm dần là:
1. C++
2. Java
3. C#
-
14-03-2012, 01:22 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình thì nghĩ java khó hơn C++ rất nhiều
-
15-03-2012, 06:08 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi hoanglamth1
Còn nếu ai chuyên về cái gì hơn thì đương nhiên thấy cái đó dễ hơn [IMG]images/smilies/biggrin.png[/IMG]
-
15-03-2012, 06:36 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi hoanglamth1
-
16-03-2012, 03:07 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi Here i am
-
16-03-2012, 06:00 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
[IMG]images/smilies/1.gif[/IMG] Mọi người vô đây đọc để thêm thông tin nè. Topic này vui đó.
en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B
hix. Forum nè tranh luận cũng khá sôi nổi nè:
forums.overclockers.com.au/showthread.php?t=83641&page=2
-
16-03-2012, 06:02 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Khó hơn hay dễ hơn có thể có nhiều tiêu chí nhưng theo mình thì quan trọng nhất là ở những thứ :
- Học mất bao lâu
- Code cái nào ngắn hơn
- Debug cái nào dễ hơn, môi trường lập trình cái nào code sướng nhất
Xét trên cùng 1 ứng dụng mà cả 3 đều hỗ trợ dễ dàng (không tính những cái đặc thù, điểm mạnh riêng) ví dụ làm 1 cái notepad nhái [IMG]images/smilies/biggrin.png[/IMG] thì từ khi bắt đầu học ngôn ngữ cái nào sẽ đạt kết quả nhanh nhất, code mất ít nhất, môi trường soạn thảo ngon lành và hỗ trợ debug tốt nhất.
còn nếu so sánh những đặc thù thì mỗi chú 1 vẻ, lắm ông sẽ cãi nhau là đúng rồi
Theo mình thì vẫn c# nhất, java rồi c++. (theo tiêu chí độ dễ)
Tuy nhiên thêm 1 số tiêu chí (không lại cho là tớ ăn gian) :
- tốc độ, độ can thiệp thì c++, c# rồi java
- Đa nền tảng thì java, c++, c#
thế là các ngôn ngữ đều xuất hiện ở cả đầu, cuối và giữa nhé
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...