Kotlin中との違いを詳しく比較します。
前言
多くの学生がKotlinを使い始めました。Java Null PointerExceptionに対する管理があると知っていますが、Kotlinでは?と全部Null PointerExceptionと関係がありますが、彼らの違いは何ですか?なぜ他の人が開発したプロジェクトに多くの「?」が現れましたか?私は読みましたが、疑問符のような顔をしています。
わからないなら百度に聞いてください。確かに違いを説明する人がいます。例えば:
これは入力です。と百度の最初の答えを検索して、確かにこの人が言ったのは間違いないです。しかし、KT(Ktlin)に触れたばかりの初心者には、この二つの意味を徹底的に理解するために中国語8級が必要だと思います。
まず二つの概念を述べます。"?"変数名に追加すると、システムはどのような状況でも空のポインターに異常がありません。 "!"変数名に加えて、オブジェクトがnullであれば、システムに異常が発生します。
Javaで異常が発生して、KTに転化して、コンパイラは当然彼に異常を投げ出させます。Null PointerExceptionもそうです。
だから文脈に合わせて見られます。加えて、Javaコードとは何の違いがあるのではないかと思いますが、このnullのところは勝手に異常が出ます。ですから、ほとんどの場合に使いますか?nullを検出しにきました。輪が来ません。登場ですある対象に対して空欄でない判断が必要で、異常がある場合のみ使用します。
これから重点的に説明しましょうか?どう使いますか
宣言対象の時に、クラス名の後に付いて、このクラスがnullであることが許されると表します。
オブジェクトを呼び出した時、オブジェクトの後ろに付いていくと、nullプログラムだと見て見ぬふりをするという意味です。
下記のコードのように:
KTの文法はとてもよくて、パラメーターを定義しても書きます。
そうです。コンパイラの提案で追加しました。この行のコードを実行します。roomListがnullの場合、必ず異常を報告します。だから外では、レイヤifをセットしないといけないのですか?null)このJavaのよくある語句は異常を避けることができますか?
もちろんKotlinはプログラムにこのようなくどいコードが現れないので、対象Aを提供しました。オブジェクトBの表現は、Javaの条件式をキャンセルしますか?表式1:表式2という3元表現。
?対象A値がnullの場合、後の対象Bに戻るという意味です。
これはKotlinの中についてですか?と違いの文章はここまで紹介しました。もっと関連のあるKtlinの中で?と違いの内容は私達の以前の文章を検索してください。または下の関連記事を引き続きご覧ください。これからもよろしくお願いします。
多くの学生がKotlinを使い始めました。Java Null PointerExceptionに対する管理があると知っていますが、Kotlinでは?と全部Null PointerExceptionと関係がありますが、彼らの違いは何ですか?なぜ他の人が開発したプロジェクトに多くの「?」が現れましたか?私は読みましたが、疑問符のような顔をしています。
わからないなら百度に聞いてください。確かに違いを説明する人がいます。例えば:
これは入力です。と百度の最初の答えを検索して、確かにこの人が言ったのは間違いないです。しかし、KT(Ktlin)に触れたばかりの初心者には、この二つの意味を徹底的に理解するために中国語8級が必要だと思います。
まず二つの概念を述べます。
だから文脈に合わせて見られます。加えて、Javaコードとは何の違いがあるのではないかと思いますが、このnullのところは勝手に異常が出ます。ですから、ほとんどの場合に使いますか?nullを検出しにきました。輪が来ません。登場ですある対象に対して空欄でない判断が必要で、異常がある場合のみ使用します。
これから重点的に説明しましょうか?どう使いますか
宣言対象の時に、クラス名の後に付いて、このクラスがnullであることが許されると表します。
オブジェクトを呼び出した時、オブジェクトの後ろに付いていくと、nullプログラムだと見て見ぬふりをするという意味です。
下記のコードのように:
// ,
var room: Room? = Room()
private fun checkRoom() {
// , room
room = null
// ,
Log.d("TAG", "-->> room name = ${room?.roomName}")
}
? :
// room !!, room null
var room: Room = Room()
private fun checkRoom() {
// null room ,
room = null
// ,
Log.d("TAG", "-->> room name = ${room.roomName}")
}
それで安全な書き方です。Kotlin null safetyの特性を表しています。KTの文法はとてもよくて、パラメーターを定義しても書きます。
val room: Room? = Room() // room, room
val room: Room? = null // , room
val room: Room = Room() // room, room
val room = Room() // , KT
しかし、疑問符を加えると、プログラムは常にNull PointerExceptionの悩みから解放されます。次のコードを見ます。
` val roomList: ArrayList<Room>? = null
if (roomList?.size > 0) {
Log.d("TAG", "-->> 0")
}
`
私達がlist.sizeを判断する時、コンパイラは私達に教えてくれます。size.co mpareTo(0)'which is not allowed on a nullable receiver'roomList?size."大体の意味は、roomListがnullの場合、そのsizeが戻ってくるのはnullですが、nullはintのサイズと比べてはいけないので、コンパイラはroomListと書くことを勧めています。size!!!>0です。そうです。コンパイラの提案で追加しました。この行のコードを実行します。roomListがnullの場合、必ず異常を報告します。だから外では、レイヤifをセットしないといけないのですか?null)このJavaのよくある語句は異常を避けることができますか?
もちろんKotlinはプログラムにこのようなくどいコードが現れないので、対象Aを提供しました。オブジェクトBの表現は、Javaの条件式をキャンセルしますか?表式1:表式2という3元表現。
?対象A値がnullの場合、後の対象Bに戻るという意味です。
`val roomList: ArrayList<Room>? = null
val mySize= roomList?.size ?: 0
締め括りをつけるこれはKotlinの中についてですか?と違いの文章はここまで紹介しました。もっと関連のあるKtlinの中で?と違いの内容は私達の以前の文章を検索してください。または下の関連記事を引き続きご覧ください。これからもよろしくお願いします。