2016-10-17 21 views
7

Tôi đã thấy các so sánh khác nhau mà bạn có thể thực hiện với phương pháp charAt().Java String/Char charAt() So sánh

Tuy nhiên, tôi thực sự không thể hiểu một vài trong số chúng.

String str = "asdf"; 
str.charAt(0) == '-'; // What does it mean when it's equal to '-'? 


char c = '3'; 
if (c < '9') // How are char variables compared with the `<` operator? 

Mọi trợ giúp sẽ được đánh giá cao.

+0

_ "? Có nghĩa là gì khi nó bằng '-'" _ không phải là một đầu mối, chỉ có createor đó code có thể biết ... –

+2

_ "Biến char như thế nào so với toán tử' <'?" _ nguyên thủy 'char' là kiểu _numeric_ và có thể so sánh với'> 'hoặc' <' –

Trả lời

13

// Điều đó có nghĩa là gì khi nó bằng '-'?

Mọi chữ cái và ký hiệu đều là ký tự. Bạn có thể nhìn vào ký tự đầu tiên của một chuỗi và kiểm tra một trận đấu.

Trong trường hợp này, bạn nhận được ký tự đầu tiên và xem đó có phải là ký tự dấu trừ hay không. Dấu trừ này là (char) 45 xem bên dưới

// Biến char so với toán tử < như thế nào?

Trong Java, tất cả ký tự thực tế là số không dấu 16 bit. Mỗi ký tự có một số dựa trên nó unicode. ví dụ. '9' là ký tự (char) 57 So sánh này là đúng đối với bất kỳ ký tự nào nhỏ hơn mã cho 9 ví dụ: không gian.

enter image description here

Ký tự đầu tiên của chuỗi của bạn là 'a' đó là (char) 97 nên (char) 97 < (char) 57 là sai.

+0

Đây là cơ sở cho ký tự mã hóa. https://en.wikipedia.org/wiki/Character_encoding Định nghĩa được tham chiếu ở trên là sử dụng mã hóa ký tự ASCII. – Andrew

0

str.charAt(0) == '-'; trả về boolean, trong trường hợp này là false.

if (c < '9') so sánh giá trị ascii của '3' với giá trị ascii là '9' và trả về giá trị boolean một lần nữa.

0
str.charAt(0) == '-' 

Câu lệnh này trả về true nếu ký tự tại điểm 0 là '-' và sai khác.

if (c < '9') 

Điều này so sánh giá trị ascii của c với giá trị ascii của '9' trong trường hợp này là 99 và 57 tương ứng.

0

Ký tự là kiểu nguyên thủy trong Java, có nghĩa là nó không phải là một đối tượng phức tạp. Kết quả là, mỗi lần bạn so sánh giữa chars, bạn sẽ trực tiếp so sánh giá trị của chúng.

Các ký tự Java được xác định theo thông số kỹ thuật unicode gốc, cung cấp cho mỗi ký tự một giá trị 16 bit. Đây là những giá trị mà Java đang so sánh khi bạn so sánh một số thứ như c>'3' hoặc str.charAt(0) == '-'.

1
String str = "asdf"; 
String output = " "; 
if(str.charAt(0) == '-'){ 
    // What does it mean when it's equal to '-'? 
    output= "- exists in the first index of the String"; 
} 
else { 
    output="- doesn't exists in the first index of the String"; 
} 
System.out.println(output); 

Kiểm tra xem char đó có tồn tại trong chỉ mục 0 hay không, đó là so sánh.

Đối với if (c < '9'), giá trị ascii của c và 9 được so sánh. Tôi không biết tại sao bạn sẽ kiểm tra xem ascii tương đương với c là nhỏ hơn ascii tương đương với '9' mặc dù.

Nếu bạn muốn nhận được giá trị ascii của bất kỳ char, sau đó bạn có thể:

char character = 'c'; 
int ascii = character; 
System.out.println(ascii);