Blog

Sự khác biệt giữa Groovy và Java – Viblo

hktc.info xin giới thiệu bài viết

groovy – một ngôn ngữ lập trình động chạy trên máy ảo java, với các tính năng tương tự như python hay ruby. Nó hỗ trợ 99% cú pháp java, vì vậy bạn có thể dán mã java để chạy trên groovy rất dễ dàng và thân thiện.

Đã sử dụng groovy từ năm 2013, khi google io thông báo rằng studio Android sử dụng các bản dựng lớp và tập lệnh Groovy. Nhưng cho đến bây giờ, tôi vẫn chưa có cơ hội sử dụng groovy như một ngôn ngữ thay thế trong các dự án thực tế. Đối với tôi, tất cả vẫn là về việc định cấu hình các tập lệnh xây dựng trong đường dẫn gradle hoặc jenkins. Vì vậy, kết hợp mọi thứ tôi đã học được với một số kinh nghiệm của bản thân, tôi rất muốn nhận được phản hồi từ bạn nếu có bất kỳ điều gì không ổn. tri ân! !

Mọi nhà phát triển java thường vẫn cần nhập gói mỗi khi một lớp như java.io.file được sử dụng. Nhưng điều này không cần thiết trong Groovy, các gói sau được nhập theo mặc định.

Giả sử mã của chúng tôi có 2 phương thức quá tải như hình bên dưới. Biên dịch và chạy cho java và groovy -> sẽ cho 2 kết quả khác nhau.

  • Kết quả java sẽ là 2.
  • Kết quả bình thường là 1.
  • Đối với java, phương thức sẽ được chọn lúc biên dịch theo kiểu dữ liệu được khai báo như một đối tượng trong ví trên

    Khi sử dụng Groovy, phương thức sẽ được chọn trong thời gian chạy, một lần nữa dựa trên kiểu dữ liệu đã khai báo. Nhưng trong thời gian chạy, o bây giờ là một đối tượng chuỗi. Vì vậy, 1 là kết quả của groovy ==> Đây được gọi là công văn thời gian chạy hoặc đa phương thức trong groovy.

    Trong java, việc khởi tạo mảng có thể được thực hiện như sau:

    Nhưng nó không được phép trong groovy. Vì cặp {} chỉ dùng để đóng. Thay vào đó, nó sẽ sử dụng như sau:

    Trong Java:

    Trong Groovy, không có khái niệm về công cụ sửa đổi truy cập trường.

    Điều đó có nghĩa là, ngay cả khi bạn thêm/xóa một công cụ sửa đổi trường như java, nó sẽ không ảnh hưởng đến khả năng truy cập của trường đó.

    Để thực hiện việc này, bạn cần sử dụng chú thích @packagescope, chú thích này kết hợp bộ thu và bộ thiết lập của trường (bộ thu và bộ thiết lập được tạo hoàn toàn trong Groovy)

    arm (quản lý tài nguyên tự động) được hỗ trợ kể từ java 7, trong khi groovy thì không.Thay vào đó, Groovy cung cấp các cách khác nhau để dựa vào các lần đóng có giá trị như nhau và các lần đóng mang lại sự đơn giản hơn

    Tạo các lớp bên trong ẩn danh và các lớp lồng nhau vẫn tuân theo các quy tắc java. Tuy nhiên, trong Groovy, cú pháp đơn giản hơn, với một số công cụ sửa đổi cú pháp, không có công cụ sửa đổi truy cập và các biến cục bộ không cần phải là giá trị cuối cùng.

    lớp bên trong tĩnh

    lớp bên trong ẩn danh

    Tạo một thể hiện của một lớp bên trong không tĩnh

    Cú pháp y.new x(); không được hỗ trợ trong Groovy. Thay vào đó, chúng ta phải viết x(y) mới như thế này:

    Java 8 có lambdas và groovy có bao đóng.

    Đây là cách Java 8 sử dụng lambdas:

    và hấp dẫn

    Để nối chuỗi trong java, chúng ta thường sử dụng toán tử + để nối chuỗi, như sau:

    Nhưng trong Groovy, nó đơn giản và dễ dàng hơn.

    Và cặp ký tự chuỗi trích dẫn kép ${} ở trên được gọi là giá trị gstring.

    Trong Groovy, dấu nháy đơn được sử dụng cho chuỗi, dấu ngoặc kép được sử dụng cho chuỗi hoặc gstrings (nếu bạn chèn gstring ${} )

    Kiểu dữ liệu char chỉ được hiểu nếu biến được khai báo rõ ràng là char

    truyền ký tự

    Groovy hỗ trợ 2 kiểu chuyển đổi, từ string sang char ->. Đúc cũng tạo nên sự khác biệt.

    Groovy sử dụng các đối tượng cho mọi thứ, với các kiểu dữ liệu nguyên thủy được tự động đưa vào các lớp trình bao bọc thích hợp.

    bảng đóng gói ban đầu

    Xem ví dụ bên dưới để biết sự khác biệt giữa việc sử dụng java và groovy khi chạy.

    Trong java, so sánh == được hiểu là so sánh 2 giá trị nguyên thủy hoặc đối tượng xác định.

    Trong Groovy, == được hiểu là a.compareto(b)==0 nếu ab có thể so sánh được, nếu không thì là a.equals(b)

    Bảng so sánh chuyển đổi kiểu dữ liệu Java và Groovy.

    Cảm ơn bạn đã xem qua bài viết của hktc.info

    Rate this post

    Trả lời

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *