KeihakuOh / Leetcode_answers

The workspace for leetcode
0 stars 0 forks source link

メモ #3

Open KeihakuOh opened 2 hours ago

KeihakuOh commented 2 hours ago

静的型と動的型とは

静的型:変数の型がコンパイル時に決定されるため、一度変数に型が割り当てられると、その型を変更することができません。

例:Java、ts

// ts
let count: number = 5;  // number型として宣言
count = "five";         // エラー: string型の値をnumber型に代入できない

動的型:変数の型が実行時に決定されるため、型を意識せずに自由に変数に値を代入することができます。

例:JavaScript、python

//JavaScript:
let variable = 10;  // number型として初期化
variable = "Hello"; // 実行時にstring型に変わる

//python
number = 5    # int型として扱われる
number = "5"  # 実行時にstr型に変わる
KeihakuOh commented 2 hours ago

GoやPythonのような言語では、リストやノードの構造体(ListNodeなど)は参照渡しで処理されます。

リストやノードが関数に渡される際、そのオブジェクト自体ではなく、そのオブジェクトへの参照(メモリアドレス)が渡されることを意味します。その結果、関数内でオブジェクトに変更を加えると、元のオブジェクトにもその変更が反映されます。

list A = list B のように代入すると、A と B は同じリストオブジェクトを指します。つまり、list A や list B のどちらかを変更すると、両方に影響が及びます。これは、リストが参照型のオブジェクトであるためです。