Các điểm khác nhau về syntax giữa java và scala (p1)
Bài viết liên quan
- Cơ chế đăng nhập ứng dụng web, app bằng tài khoản google+/gmail code ví dụ bằng JSP-Servlet/SpringMVC/SpringBoot
- Cơ chế đăng nhập ứng dụng web, app bằng tài khoản facebook + code ví dụ
- In ra các hoán vị của 1 mảng
- So sánh kích thước file APK khi build bằng Flutter, React Native, Kotlin và Java
- Understanding References in Java
Chào các bạn mình là một developer hiện đang làm về ngôn ngữ java, một câu nói thường thấy khi các bạn còn ngồi trên ghế nhà trường nghe bọn bạn đồn thổi nói là: "Lúc học thì thế thôi, học thì nhiều ngôn ngữ, nhưng lúc đi làm người ta (các công ty) chỉ cần biết sâu một ngôn ngữ thôi..bla bla". Mình cũng đã ám ảnh câu nói đó khá lâu cho đến khi đi làm thấy rằng nhiều người pro, họ không chỉ biết chuyên sau duy nhất 1 ngôn ngữ đâu mà còn biết thêm (code được, làm được) với 1 or 2 ngôn ngữ nữa. Cảm thấy mình hơi nhỏ bé nên cũng tự nhủ phải học thêm 1 ngôn ngữ nữa và mình đã chọn scala là ngôn ngữ thứ 2
Tìm đọc sách là suy nghĩ đầu tiên mình nghĩ tới, sau quá trình search google thì tìm được 1 quyển ưng ý về scala:
http://ccfit.nsu.ru/~den/Scala/programming_in_scala_2nd.pdf
Hiện tại mình chưa đọc được vài chương đầu thấy có nhiều điểm khác nhau cơ bản với java.
1.Contructor
Với scala contructor có thể khái báo ngay khi khai báo class
vd:
class ChecksumAccumulator (name: String, age: int){
// class definition goes here
}
java thì cách khai báo:
vd:
class ChecksumAccumulator {
private String name;
private int age;
/**
* @param name
* @param age
*/
public ChecksumAccumulator(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
các bạn thấy sự khác nhau về mặt cú pháp là rõ rệt khi muốn khởi tạo constructor, với scala cú pháp ngắn gọn hơn rất nhiều phải ko ạ
2.Kiểu trả về methods
Trong scala một function không trả về giá trị gi thì kiểu trả về là: unit
còn trong java là: void
3.Cách run một application
java
public class Application {
public static void main(String[] args) {
System.out.println("run application");
}
}
-------------------------------
scala
object Application {
def main(args: Array[String]) {
println("run application")
}
}
4.Kiểu khai báo biến
Trong scala kiểu dữ liểu tất cả các biến đều khai báo bởi 2 từ khóa var và val var dùng cho khai báo biến bình thường
var i = 0;
val khi bạn định nghĩa một biến với kiểu là val thì biến đó giống như khai báo với từ khóa final trong java
val greetStrings = new Array[String](3)
5.Cách khai báo vòng lặp for
Trong các vong lặp như: while, do while, for
thì điểm khác nhau nhiều nhất mình thấy là vòng lặp for
, ở đây mình sẽ nêu ra 2 cách khai báo khác nhau của vòng lặp for
Cách1:
scala
for (arg <- args) {
println(arg)
}
------------------
java
for (String str : args) {
System.out.println(str);
}
Cách2:
scala
val greetStrings = new Array[String](3)
for (i <- 0 to 2) {
}
------------------------
java
for (int i = 0 ; i < 3 ; i++){
}
đó là nhưng cách khai báo tương đồng nhưng lại khác nhau trong hai ngôn ngữ như vậy
6.Các operation là method
chúng ta sét biểu thức toán đơn giản như sau:
1 + 2
Trong scala tất cả các toán tử đều là method của các đối tượng, trong trường hợp này operator+
được hiểu là một method của object 1
, khi 1 + 2
thì ta hiểu object Int 1
gọi method +
rồi truyền param vào là 2
như thế này: (1).+(2)
7.Kết luận
Phần một mình xin dừng tại đây để dành phần sau không hết cái chia sẻ. =)) Cảm ơn các bạn đã đọc bài chia sẻ của mình, hạn gặp lại nhé.