亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

題目的答案錯的吧,文件名明明有效

如果判定時使用?

if ( index!=-1 && index!=0 && prefix==".java" ) {

System.out.println("Java文件名正確");

} else {

System.out.println("Java文件名無效");

}

這樣就不對,因為前面說過兩個".java"在內存中是兩個不同的單元只是內容相同,所以會跳到else上,文件名無效


但真正正確的應該用

if ( index!=-1 && index!=0 && prefix.equals(".java") ) {

System.out.println("Java文件名正確");

} else {

System.out.println("Java文件名無效");

}

這樣跑出來應該文件名是對的,有效的


正在回答

3 回答

https://img1.sycdn.imooc.com//5c80e93a0001b19803860486.jpg

https://img1.sycdn.imooc.com//5c80e93b0001d67807330496.jpg

題目給多了個“a”,所以跟答案相反。

0 回復 有任何疑惑可以回復我~

題目是故意的,就是為了讓我們分清楚比較棧內存和堆內存的區別


0 回復 有任何疑惑可以回復我~

1:==是比較棧內存里面的值,對于基本數據類型,棧區的值就是數據的值

2:equals()是進行堆區里面內容的比較,對于引用數據類型,棧區的值是對象的地址

3:基本數據類型比較用==,引用數據類型比較用equals()方法

4:".java"是字符串String引用數據類型


0 回復 有任何疑惑可以回復我~
#1

慕沐1990658 提問者

equals()才是數據的值吧,我覺得==才是地址吧??
2018-08-19 回復 有任何疑惑可以回復我~
#2

暖_28 回復 慕沐1990658 提問者

你說得對,但是樓上說的也不錯,它是區分了一下基本類型和引用類型.如果不是new 的話指定一個屬性值得話,會現在內存中查找有沒有這個值。比如說int a=1;int b=1;這樣用==他們也是true.如果沒有才會創建一個新的地址.如果new 了的話,就是無論有沒有直接創建新的地址存值.
2018-08-20 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

題目的答案錯的吧,文件名明明有效

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號