Cần giải thích về phương thức này

Bữa nay tui có google để tìm phương thức có sẵn để kiểm tra một chuỗi chỉ có các ký tự whitespace( ) trong đó. Tui tìm được cái này string.chars().allMatch(Character::isWhitespace) . Mong mọi người giáp đáp giùm tui một số cái khó hiểu:

  • Cái :: nghĩa là gì;
  • Vì sao phải có phương thức chars() vì theo định nghĩa thì:

chars is a String class method in Ruby which is used to return an array of characters in str.
( www.geeksforgeeks.org/ruby-string-chars-method/)

Nghĩa là nó nhận một string xong trả về một string giống như thế ??? Tui thử bỏ chars() đi thì lại không chạy được.
Mong nhận được giải đáp. Xin cảm ơn.

  1. :: là cú pháp, là cú pháp gì thì bạn tự xem lại đặc tả cú pháp ngôn ngữ đó
  2. vì sao phải có .chars() thì học lại môn lập trình hướng đối tượng sẽ rõ

Syntax: str.chars

Parameters: Here, str is the given string

Returns: An array of the characters.

bạn dịch như thế nào ra được câu này trên vậy

5 Likes

Nó được gọi là method reference. Cách viết đó tương đương với:

allMatch(character -> Character.isWhitespace(character))

Practically, khi cậu viết lambda expression trong Java, cậu nên sử dụng method reference hơn là cách viết tương đương kể trên (cậu có thể đọc “Effective Java” bản cập nhập cho Java 9+ để biết thêm chi tiết).

Reference cậu đề cập tới là của Ruby, tớ nghĩ nó không nên được sử dụng như tài liệu refer tới Java (dù về mặt concept, nó giống nhau).
Phương thức chars (Java 9+) là để lấy stream (dòng) các ký tự của xâu đó. Kết quả của String#chars method là IntStream, nhờ có nó cậu mới có method allMatch của stream API.
Tớ nghĩ lý do của nó chỉ để cậu có thể sử dụng Stream API (hay functional programming) thay vì viết for loop cho từng ký tự thôi :smiley:

Hope it helps.

8 Likes

chars này chỉ tạo ra một Stream mà thôi :smiley: Không giống Ruby.

Ruby thì dùng reference (VD &:length) nhiều hơn.

6 Likes

Trước java tui chỉ mới học ngôn ngữ C thôi, và theo C thì một mảng các ký tự là một chuỗi. Có thể java nó khác chăng, tui chưa nghiên cứu về kiểu String nên chắc tui bị nhầm lẫn gì đấy.

1 Like

Object String trỏ tới mảng char[]


Bài cũ nhưng đáng để đọc, có người làm java 5-6 năm cũng không để ý cái này đâu.

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?