Q:

Pass by value. Array

I have two arrays. But when I change second - first change too.
I tried 
.clone()
.copyOf() 
but it didn't work for me.
object MatrixObject {
 var table: Array<Array<Int>>? = null

 fun randOf(n: Int) {
    table= Array(n, { Array(n, { Random().nextInt(100 - 0) + 0 }) })
 }

 var tableF: Array<Array<Int>>? = null
    get() {
        if (field==null)
          factorization()
        return field
    }

 fun factorization() {
        tableF = table!! 
        ...     //here I change elements of tableF
  }

}

I tried
 for(row in 0 until table!!.size)
   tableF!![row] = Arrays.copyOf(table!![row], table!![row].size)

and
 for(row in 0 until table!!.size)
   tableF!![row] = table!![row].clone() // and copyOf()

but it still doesn't work.

A:

I found the solution.I initialized the array.
        tableF= Array(table!!.size, { Array(table!!.size, {0}) })
        for(row in 0 until table!!.size)
            tableF!![row] = table!![row].clone()

